From: Joonsoo Kim <iamjoonsoo.kim@lge.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Mel Gorman <mgorman@suse.de>, Vlastimil Babka <vbabka@suse.cz>, Joonsoo Kim <js1304@gmail.com>, Rik van Riel <riel@redhat.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Joonsoo Kim <iamjoonsoo.kim@lge.com> Subject: [PATCH v2 3/5] mm/compaction: change the timing to check to drop the spinlock Date: Fri, 14 Feb 2014 15:54:01 +0900 [thread overview] Message-ID: <1392360843-22261-4-git-send-email-iamjoonsoo.kim@lge.com> (raw) In-Reply-To: <1392360843-22261-1-git-send-email-iamjoonsoo.kim@lge.com> It is odd to drop the spinlock when we scan (SWAP_CLUSTER_MAX - 1) th pfn page. This may results in below situation while isolating migratepage. 1. try isolate 0x0 ~ 0x200 pfn pages. 2. When low_pfn is 0x1ff, ((low_pfn+1) % SWAP_CLUSTER_MAX) == 0, so drop the spinlock. 3. Then, to complete isolating, retry to aquire the lock. I think that it is better to use SWAP_CLUSTER_MAX th pfn for checking the criteria about dropping the lock. This has no harm 0x0 pfn, because, at this time, locked variable would be false. Acked-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> diff --git a/mm/compaction.c b/mm/compaction.c index 0d821a2..b1ba297 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -481,7 +481,7 @@ isolate_migratepages_range(struct zone *zone, struct compact_control *cc, cond_resched(); for (; low_pfn < end_pfn; low_pfn++) { /* give a chance to irqs before checking need_resched() */ - if (locked && !((low_pfn+1) % SWAP_CLUSTER_MAX)) { + if (locked && !(low_pfn % SWAP_CLUSTER_MAX)) { if (should_release_lock(&zone->lru_lock)) { spin_unlock_irqrestore(&zone->lru_lock, flags); locked = false; -- 1.7.9.5
WARNING: multiple messages have this Message-ID (diff)
From: Joonsoo Kim <iamjoonsoo.kim@lge.com> To: Andrew Morton <akpm@linux-foundation.org> Cc: Mel Gorman <mgorman@suse.de>, Vlastimil Babka <vbabka@suse.cz>, Joonsoo Kim <js1304@gmail.com>, Rik van Riel <riel@redhat.com>, linux-mm@kvack.org, linux-kernel@vger.kernel.org, Joonsoo Kim <iamjoonsoo.kim@lge.com> Subject: [PATCH v2 3/5] mm/compaction: change the timing to check to drop the spinlock Date: Fri, 14 Feb 2014 15:54:01 +0900 [thread overview] Message-ID: <1392360843-22261-4-git-send-email-iamjoonsoo.kim@lge.com> (raw) In-Reply-To: <1392360843-22261-1-git-send-email-iamjoonsoo.kim@lge.com> It is odd to drop the spinlock when we scan (SWAP_CLUSTER_MAX - 1) th pfn page. This may results in below situation while isolating migratepage. 1. try isolate 0x0 ~ 0x200 pfn pages. 2. When low_pfn is 0x1ff, ((low_pfn+1) % SWAP_CLUSTER_MAX) == 0, so drop the spinlock. 3. Then, to complete isolating, retry to aquire the lock. I think that it is better to use SWAP_CLUSTER_MAX th pfn for checking the criteria about dropping the lock. This has no harm 0x0 pfn, because, at this time, locked variable would be false. Acked-by: Vlastimil Babka <vbabka@suse.cz> Signed-off-by: Joonsoo Kim <iamjoonsoo.kim@lge.com> diff --git a/mm/compaction.c b/mm/compaction.c index 0d821a2..b1ba297 100644 --- a/mm/compaction.c +++ b/mm/compaction.c @@ -481,7 +481,7 @@ isolate_migratepages_range(struct zone *zone, struct compact_control *cc, cond_resched(); for (; low_pfn < end_pfn; low_pfn++) { /* give a chance to irqs before checking need_resched() */ - if (locked && !((low_pfn+1) % SWAP_CLUSTER_MAX)) { + if (locked && !(low_pfn % SWAP_CLUSTER_MAX)) { if (should_release_lock(&zone->lru_lock)) { spin_unlock_irqrestore(&zone->lru_lock, flags); locked = false; -- 1.7.9.5 -- To unsubscribe, send a message with 'unsubscribe linux-mm' in the body to majordomo@kvack.org. For more info on Linux MM, see: http://www.linux-mm.org/ . Don't email: <a href=mailto:"dont@kvack.org"> email@kvack.org </a>
next prev parent reply other threads:[~2014-02-14 6:55 UTC|newest] Thread overview: 20+ messages / expand[flat|nested] mbox.gz Atom feed top 2014-02-14 6:53 [PATCH v2 0/5] compaction related commits Joonsoo Kim 2014-02-14 6:53 ` Joonsoo Kim 2014-02-14 6:53 ` [PATCH v2 1/5] mm/compaction: disallow high-order page for migration target Joonsoo Kim 2014-02-14 6:53 ` Joonsoo Kim 2014-02-14 6:54 ` [PATCH v2 2/5] mm/compaction: do not call suitable_migration_target() on every page Joonsoo Kim 2014-02-14 6:54 ` Joonsoo Kim 2014-02-20 16:49 ` Vlastimil Babka 2014-02-20 16:49 ` Vlastimil Babka 2014-02-14 6:54 ` Joonsoo Kim [this message] 2014-02-14 6:54 ` [PATCH v2 3/5] mm/compaction: change the timing to check to drop the spinlock Joonsoo Kim 2014-02-14 6:54 ` [PATCH v2 4/5] mm/compaction: check pageblock suitability once per pageblock Joonsoo Kim 2014-02-14 6:54 ` Joonsoo Kim 2014-02-14 6:54 ` [PATCH v2 5/5] mm/compaction: clean-up code on success of ballon isolation Joonsoo Kim 2014-02-14 6:54 ` Joonsoo Kim 2014-03-03 11:02 ` [PATCH v2 0/5] compaction related commits Vlastimil Babka 2014-03-03 11:02 ` Vlastimil Babka 2014-03-04 0:23 ` Joonsoo Kim 2014-03-04 0:23 ` Joonsoo Kim 2014-03-19 9:38 ` Vlastimil Babka 2014-03-19 9:38 ` Vlastimil Babka
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=1392360843-22261-4-git-send-email-iamjoonsoo.kim@lge.com \ --to=iamjoonsoo.kim@lge.com \ --cc=akpm@linux-foundation.org \ --cc=js1304@gmail.com \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-mm@kvack.org \ --cc=mgorman@suse.de \ --cc=riel@redhat.com \ --cc=vbabka@suse.cz \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.