Kswapd occupe trop de cpu ?

Bonjour,

J’ai remarqué des lenteurs sur un serveur debian sarge dont je m’occupe… et semblerait que le probleme vienne du processus kswapd, mais je ne sais pas comment regler ca…

Voila mon top :

[code]top - 16:16:39 up 9 days, 5:30, 3 users, load average: 1.98, 1.74, 1.16
Tasks: 90 total, 3 running, 87 sleeping, 0 stopped, 0 zombie
Cpu(s): 12.9% user, 23.5% system, 0.0% nice, 63.6% idle
Mem: 905400k total, 899288k used, 6112k free, 115532k buffers
Swap: 3903776k total, 3903776k used, 0k free, 20764k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4 root 15 0 0 0 0 S 16.6 0.0 64:56.32 kswapd
13634 www-data 9 0 891m 193m 2364 S 10.3 21.9 6:41.25 apache2
24328 nobody 13 0 704 700 272 R 2.0 0.1 0:08.90 find
23182 mysql 9 0 33612 21m 1608 S 1.3 2.4 0:11.74 mysqld
23199 mysql 9 0 33612 21m 1608 S 1.3 2.4 0:16.44 mysqld
23191 mysql 8 0 33612 21m 1608 S 0.7 2.4 0:12.54 mysqld
4528 root 11 0 1068 1068 844 R 0.7 0.1 0:00.52 top
1 root 9 0 124 92 68 S 0.0 0.0 0:31.08 init
2 root 9 0 0 0 0 S 0.0 0.0 0:09.06 keventd
3 root 19 19 0 0 0 S 0.0 0.0 0:00.21 ksoftirqd_CPU0
5 root 9 0 0 0 0 S 0.0 0.0 0:00.11 bdflush
6 root 9 0 0 0 0 S 0.0 0.0 0:00.46 kupdated
18 root -1 -20 0 0 0 S 0.0 0.0 0:00.00 mdrecoveryd
20 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
21 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
22 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2
23 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_3
27 root -1 -20 0 0 0 S 0.0 0.0 0:00.00 raid1d
55 root 9 0 0 0 0 S 0.0 0.0 2:30.90 kjournald
184 root -1 -20 0 0 0 S 0.0 0.0 0:00.06 raid1d
185 root 19 19 0 0 0 S 0.0 0.0 0:00.02 raid1syncd
197 root 9 0 0 0 0 S 0.0 0.0 0:00.00 kjournald
795 root 9 0 0 0 0 S 0.0 0.0 0:00.00 khubd
1575 root 9 0 356 316 240 S 0.0 0.0 0:22.40 syslogd
1578 root 9 0 980 260 220 S 0.0 0.0 0:02.21 klogd
1594 root 9 0 248 192 188 S 0.0 0.0 0:00.00 inetd
1780 root 8 0 460 360 288 S 0.0 0.0 0:04.43 master
1788 postfix 9 0 776 604 480 S 0.0 0.1 0:26.20 qmgr
1842 postgres 8 0 772 376 292 S 0.0 0.0 0:15.11 postmaster
1847 postgres 9 0 1700 292 220 S 0.0 0.0 0:00.88 postmaster
1848 postgres 9 0 804 348 224 S 0.0 0.0 0:04.13 postmaster
1868 root 9 0 288 192 188 S 0.0 0.0 0:00.00 rsync
1881 root 9 0 536 384 320 S 0.0 0.0 0:00.00 sshd
1889 root 9 0 452 240 192 S 0.0 0.0 0:09.39 mdadm
1894 daemon 9 0 188 132 112 S 0.0 0.0 0:00.18 atd
1897 root 8 0 288 208 152 S 0.0 0.0 0:05.38 cron
1913 zevince 9 0 472 32 28 S 0.0 0.0 0:00.00 bash
1914 zevince 9 0 472 32 28 S 0.0 0.0 0:00.02 bash
1916 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
1917 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
[/code]

Le serveur est vraiment lent parfois, alors qu’il n’est pas si occupé que ca !!

et j’ai aussi des messages d’erreur :

ENOMEM in journal_get_undo_access_R0fe4c1e8, retrying VM:killing process apache2 __alloc_pages: 0-order allocation failed (gfp=0x1f0/0) ... ...

y’en a une belle liste du meme genre

qu’est-ce que je peux y faire ??

hello,

J’ai le même problème sur certains serveur je n’ai pas trouvé de solution à part passer en kernel 2.6 ce qui est pour le moment pas faisable sur ma prod.

Tu swap beaucoup trop, aparament, il te faudrais environs 4GB de ram supplémentaire.

Fais ton top en vérifiant l’utilisation mémoire de chaque processus (shift m).

c’est effectivement un swap saturé, mais c’est anormal, vu le peu de process qui tourne.
Je crois qu’il faudrait redémarrer ton apache de temps en temps: il prend 891Mo pour la seule instance visible dans ton top (je n’ai pas de point de comparaison de charge, mais dans l’absolu, ça me parait lourd comme conso).

Effectivemment, c’est apache2 qui ne libere pas la ram/swap qu’il occupe… je viens de le redemarrer et de refaire un top… la difference est flagrante… et je ne peux pas passer en noyau 2.6 pour l’instant, c’est un serveur un peu critique…
y’a d’autres solutions, eventuellement ?

top, apres redemarrage d’apache 2 :

[code]top - 10:28:03 up 13 days, 23:41, 3 users, load average: 0.00, 0.00, 0.00
Tasks: 73 total, 1 running, 72 sleeping, 0 stopped, 0 zombie
Cpu(s): 0.0% user, 0.0% system, 0.0% nice, 100.0% idle
Mem: 905400k total, 75328k used, 830072k free, 7192k buffers
Swap: 3903776k total, 16520k used, 3887256k free, 25124k cached

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 8 0 172 152 116 S 0.0 0.0 0:44.02 init
2 root 9 0 0 0 0 S 0.0 0.0 0:13.74 keventd
3 root 19 19 0 0 0 S 0.0 0.0 0:00.28 ksoftirqd_CPU0
4 root 9 0 0 0 0 S 0.0 0.0 107:26.74 kswapd
5 root 9 0 0 0 0 S 0.0 0.0 0:00.51 bdflush
6 root 9 0 0 0 0 S 0.0 0.0 0:00.58 kupdated
18 root -1 -20 0 0 0 S 0.0 0.0 0:00.00 mdrecoveryd
20 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
21 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_1
22 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_2
23 root 9 0 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_3
27 root -1 -20 0 0 0 S 0.0 0.0 0:00.00 raid1d
55 root 9 0 0 0 0 S 0.0 0.0 3:27.21 kjournald
184 root -1 -20 0 0 0 S 0.0 0.0 0:00.06 raid1d
185 root 19 19 0 0 0 S 0.0 0.0 0:00.02 raid1syncd
197 root 9 0 0 0 0 S 0.0 0.0 0:00.00 kjournald
795 root 9 0 0 0 0 S 0.0 0.0 0:00.00 khubd
1575 root 9 0 352 312 236 S 0.0 0.0 0:32.99 syslogd
1578 root 9 0 972 216 212 S 0.0 0.0 0:05.83 klogd
1594 root 9 0 244 188 184 S 0.0 0.0 0:00.00 inetd
1868 root 9 0 288 192 188 S 0.0 0.0 0:00.00 rsync
1881 root 10 0 536 384 316 S 0.0 0.0 0:00.01 sshd
1889 root 9 0 452 240 192 S 0.0 0.0 0:11.74 mdadm
1894 daemon 9 0 200 144 124 S 0.0 0.0 0:00.18 atd
1897 root 8 0 288 208 144 S 0.0 0.0 0:07.91 cron
1916 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
1917 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
1918 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
31980 root 9 0 492 168 164 S 0.0 0.0 0:00.68 mysqld_safe
14000 root 8 0 592 44 40 S 0.0 0.0 0:00.00 smbmount
14579 root 9 0 592 44 40 S 0.0 0.0 0:00.00 smbmount
1566 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
25965 root 9 0 260 84 80 S 0.0 0.0 0:00.00 vsftpd
12370 root 9 0 968 680 516 S 0.0 0.1 1:13.98 nmbd
12372 root 8 0 812 192 188 S 0.0 0.0 0:00.21 smbd
12373 root 9 0 916 308 304 S 0.0 0.0 0:00.00 smbd
12407 root 9 0 1048 560 464 S 0.0 0.1 0:08.13 smbd
9944 root 9 0 1176 520 388 S 0.0 0.1 0:04.14 smbd
10483 nobody 9 0 412 212 208 S 0.0 0.0 0:00.00 vsftpd
10485 zevince 9 0 504 328 276 S 0.0 0.0 0:05.17 vsftpd
3802 root 9 0 92 44 40 S 0.0 0.0 0:00.00 getty
27965 root 9 0 2136 1780 1404 S 0.0 0.2 0:04.16 smbd
21984 mysql 9 0 32088 20m 2076 S 0.0 2.3 0:01.52 mysqld
21985 root 9 0 236 180 176 S 0.0 0.0 0:00.01 logger
[/code]

Vous avez surement un module dans apache2 qui fuit de la mémoire, quel plugin utilisez vous ? php ? autre ?

Vérifiez de ce coté la.

Sinon, dans apache 2, on peut paramétrer la durée de vie d’un thread, afin d’éviter, entre autre ces soucis.

(MaxRequestsPerChild)

A+

ah oui, y’a le module php… et il est assez fortement utilisé sur ce serveur…
quelques details sur les modules installés :

[quote]PHP Version 5.1.4-Debian-0.1~sarge1
et toutes ces extensions :
/etc/php5.1/apache2/conf.d/100mbstring.ini, /etc/php5.1/apache2/conf.d/200session.ini, /etc/php5.1/apache2/conf.d/300openssl.ini, /etc/php5.1/apache2/conf.d/500calendar.ini, /etc/php5.1/apache2/conf.d/500ctype.ini, /etc/php5.1/apache2/conf.d/500ftp.ini, /etc/php5.1/apache2/conf.d/500gd.ini, /etc/php5.1/apache2/conf.d/500mime-magic.ini, /etc/php5.1/apache2/conf.d/500ming.ini, /etc/php5.1/apache2/conf.d/500mysql.ini, /etc/php5.1/apache2/conf.d/500pgsql.ini, /etc/php5.1/apache2/conf.d/500tidy.ini,
/etc/php5.1/apache2/conf.d/500xsl.ini
[/quote]

et pour le MaxRequestsPerChild…
dans mon apache2.conf, j’ai trois references, une dans preform MPM,une dans pthread MPM et une dans perchild MPM … il faut specifier les trois ?
La pour le moment, ils sont a 0… une idee de valeur correcte ?
Merci