Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 23/04/2010, à 12: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 cached

  PID   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, à 12: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, à 12:35)

Hors ligne

#3 Le 23/04/2010, à 12: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, à 13: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, à 14: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 :

Hoper a écrit :

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, à 14: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, à 14:13)

Hors ligne

#7 Le 23/04/2010, à 14: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, à 14: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