<div dir="ltr">На одном из серверов проблема сохраняется и повторяется достаточно часто:<div><br></div><div><div><br></div><div>[134118.883440] swapper: page allocation failure: order:1, mode:0x20</div><div>[134118.883446] Pid: 0, comm: swapper Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div>
<div><br></div><div>[134277.223458] php5-fpm: page allocation failure: order:1, mode:0x20</div><div>[134277.223465] Pid: 3718, comm: php5-fpm Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div><div><br></div><div>[135102.694001] swapper: page allocation failure: order:1, mode:0x20</div>
<div>[135102.694007] Pid: 0, comm: swapper Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div><div><br></div><div>[135412.344250] swapper: page allocation failure: order:1, mode:0x20</div><div>[135412.344255] Pid: 0, comm: swapper Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div>
<div><br></div><div>[135630.433746] swapper: page allocation failure: order:1, mode:0x20</div><div>[135630.433751] Pid: 0, comm: swapper Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div><div><br></div><div>[135816.365417] smbd: page allocation failure: order:1, mode:0x20</div>
<div>[135816.365423] Pid: 1942, comm: smbd Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div><div><br></div><div>[137965.370600] klogd: page allocation failure: order:1, mode:0x20</div><div>[137965.370605] Pid: 4029, comm: klogd Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div>
<div><br></div><div>[137965.452384] php5-fpm: page allocation failure: order:1, mode:0x20</div><div>[137965.452391] Pid: 4935, comm: php5-fpm Not tainted 3.0.74-std-def-alt0.M60P.1 #1</div></div><div><br></div><div style>
В основном - ругается на swapper, но попадаются и другие процессы.</div><div style><br></div><div style><br></div><div style>SWAP на месте:</div><div style><br></div><div style><div># free -m</div><div> total used free shared buffers cached</div>
<div>Mem: 5983 5826 157 0 3 5457</div><div>-/+ buffers/cache: 365 5618</div><div>Swap: 1023 31 992</div><div><br></div></div><div><br></div>
<div style>Что это может быть? Битая память? Как отследить?</div><div><br></div></div><div class="gmail_extra"><br><br><div class="gmail_quote">5 апреля 2013 г., 19:45 пользователь Sergey Vlasov <span dir="ltr"><<a href="mailto:vsu@altlinux.ru" target="_blank">vsu@altlinux.ru</a>></span> написал:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">On Fri, 5 Apr 2013 12:57:31 +0400 Yuri Khachaturyan wrote:<br>
<br>
> С недавнего времени в dmesg наблюдаю следующее (см. ниже).<br>
> Кто подскажет что это может быть - железо? память?<br>
<br>
</div>Вечная проблема с фрагментацией памяти...<br>
<div class="im"><br>
> [34302.846989] smtp: page allocation failure. order:1, mode:0x20<br>
<br>
</div>Запрашивается блок размером 2 страницы (order:1) с флагом GFP_ATOMIC<br>
(необходимо найти свободный блок немедленно - нельзя ожидать<br>
освобождения памяти).<br>
<div class="im"><br>
> [34302.846996] Pid: 13462, comm: smtp Not tainted 2.6.39-std-def-alt3.2 #1<br>
> [34302.846998] Call Trace:<br>
> [34302.847001] <IRQ> [<ffffffff810fa29f>]<br>
> __alloc_pages_nodemask+0x67f/0x8b0<br>
> [34302.847019] [<ffffffff81136786>] kmem_getpages+0x66/0x180<br>
> [34302.847023] [<ffffffff811376cf>] fallback_alloc+0x17f/0x240<br>
> [34302.847026] [<ffffffff81137490>] ____cache_alloc_node+0x90/0x150<br>
> [34302.847030] [<ffffffff81137da3>] kmem_cache_alloc+0xe3/0x170<br>
> [34302.847035] [<ffffffff813465d3>] sk_prot_alloc+0x43/0x180<br>
> [34302.847038] [<ffffffff8134681b>] sk_clone+0x1b/0x300<br>
> [34302.847043] [<ffffffff81393cd1>] inet_csk_clone+0x11/0xc0<br>
> [34302.847047] [<ffffffff813ad0f4>] tcp_create_openreq_child+0x24/0x4c0<br>
> [34302.847051] [<ffffffff813ab528>] tcp_v4_syn_recv_sock+0x48/0x270<br>
<br>
</div>Причина запроса - приём очередного TCP-соединения; параметры<br>
соответствующего slab cache можно увидеть в /proc/slabinfo:<br>
<br>
$ head -n2 /proc/slabinfo; grep -w TCP /proc/slabinfo<br>
slabinfo - version: 2.1<br>
# name <active_objs> <num_objs> <objsize> <objperslab> <pagesperslab> : tunables <limit> <batchcount> <sharedfactor> : slabdata <active_slabs> <num_slabs> <sharedavail><br>
TCP 19 32 1664 4 2 : tunables 24 12 8 : slabdata 8 8 0<br>
<br>
(вообще на разных версиях ядра параметры могут несколько отличаться, но<br>
в попавшихся под руку тоже pagesperslab=2).<br>
<div class="im"><br>
> [34302.847245] Node 0 DMA: 0*4kB 1*8kB 0*16kB 1*32kB 2*64kB 1*128kB 1*256kB 0*512kB 1*1024kB 1*2048kB 3*4096kB = 15912kB<br>
> [34302.847256] Node 0 DMA32: 26048*4kB 22*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 104368kB<br>
> [34302.847267] Node 0 Normal: 11246*4kB 0*8kB 0*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 1*2048kB 0*4096kB = 47032kB<br>
<br>
</div>Свободная память вроде бы и есть, но в основном в виде одиночных<br>
страниц, а найти непрерывный блок даже из 2 страниц существенно сложнее<br>
(вообще-то такие блоки есть, но часть памяти резервируется для совсем<br>
особых случаев, к которым не относится даже GFP_ATOMIC - например, для<br>
использования в процессе работы OOM killer, если для завершения процесса<br>
вдруг временно понадобится ещё немного памяти, или для процессов с<br>
установленным флагом PF_MEMALLOC, успешная работа которых должна<br>
привести к освобождению памяти).<br>
<br>
Реально работающих методов борьбы с этим безобразием, кроме подъёма<br>
/proc/sys/vm/min_free_kbytes, практически нет. Хотя именно на выбор<br>
параметров slab cache в данном случае можно было бы повлиять параметром<br>
ядра slab_max_order=0 (ценой некоторого увеличения бесполезных потерь<br>
памяти). Однако этот параметр доступен только начиная с ядра 3.3.<br>
<br>
Вообще calculate_slab_order() в данном случае ведёт себя не совсем<br>
оптимальным образом - на 1 страницу может влезть 2*1664, на 2 страницы -<br>
4*1664, поэтому никакого преимущества по использованию памяти при выборе<br>
order=1 получить не удастся.<br>
<div class="HOEnZb"><div class="h5">_______________________________________________<br>
Sysadmins mailing list<br>
<a href="mailto:Sysadmins@lists.altlinux.org">Sysadmins@lists.altlinux.org</a><br>
<a href="https://lists.altlinux.org/mailman/listinfo/sysadmins" target="_blank">https://lists.altlinux.org/mailman/listinfo/sysadmins</a><br>
</div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br>С уважением, <br>Хачатурян Юрий (<a href="mailto:yukh@yukh.ru">yukh@yukh.ru</a>)
</div>