* kswapd consumes 100% CPU when highest zone is small
@ 2016-03-02 6:20 Jerry Lee
2016-03-02 14:21 ` chen feng
2016-03-02 17:36 ` Michal Hocko
0 siblings, 2 replies; 8+ messages in thread
From: Jerry Lee @ 2016-03-02 6:20 UTC (permalink / raw)
To: linux-mm
[-- Attachment #1: Type: text/plain, Size: 1469 bytes --]
Hi,
I have a x86_64 system with 2G RAM using linux-3.12.x. During copying
large
files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is
deleted
or the page cache is dropped. With setting the min_free_kbytes from 16384
to
65536, the symptom is mitigated but I can't totally get rid of the problem.
After some trial and error, I found that highest zone is always unbalanced
with
order-0 page request so that pgdat_blanaced() continuously return false and
kswapd can't sleep.
Here's the watermarks (min_free_kbytes = 65536) in my system:
Node 0, zone DMA
pages free 2167
min 138
low 172
high 207
scanned 0
spanned 4095
present 3996
managed 3974
Node 0, zone DMA32
pages free 215375
min 16226
low 20282
high 24339
scanned 0
spanned 1044480
present 490971
managed 464223
Node 0, zone Normal
pages free 7
min 18
low 22
high 27
scanned 0
spanned 1536
present 1536
managed 523
Besides, when the kswapd crazily spins, the value of the following entries
in vmstat increases quickly even when I stop copying file:
pgalloc_dma 17719
pgalloc_dma32 3262823
slabs_scanned 937728
kswapd_high_wmark_hit_quickly 54333233
pageoutrun 54333235
Is there anything I could do to totally get rid of the problem?
Thanks
[-- Attachment #2: Type: text/html, Size: 2052 bytes --]
^ permalink raw reply [flat|nested] 8+ messages in thread* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-02 6:20 kswapd consumes 100% CPU when highest zone is small Jerry Lee @ 2016-03-02 14:21 ` chen feng 2016-03-03 1:56 ` Jerry Lee 2016-03-02 17:36 ` Michal Hocko 1 sibling, 1 reply; 8+ messages in thread From: chen feng @ 2016-03-02 14:21 UTC (permalink / raw) To: Jerry Lee, linux-mm, puck.chen On 2016/3/2 14:20, Jerry Lee wrote: > Hi, > > I have a x86_64 system with 2G RAM using linux-3.12.x. During copying > large > files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is > deleted > or the page cache is dropped. With setting the min_free_kbytes from 16384 > to > 65536, the symptom is mitigated but I can't totally get rid of the problem. > > After some trial and error, I found that highest zone is always unbalanced > with > order-0 page request so that pgdat_blanaced() continuously return false and > kswapd can't sleep. > > Here's the watermarks (min_free_kbytes = 65536) in my system: > Node 0, zone DMA > pages free 2167 > min 138 > low 172 > high 207 > scanned 0 > spanned 4095 > present 3996 > managed 3974 > > Node 0, zone DMA32 > pages free 215375 > min 16226 > low 20282 > high 24339 > scanned 0 > spanned 1044480 > present 490971 > managed 464223 > > Node 0, zone Normal > pages free 7 > min 18 > low 22 > high 27 > scanned 0 > spanned 1536 > present 1536 > managed 523 > > Besides, when the kswapd crazily spins, the value of the following entries > in vmstat increases quickly even when I stop copying file: > > pgalloc_dma 17719 > pgalloc_dma32 3262823 > slabs_scanned 937728 > kswapd_high_wmark_hit_quickly 54333233 > pageoutrun 54333235 > > Is there anything I could do to totally get rid of the problem? > \ Yes, I have the same issue on arm64 platform. I think you can increase the normal ZONE size. And I think there will be a memory alloc process in your system which tigger the kswapd too frequently. You can set this process to no-kswapd flag will also solve this issue. > Thanks > -- 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> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-02 14:21 ` chen feng @ 2016-03-03 1:56 ` Jerry Lee 2016-03-03 5:59 ` Chen Feng 0 siblings, 1 reply; 8+ messages in thread From: Jerry Lee @ 2016-03-03 1:56 UTC (permalink / raw) To: chen feng; +Cc: linux-mm, puck.chen [-- Attachment #1: Type: text/plain, Size: 2333 bytes --] Hi, Thanks for sharing the same experience and workaround with me. But it's kind of hard for me to set all the possible processes to no-kswapd flag in advance so that they would not trigger kswapd in the future. Cheers, - Jerry On 2 March 2016 at 22:21, chen feng <puck.chen@foxmail.com> wrote: > > > On 2016/3/2 14:20, Jerry Lee wrote: > > Hi, > > > > I have a x86_64 system with 2G RAM using linux-3.12.x. During copying > > large > > files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is > > deleted > > or the page cache is dropped. With setting the min_free_kbytes from > 16384 > > to > > 65536, the symptom is mitigated but I can't totally get rid of the > problem. > > > > After some trial and error, I found that highest zone is always > unbalanced > > with > > order-0 page request so that pgdat_blanaced() continuously return false > and > > kswapd can't sleep. > > > > Here's the watermarks (min_free_kbytes = 65536) in my system: > > Node 0, zone DMA > > pages free 2167 > > min 138 > > low 172 > > high 207 > > scanned 0 > > spanned 4095 > > present 3996 > > managed 3974 > > > > Node 0, zone DMA32 > > pages free 215375 > > min 16226 > > low 20282 > > high 24339 > > scanned 0 > > spanned 1044480 > > present 490971 > > managed 464223 > > > > Node 0, zone Normal > > pages free 7 > > min 18 > > low 22 > > high 27 > > scanned 0 > > spanned 1536 > > present 1536 > > managed 523 > > > > Besides, when the kswapd crazily spins, the value of the following > entries > > in vmstat increases quickly even when I stop copying file: > > > > pgalloc_dma 17719 > > pgalloc_dma32 3262823 > > slabs_scanned 937728 > > kswapd_high_wmark_hit_quickly 54333233 > > pageoutrun 54333235 > > > > Is there anything I could do to totally get rid of the problem? > > \ > Yes, I have the same issue on arm64 platform. > > I think you can increase the normal ZONE size. And I think there will be a > memory alloc process > in your system which tigger the kswapd too frequently. > > You can set this process to no-kswapd flag will also solve this issue. > > Thanks > > > [-- Attachment #2: Type: text/html, Size: 3368 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-03 1:56 ` Jerry Lee @ 2016-03-03 5:59 ` Chen Feng 0 siblings, 0 replies; 8+ messages in thread From: Chen Feng @ 2016-03-03 5:59 UTC (permalink / raw) To: Jerry Lee, chen feng; +Cc: linux-mm, puck.chen On 2016/3/3 9:56, Jerry Lee wrote: > Hi, > > Thanks for sharing the same experience and workaround with me. > But it's kind of hard for me to set all the possible processes to no-kswapd flag > in advance so that they would not trigger kswapd in the future. > > Cheers, > - Jerry > > On 2 March 2016 at 22:21, chen feng <puck.chen@foxmail.com <mailto:puck.chen@foxmail.com>> wrote: > > > > On 2016/3/2 14:20, Jerry Lee wrote: > > Hi, > > > > I have a x86_64 system with 2G RAM using linux-3.12.x. During copying > > large > > files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is > > deleted > > or the page cache is dropped. With setting the min_free_kbytes from 16384 > > to > > 65536, the symptom is mitigated but I can't totally get rid of the problem. > > > > After some trial and error, I found that highest zone is always unbalanced > > with > > order-0 page request so that pgdat_blanaced() continuously return false and > > kswapd can't sleep. > > > > Here's the watermarks (min_free_kbytes = 65536) in my system: > > Node 0, zone DMA > > pages free 2167 > > min 138 > > low 172 > > high 207 > > scanned 0 > > spanned 4095 > > present 3996 > > managed 3974 > > > > Node 0, zone DMA32 > > pages free 215375 > > min 16226 > > low 20282 > > high 24339 > > scanned 0 > > spanned 1044480 > > present 490971 > > managed 464223 > > > > Node 0, zone Normal > > pages free 7 > > min 18 > > low 22 > > high 27 > > scanned 0 > > spanned 1536 > > present 1536 > > managed 523 > > > > Besides, when the kswapd crazily spins, the value of the following entries > > in vmstat increases quickly even when I stop copying file: > > > > pgalloc_dma 17719 > > pgalloc_dma32 3262823 > > slabs_scanned 937728 > > kswapd_high_wmark_hit_quickly 54333233 > > pageoutrun 54333235 > > > > Is there anything I could do to totally get rid of the problem? > > \ > Yes, I have the same issue on arm64 platform. > > I think you can increase the normal ZONE size. And I think there will be a memory alloc process > in your system which tigger the kswapd too frequently. > > You can set this process to no-kswapd flag will also solve this issue. > > Thanks > > Just hack the process who tigger it too frequenctly. > > -- 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> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-02 6:20 kswapd consumes 100% CPU when highest zone is small Jerry Lee 2016-03-02 14:21 ` chen feng @ 2016-03-02 17:36 ` Michal Hocko 2016-03-03 2:23 ` Jerry Lee 1 sibling, 1 reply; 8+ messages in thread From: Michal Hocko @ 2016-03-02 17:36 UTC (permalink / raw) To: Jerry Lee; +Cc: linux-mm On Wed 02-03-16 14:20:38, Jerry Lee wrote: > Hi, > > I have a x86_64 system with 2G RAM using linux-3.12.x. During copying > large > files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is > deleted > or the page cache is dropped. With setting the min_free_kbytes from 16384 > to > 65536, the symptom is mitigated but I can't totally get rid of the problem. > > After some trial and error, I found that highest zone is always unbalanced > with > order-0 page request so that pgdat_blanaced() continuously return false and > kswapd can't sleep. > > Here's the watermarks (min_free_kbytes = 65536) in my system: > Node 0, zone DMA > pages free 2167 > min 138 > low 172 > high 207 > scanned 0 > spanned 4095 > present 3996 > managed 3974 > > Node 0, zone DMA32 > pages free 215375 > min 16226 > low 20282 > high 24339 > scanned 0 > spanned 1044480 > present 490971 > managed 464223 > > Node 0, zone Normal > pages free 7 > min 18 > low 22 > high 27 > scanned 0 > spanned 1536 > present 1536 > managed 523 The zone Normal is just too small and that confuses the reclaim path. > > Besides, when the kswapd crazily spins, the value of the following entries > in vmstat increases quickly even when I stop copying file: > > pgalloc_dma 17719 > pgalloc_dma32 3262823 > slabs_scanned 937728 > kswapd_high_wmark_hit_quickly 54333233 > pageoutrun 54333235 > > Is there anything I could do to totally get rid of the problem? I would try to sacrifice those few megs and get rid of zone normal completely. AFAIR mem=4G should limit the max_pfn to 4G so DMA32 should cover the shole memory. -- Michal Hocko SUSE Labs -- 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> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-02 17:36 ` Michal Hocko @ 2016-03-03 2:23 ` Jerry Lee 2016-03-03 8:22 ` Michal Hocko 0 siblings, 1 reply; 8+ messages in thread From: Jerry Lee @ 2016-03-03 2:23 UTC (permalink / raw) To: Michal Hocko; +Cc: linux-mm [-- Attachment #1: Type: text/plain, Size: 3284 bytes --] On 3 March 2016 at 01:36, Michal Hocko <mhocko@kernel.org> wrote: > On Wed 02-03-16 14:20:38, Jerry Lee wrote: > > Hi, > > > > I have a x86_64 system with 2G RAM using linux-3.12.x. During copying > > large > > files (e.g. 100GB), kswapd easily consumes 100% CPU until the file is > > deleted > > or the page cache is dropped. With setting the min_free_kbytes from > 16384 > > to > > 65536, the symptom is mitigated but I can't totally get rid of the > problem. > > > > After some trial and error, I found that highest zone is always > unbalanced > > with > > order-0 page request so that pgdat_blanaced() continuously return false > and > > kswapd can't sleep. > > > > Here's the watermarks (min_free_kbytes = 65536) in my system: > > Node 0, zone DMA > > pages free 2167 > > min 138 > > low 172 > > high 207 > > scanned 0 > > spanned 4095 > > present 3996 > > managed 3974 > > > > Node 0, zone DMA32 > > pages free 215375 > > min 16226 > > low 20282 > > high 24339 > > scanned 0 > > spanned 1044480 > > present 490971 > > managed 464223 > > > > Node 0, zone Normal > > pages free 7 > > min 18 > > low 22 > > high 27 > > scanned 0 > > spanned 1536 > > present 1536 > > managed 523 > > The zone Normal is just too small and that confuses the reclaim path. > > > > > Besides, when the kswapd crazily spins, the value of the following > entries > > in vmstat increases quickly even when I stop copying file: > > > > pgalloc_dma 17719 > > pgalloc_dma32 3262823 > > slabs_scanned 937728 > > kswapd_high_wmark_hit_quickly 54333233 > > pageoutrun 54333235 > > > > Is there anything I could do to totally get rid of the problem? > > I would try to sacrifice those few megs and get rid of zone normal > completely. AFAIR mem=4G should limit the max_pfn to 4G so DMA32 should > cover the shole memory. > I came up with a patch that seem to work well on my system. But, I am afraid that it breaks the rule that all zones must be balanced for order-0 request and It may cause some other side-effect? I thought that the patch is just a workaround (a bad one) and not a cure-all. BTW, if I upgrade the RAM from 2G to 4G, the problem is gone because the Normal zone won't confuse the reclaim path as you said before. Thanks --- a/linux-3.12.6/mm/vmscan.c +++ b/linux-3.12.6/mm/vmscan.c @@ -2755,6 +2755,7 @@ static bool pgdat_balanced(pg_data_t *pgdat, int order, int classzone_idx) unsigned long managed_pages = 0; unsigned long balanced_pages = 0; int i; +#define HWMARK_THRESHOLD 128 /* Check the watermark levels */ for (i = 0; i <= classzone_idx; i++) { @@ -2779,7 +2780,8 @@ static bool pgdat_balanced(pg_data_t *pgdat, int order, int classzone_idx) if (zone_balanced(zone, order, 0, i)) balanced_pages += zone->managed_pages; - else if (!order) + else if (!order && + (high_wmark_pages(zone) > HWMARK_THRESHOLD)) return false; } > -- > Michal Hocko > SUSE Labs > [-- Attachment #2: Type: text/html, Size: 4775 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-03 2:23 ` Jerry Lee @ 2016-03-03 8:22 ` Michal Hocko 2016-03-03 9:27 ` Jerry Lee 0 siblings, 1 reply; 8+ messages in thread From: Michal Hocko @ 2016-03-03 8:22 UTC (permalink / raw) To: Jerry Lee; +Cc: linux-mm On Thu 03-03-16 10:23:03, Jerry Lee wrote: > On 3 March 2016 at 01:36, Michal Hocko <mhocko@kernel.org> wrote: > > > On Wed 02-03-16 14:20:38, Jerry Lee wrote: [...] > > > Is there anything I could do to totally get rid of the problem? > > > > I would try to sacrifice those few megs and get rid of zone normal > > completely. AFAIR mem=4G should limit the max_pfn to 4G so DMA32 should > > cover the shole memory. > > > > I came up with a patch that seem to work well on my system. But, I > am afraid that it breaks the rule that all zones must be balanced for > order-0 request and It may cause some other side-effect? I thought > that the patch is just a workaround (a bad one) and not a cure-all. One thing I haven't noticed previously is that you are running on the 3.12 kernel. I vaguely remember there were some fixes for small zones. Not sure it would work for such a small zone but it would be worth trying I guess. Could you retest with 4.4? -- Michal Hocko SUSE Labs -- 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> ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: kswapd consumes 100% CPU when highest zone is small 2016-03-03 8:22 ` Michal Hocko @ 2016-03-03 9:27 ` Jerry Lee 0 siblings, 0 replies; 8+ messages in thread From: Jerry Lee @ 2016-03-03 9:27 UTC (permalink / raw) To: Michal Hocko; +Cc: linux-mm [-- Attachment #1: Type: text/plain, Size: 2058 bytes --] On 3 March 2016 at 16:22, Michal Hocko <mhocko@kernel.org> wrote: > On Thu 03-03-16 10:23:03, Jerry Lee wrote: > > On 3 March 2016 at 01:36, Michal Hocko <mhocko@kernel.org> wrote: > > > > > On Wed 02-03-16 14:20:38, Jerry Lee wrote: > [...] > > > > Is there anything I could do to totally get rid of the problem? > > > > > > I would try to sacrifice those few megs and get rid of zone normal > > > completely. AFAIR mem=4G should limit the max_pfn to 4G so DMA32 should > > > cover the shole memory. > > > > > > > I came up with a patch that seem to work well on my system. But, I > > am afraid that it breaks the rule that all zones must be balanced for > > order-0 request and It may cause some other side-effect? I thought > > that the patch is just a workaround (a bad one) and not a cure-all. > > One thing I haven't noticed previously is that you are running on the 3.12 > kernel. I vaguely remember there were some fixes for small zones. Not > sure it would work for such a small zone but it would be worth trying I > guess. Could you retest with 4.4? > Hi, Thanks for the quick feedback! Before sending a mail to linux-mm, I found that there were discussions and fixes for the small zone as you remember: https://lkml.org/lkml/2011/6/24/161 . However, the fixes is kind of old and should be already included into the current kernel version. Speaking of retesting the issue with kernel-4.4, it's a bit hard for my right now because there are some customized hardware and drivers on my system but I could give it a try. BTW, there are some information I forgot to mention before. Originally, I use kernel-3.4 on my system without the kswapd issue. After upgrading to linux-3.12.x, the issue occur. In addition, I found that there are other people encountering the same problem even linux-4.x are used. [1] The idea to increase the value of min_free_kbytes comes from the post. [1] [1] https://github.com/GalliumOS/galliumos-distro/issues/52 Anyway, thanks again for your help and suggestion! - Jerry > -- > Michal Hocko > SUSE Labs > [-- Attachment #2: Type: text/html, Size: 3190 bytes --] ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2016-03-03 9:27 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2016-03-02 6:20 kswapd consumes 100% CPU when highest zone is small Jerry Lee 2016-03-02 14:21 ` chen feng 2016-03-03 1:56 ` Jerry Lee 2016-03-03 5:59 ` Chen Feng 2016-03-02 17:36 ` Michal Hocko 2016-03-03 2:23 ` Jerry Lee 2016-03-03 8:22 ` Michal Hocko 2016-03-03 9:27 ` Jerry Lee
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox