Pages : 1
#1 Le 23/04/2010, à 11:16
- thoradeon
Comment libérer beaucoup de mémoire sur mon serveur ?
Salut à tous !
J'ai un petit problème, qui n'est pas gênant. Juste une connerie de geek.
Voilà : j'ai un serveur sur Ubuntu, avec 2Go de RAM. Dessus, a priori, il n'y a de gros qui tourne que Postfix + Apache + SSH (de ce que je suis au courant). Pourtant, je me retrouve avec 1,2Go d'occupé...
Deuxième problème : quand je fais un top, et que je vois les processus et leur mémoire allouée, je vois des trucs qui prennent en moyenne une trentaine de megas de RAM chacun, mais ça ne fais pas de quoi atteindre 1200 Mo (1200 Mo = 1,2 Go pour les très mauvais en maths qui passeraient par là).
Voilà mon top :
top - 12:05:07 up 36 days, 15:43, 1 , load average: 0.00, 0.00, 0.00
Tasks: 85 total, 2 running, 83 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.0%us, 0.0%sy, 0.0%ni, 99.0%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 2047172k total, 1189624k used, 857548k free, 20632k buffers
Swap: 1959920k total, 0k used, 1959920k free, 981156k cachedPID PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 20 0 4020 880 592 S 0.0 0.0 0:04.12 init
2 15 -5 0 0 0 S 0.0 0.0 0:00.00 kthreadd
3 RT -5 0 0 0 S 0.0 0.0 0:00.00 migration/0
4 15 -5 0 0 0 S 0.0 0.0 0:15.00 ksoftirqd/0
5 15 -5 0 0 0 S 0.0 0.0 2:19.62 events/0
6 15 -5 0 0 0 S 0.0 0.0 0:00.00 khelper
113 15 -5 0 0 0 S 0.0 0.0 0:19.60 kblockd/0
114 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid
115 15 -5 0 0 0 S 0.0 0.0 0:00.00 kacpi_notify
184 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata/0
185 15 -5 0 0 0 S 0.0 0.0 0:00.00 ata_aux
186 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksuspend_usbd
191 15 -5 0 0 0 S 0.0 0.0 0:00.00 khubd
194 15 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod
244 20 0 0 0 0 S 0.0 0.0 0:00.00 pdflush
245 20 0 0 0 0 S 0.0 0.0 0:58.67 pdflush
246 15 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0
247 15 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0
248 15 -5 0 0 0 S 0.0 0.0 0:00.00 nfsiod
249 15 -5 0 0 0 S 0.0 0.0 0:00.40 cifsoplockd
250 15 -5 0 0 0 S 0.0 0.0 0:00.98 cifsdnotifyd
252 15 -5 0 0 0 S 0.0 0.0 0:00.00 jfsIO
253 15 -5 0 0 0 S 0.0 0.0 0:00.00 jfsCommit
254 15 -5 0 0 0 S 0.0 0.0 0:00.00 jfsSync
255 15 -5 0 0 0 S 0.0 0.0 0:00.00 xfs_mru_cache
256 15 -5 0 0 0 S 0.0 0.0 0:03.42 xfslogd/0
257 15 -5 0 0 0 S 0.0 0.0 0:02.58 xfsdatad/0
972 15 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0
996 15 -5 0 0 0 S 0.0 0.0 0:00.00 exec-osm/0
1035 15 -5 0 0 0 S 0.0 0.0 0:00.00 kstriped
1037 15 -5 0 0 0 S 0.0 0.0 0:00.00 ksnapd
1038 15 -5 0 0 0 S 0.0 0.0 0:00.00 kondemand/0
1049 15 -5 0 0 0 S 0.0 0.0 0:00.00 rpciod/0
1055 15 -5 0 0 0 S 0.0 0.0 1:10.85 kjournald
1177 16 -4 16840 956 384 S 0.0 0.0 0:00.34 udevd
Bon, pour ceux qui demandent, j'ai bien essayé de faire un top > fichier, mais l'encodage ne semble pas être trouvable (ou alors, comme c'est une application qui se refresh, y'a des variables plutôt qu'autre chose). Pareil, en faisant h, on affiche l'aide, mais je n'arrive pas à trouver de quoi afficher l'intégralité (et de pouvoir scroller avec la barre espace ou autre).
Bref : ma question est : de ce que l'on voit, il ne semble pas apparaitre de processus prenant beaucoup de mémoire... comment savoir qui en prend beaucoup, alors ?
Merci d'avance à tous !
AbriCoCotier.fr : Blog où je propose 2-3 astuces informatiques et commente l'actualité avec une pointe de sel et de poivre...
Hors ligne
#2 Le 23/04/2010, à 11:34
- teg
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
ps -eo pmem,pid | sort -r
te donnera la liste des processes triés par taille en pourcentage d'occupation mémoire.
Pour identifier ce qu'est le process ensuite :
ps -eaf | grep <PID>
Dernière modification par teg (Le 23/04/2010, à 11:35)
Hors ligne
#3 Le 23/04/2010, à 11:45
- credenhill
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
hello
pour capturer top dans un fichier, option -b (batch) :
top -b -n 1
pour trier par % mémoire plutot que cpu
top
F puis n
Hors ligne
#4 Le 23/04/2010, à 12:42
- Hoper
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
Ce ne sont que les buffers qui occupent de la place... Bref, la ram n'est pas du tout "occupée" au sens ou tu l'entend. Pour comprendre :
free -m
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#5 Le 23/04/2010, à 13:03
- thoradeon
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
Merci à tous pour vos conseils ! J'ai testé, et effectivement, ça envoie ce que vous me dite.
Mais surtout :
Ce ne sont que les buffers qui occupent de la place... Bref, la ram n'est pas du tout "occupée" au sens ou tu l'entend. Pour comprendre :
free -m
J'avais pas vu, mais c'est vrai:
coucou:# free -m
total used free shared buffers cached
Mem: 1999 1163 835 0 20 958
-/+ buffers/cache: 185 1813
Swap: 1913 0 1913
Je croyais que el 185 représentait la quantité de buffers. En fait non ! C'est ce qu'il reste quand on a enlevé les buffers :-)
Par contre, ce que je ne comprend pas, c'est ce que c'est effectivement... Qu'est-ce qu'un buffer exactement ?
Sur Wikipédia (http://fr.wikipedia.org/wiki/Buffer ), ça dit que :
En informatique, buffer est le terme anglais équivalent à mémoire tampon, une zone de mémoire virtuelle ou de disque dur utilisée pour stocker temporairement des données, notamment entre deux processus ou deux pièces d'équipement ne fonctionnant pas à la même vitesse.
-> Le problème, c'est quelle est la différence entre ce qu'il y a en RAM (les 185Mo) et le buffer (les 1,2Go) : quelles sont ces données qui sont là ?
AbriCoCotier.fr : Blog où je propose 2-3 astuces informatiques et commente l'actualité avec une pointe de sel et de poivre...
Hors ligne
#6 Le 23/04/2010, à 13:11
- teg
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
Ce sont les données qui ont été chargées en mémoire à un certain moment puis qui ont été libérées car ne sont plus utilisées.
Elles sont gardées dans la mémoire si celle-ci n'est pas pleine ce qui permet de récupérer ces données si elles sont de nouveau à charger sans les transférer du disque dur à la mémoire.
ex : Le démarrage d'openoffice est "long" la première fois. Les données sont chargées en mémoire. Après fermeture d'openoffice les données sont "bufferisées". Le démarrage suivant d'openoffice est plus rapide car réutilise les données "bufferisées" présentes dans la mémoire.
Dernière modification par teg (Le 23/04/2010, à 13:13)
Hors ligne
#7 Le 23/04/2010, à 13:30
- Hoper
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
quelles sont ces données qui sont là ?
Ca peut être tout et n'importe quoi. Surtout du cache file système je pense (donc des fichiers qui ont étés lus, soit parce que c'était vraiment nécessaire, soit parce que l'OS à jugé que tu allait peut etre en avoir besoin).
Dans tout les cas la grosse différence c'est que ces 1,2 Go de ram ne sont pas du tout important. Si un programme demande une allocation mémoire, une partie de ces 1,2 Go pourra lui être immédiatement affecté. Alors que les 185 Mo eux sont vraiment utilisés par des programmes qui sont en train de tourner etc.
Mes tutos et coups de gueule :
http://hoper.dnsalias.net/atdc/
Mastodon: @hoper@framapiaf.org
Hors ligne
#8 Le 23/04/2010, à 13:54
- thoradeon
Re : Comment libérer beaucoup de mémoire sur mon serveur ?
Merci à tous pour vos réponses très complètes :-)
AbriCoCotier.fr : Blog où je propose 2-3 astuces informatiques et commente l'actualité avec une pointe de sel et de poivre...
Hors ligne