View previous topic :: View next topic |
Author |
Message |
thejack n00b
Joined: 15 Oct 2008 Posts: 37
|
Posted: Sat May 23, 2009 9:11 pm Post subject: [resolu][MEMOIRE] Page Allocation Failure et Jumbo Frames |
|
|
Bonjour,
Je me suis rendu compte d'un problème quelque peu fâcheux sur mon serveur, au début je pensais que cela venait de ma carte réseau, mais un changement de modèle n'a rien changé, les erreurs sont les mêmes, juste le nom du driver réseau qui change dans le dump ...
Des que j'utilise au niveau du réseau des trames étendues (type 7000Ko ... 9000 ...) je me retrouve avec des erreurs d'allocation mémoire de ce type :
Code: | May 17 11:34:47 SERVEUR swapper: page allocation failure. order:3, mode:0x20
May 17 11:34:47 SERVEUR Pid: 0, comm: swapper Not tainted 2.6.28-gentoo-r5 #1
May 17 11:34:47 SERVEUR Call Trace:
May 17 11:34:47 SERVEUR [<c014488b>] __alloc_pages_internal+0x372/0x38a
May 17 11:34:47 SERVEUR [<c015a83f>] cache_alloc_refill+0x278/0x477
May 17 11:34:47 SERVEUR [<c0428db7>] tcp_v4_do_rcv+0x22/0x153
May 17 11:34:47 SERVEUR [<c015aaa2>] __kmalloc+0x64/0x9e
May 17 11:34:47 SERVEUR [<c03eee00>] __alloc_skb+0x45/0xf2
May 17 11:34:47 SERVEUR [<c03ef661>] __netdev_alloc_skb+0x14/0x2f
May 17 11:34:47 SERVEUR [<c036105a>] e1000_alloc_rx_buffers+0x7a/0x27c
May 17 11:34:47 SERVEUR [<c0361627>] e1000_clean_rx_irq+0x3cb/0x3ef
May 17 11:34:47 SERVEUR [<c03631b6>] e1000_clean+0x2ac/0x439
May 17 11:34:47 SERVEUR [<c0427576>] tcp_delack_timer+0x14f/0x1a2
May 17 11:34:47 SERVEUR [<c03f1f6f>] net_rx_action+0x65/0x15b
May 17 11:34:47 SERVEUR [<c0123254>] __do_softirq+0x83/0x11e
May 17 11:34:47 SERVEUR [<c0123321>] do_softirq+0x32/0x36
May 17 11:34:47 SERVEUR [<c0104c4e>] do_IRQ+0x6e/0x80
May 17 11:34:47 SERVEUR [<c010373b>] common_interrupt+0x23/0x28
May 17 11:34:47 SERVEUR [<c01075a4>] mwait_idle+0x2f/0x32
May 17 11:34:47 SERVEUR [<c0101d9d>] cpu_idle+0x5e/0x75
May 17 11:34:47 SERVEUR Mem-Info:
May 17 11:34:47 SERVEUR DMA per-cpu:
May 17 11:34:47 SERVEUR CPU 0: hi: 0, btch: 1 usd: 0
May 17 11:34:47 SERVEUR CPU 1: hi: 0, btch: 1 usd: 0
May 17 11:34:47 SERVEUR Normal per-cpu:
May 17 11:34:47 SERVEUR CPU 0: hi: 186, btch: 31 usd: 169
May 17 11:34:47 SERVEUR CPU 1: hi: 186, btch: 31 usd: 49
May 17 11:34:47 SERVEUR HighMem per-cpu:
May 17 11:34:47 SERVEUR CPU 0: hi: 42, btch: 7 usd: 35
May 17 11:34:47 SERVEUR CPU 1: hi: 42, btch: 7 usd: 14
May 17 11:34:47 SERVEUR Active_anon:7911 active_file:7561 inactive_anon:15351
May 17 11:34:47 SERVEUR inactive_file:208795 unevictable:0 dirty:8260 writeback:1869 unstable:0
May 17 11:34:47 SERVEUR free:2752 slab:9766 mapped:2211 pagetables:341 bounce:0
May 17 11:34:47 SERVEUR DMA free:3488kB min:64kB low:80kB high:96kB active_anon:0kB inactive_anon:176kB active_file:3320kB inactive_file:2856kB unevictable:0kB present:15868kB pages_scanned:0 all_unreclaimable? no
May 17 11:34:47 SERVEUR lowmem_reserve[]: 0 861 992 992
May 17 11:34:47 SERVEUR Normal free:7252kB min:3720kB low:4648kB high:5580kB active_anon:7164kB inactive_anon:34116kB active_file:16316kB inactive_file:768920kB unevictable:0kB present:881880kB pages_scanned:0 all_unreclaimable? no
May 17 11:34:47 SERVEUR lowmem_reserve[]: 0 0 1047 1047
May 17 11:34:47 SERVEUR HighMem free:268kB min:128kB low:268kB high:408kB active_anon:24480kB inactive_anon:27112kB active_file:10608kB inactive_file:63404kB unevictable:0kB present:134056kB pages_scanned:0 all_unreclaimable? no
May 17 11:34:47 SERVEUR lowmem_reserve[]: 0 0 0 0
May 17 11:34:47 SERVEUR DMA: 0*4kB 22*8kB 15*16kB 0*32kB 0*64kB 0*128kB 0*256kB 0*512kB 1*1024kB 1*2048kB 0*4096kB = 3488kB
May 17 11:34:47 SERVEUR Normal: 1637*4kB 36*8kB 4*16kB 1*32kB 1*64kB 0*128kB 1*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 7252kB
May 17 11:34:47 SERVEUR HighMem: 1*4kB 1*8kB 0*16kB 6*32kB 1*64kB 0*128kB 0*256kB 0*512kB 0*1024kB 0*2048kB 0*4096kB = 268kB
May 17 11:34:47 SERVEUR 216685 total pagecache pages
May 17 11:34:47 SERVEUR 185 pages in swap cache
May 17 11:34:47 SERVEUR Swap cache stats: add 194, delete 9, find 853/853
May 17 11:34:47 SERVEUR Free swap = 1003276kB
May 17 11:34:47 SERVEUR Total swap = 1004052kB
May 17 11:34:47 SERVEUR 260080 pages RAM
May 17 11:34:47 SERVEUR 33778 pages HighMem
May 17 11:34:47 SERVEUR 3752 pages reserved
May 17 11:34:47 SERVEUR 108061 pages shared
May 17 11:34:47 SERVEUR 159127 pages non-shared
|
Ce problème arrive des lors que la mémoire virtuelle est "pleine", lorsque je dis pleine je parle du cache qui au fur et à mesure s'étale sur la mémoire vive disponible. Cela donne au final des paquets droppé ...
Des que je regle la MTU a 1500 le problème disparait. Bon ce n'est pas bien grave, je perds juste 20% de performance en transfert ...
Cependant si quelqu'un aurait un debut de solution ça m'aiderait
Last edited by thejack on Wed Jun 10, 2009 3:17 pm; edited 1 time in total |
|
Back to top |
|
|
thejack n00b
Joined: 15 Oct 2008 Posts: 37
|
Posted: Mon May 25, 2009 7:46 pm Post subject: |
|
|
Bon bah je crois avoir trouvé le pourquoi du comment ...
Apres avoir regardé pour la *je ne sais combien de* fois le log ... j'ai tilté sur lowmem_reserve.
J'ai fait la liaison entre ça et mes "tweaks" tcp que sont :
Code: | net.core.rmem_max = 16777216
net.core.wmem_max = 16777216
net.ipv4.tcp_rmem = 4096 87380 16777216
net.ipv4.tcp_wmem = 4096 65536 16777216 |
En fait c'est la mémoire minimale réservée par defaut par le noyau (environ 3Mo) qui est a priori trop faible pour certains essais d'allocation qu'entreprends le driver réseau.
J'ai donc integré la ligne suivante a sysctl.conf :
Code: | vm.min_free_kbytes = 20480 |
J'ai remis ma MTU a 9000Ko .... je suis en train de tester tout ça ... pour l'instant pas d'erreur en vue. Je vais laisser ça en suspend, si après une a deux semaines je n'ai aucune erreur je vous le signalerais. |
|
Back to top |
|
|
El_Goretto Moderator
Joined: 29 May 2004 Posts: 3174 Location: Paris
|
Posted: Mon May 25, 2009 8:03 pm Post subject: |
|
|
Bonjour,
Je suis preneur si tu as des liens documentant ces paramètres noyaux (leur application concrète en environnement 1Gb m'intéresse aussi). _________________ -TrueNAS & jails: µ-serv Gen8 E3-1260L, 16Go ECC + µ-serv N40L, 10Go ECC
-Réseau: APU2C4 (OpenWRT) + GS726Tv3 + 2x GS108Tv2 + Archer C5v1 (OpenWRT) |
|
Back to top |
|
|
thejack n00b
Joined: 15 Oct 2008 Posts: 37
|
Posted: Mon May 25, 2009 8:14 pm Post subject: |
|
|
http://www.acc.umu.se/~maswan/linux-netperf.txt
Voici un lien qui decrit le probleme .... plus l'effet secondaire que j'ai rencontré. Bien sur je le trouve seulement au moment ou je trouve le bon parametre a changer |
|
Back to top |
|
|
thejack n00b
Joined: 15 Oct 2008 Posts: 37
|
Posted: Sat May 30, 2009 6:22 pm Post subject: |
|
|
Apres une semaine sans erreur je viens d'en avoir quelques unes avec un reglage de 20Mo ... je monte a 32Mo (pour 16Ko d'allocation par trames de 9000o, ceci etant une particularité du driver e1000, et 2 queue de 1000 pour le RX et TX). |
|
Back to top |
|
|
thejack n00b
Joined: 15 Oct 2008 Posts: 37
|
Posted: Wed Jun 10, 2009 3:17 pm Post subject: |
|
|
J'ai fini a 64Mo ... pas de warning depuis une semaine ... je considere donc le probleme resolu |
|
Back to top |
|
|
El_Goretto Moderator
Joined: 29 May 2004 Posts: 3174 Location: Paris
|
Posted: Sun Jul 26, 2009 11:40 am Post subject: |
|
|
Franchement, ce thread mérite d'être en post-it... ou plutôt dans la section astuce de chez nous.
Il y a très, mais alors très peu de référence sur le net à ce problème, et il arrive très vite pourtant. Certains l'associent apparemment à tort à un problème avec leur driver réseau.
J'en ai encore souffert hier, la mémoire était full, et 50%du swap utilisée. Les problèmes d'allocation semblent venir du fait que l'allocation des tampons réseau doit être faite sans aucun délais, contrairement à une appli. _________________ -TrueNAS & jails: µ-serv Gen8 E3-1260L, 16Go ECC + µ-serv N40L, 10Go ECC
-Réseau: APU2C4 (OpenWRT) + GS726Tv3 + 2x GS108Tv2 + Archer C5v1 (OpenWRT) |
|
Back to top |
|
|
|