J'ai parcouru cet article , qui explique différentes méthodes pour vérifier votre utilisation de la RAM. Cependant, je ne peux pas concilier les différentes méthodes et je ne sais pas laquelle est correcte.
Lors de ma première connexion, je suis accueilli avec un écran comme celui-ci:
System information as of Sun Apr 28 21:46:58 UTC 2013
System load: 0.0 Processes: 76
Usage of /: 15.6% of 7.87GB Users logged in: 1
Memory usage: 41% IP address for eth0:
Swap usage: 0%
Cela me suggère que j'utilise 41% de ma RAM, ce qui semble assez élevé car le serveur ne fait pas grand-chose. Ou ce nombre fait-il référence à autre chose que de la RAM?
J'essaye ensuite la free -m
méthode:
ubuntu@ip-:~$ free -m
total used free shared buffers cached
Mem: 590 513 76 0 67 315
-/+ buffers/cache: 130 459
Swap: 0 0 0
Selon le graphique explicatif de l'article, cela implique que j'ai 130 Mo de RAM utilisée et 459 Mo de RAM libre, ce qui suggère que j'utilise environ 22% de ma RAM.
Ensuite, je cours top
:
top - 22:14:48 up 195 days, 21:30, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 77 total, 1 running, 76 sleeping, 0 stopped, 0 zombie
Cpu(s): 1.3%us, 0.3%sy, 0.0%ni, 97.7%id, 0.7%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 604376k total, 525692k used, 78684k free, 69124k buffers
Swap: 0k total, 0k used, 0k free, 322740k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 24332 1864 976 S 0.0 0.3 0:08.75 init
2 root 20 0 0 0 0 S 0.0 0.0 0:00.00 kthreadd
C'est le plus déroutant, car le résumé me montre en utilisant 525MG sur 604M au total, et pourtant quand est-ce que j'utilise la commande interactive "m" pour trier par mémoire supérieure le processus supérieur n'utilise que 0,3% de la mémoire ???
Enfin, la ps
commande semble également montrer très peu d'utilisation de la mémoire:
root@ip-:/home/ubuntu# ps -o command,rss
COMMAND RSS
ps -o command,rss 788
sudo su root 1764
su root 1404
bash 2132
J'aimerais que quelqu'un corrige les malentendus que j'ai qui créent ces conflits apparents.
Merci!
EDIT pour Rahul
Sortie de cat /proc/meminfo
:
MemTotal: 604376 kB
MemFree: 157564 kB
Buffers: 49640 kB
Cached: 231376 kB
SwapCached: 0 kB
Active: 290040 kB
Inactive: 97772 kB
Active(anon): 107672 kB
Inactive(anon): 4844 kB
Active(file): 182368 kB
Inactive(file): 92928 kB
Unevictable: 0 kB
Mlocked: 0 kB
SwapTotal: 0 kB
SwapFree: 0 kB
Dirty: 52 kB
Writeback: 0 kB
AnonPages: 106836 kB
Mapped: 22920 kB
Shmem: 5712 kB
Slab: 42032 kB
SReclaimable: 34016 kB
SUnreclaim: 8016 kB
KernelStack: 688 kB
PageTables: 3584 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
WritebackTmp: 0 kB
CommitLimit: 302188 kB
Committed_AS: 242768 kB
VmallocTotal: 34359738367 kB
VmallocUsed: 7152 kB
VmallocChunk: 34359729008 kB
HardwareCorrupted: 0 kB
AnonHugePages: 0 kB
HugePages_Total: 0
HugePages_Free: 0
HugePages_Rsvd: 0
HugePages_Surp: 0
Hugepagesize: 2048 kB
DirectMap4k: 637952 kB
DirectMap2M: 0 kB
cat /proc/meminfo
ps ax -o rss | awk '{ sum+=$1} END {print sum}'
tout à l'heure et 153156.Réponses:
Vous avez juste besoin de comprendre le concept de mémoire
Selon votre sortie de / proc / meminfo, il vous suffit de noter ci-dessous les choses:
Tampons : - Un tampon est quelque chose qui n'a pas encore été "écrit" sur le disque. Il représente la quantité de RAM dédiée au cache du disque dur. "En cache" est similaire à "Tampons", mais cette fois, il met en cache les pages de la lecture de fichiers
En cache : - Un cache est quelque chose qui a été "lu" sur le disque et stocké pour une utilisation ultérieure. Généralement, vous pouvez considérer la zone de cache comme une autre RAM "libre" car elle sera réduite progressivement si l'application demande plus de mémoire.
Il suffit de comprendre que les "tampons" et "mis en cache" représentent la taille du cache système. Ils augmentent ou rétrécissent dynamiquement comme demandé par le mécanisme interne du noyau Linux.
chez Webhosting, ils font un cache clair en utilisant ci-dessous cmd: (principalement configuré en cron):
Lien de citation
MODIFIER pour une exigence supplémentaire, c.-à-d. Par utilisation de la mémoire utilisateur
Veuillez vérifier avec le script ci-dessus et faites-moi savoir s'il s'affiche correctement ou non.
la source
free -m
qu'il ne fournit pas un moyen d'afficher la mémoire utilisée par utilisateur, quel est un moyen précis de déterminer la quantité réelle de RAM consommée par un utilisateur particulier? Cela se produit lors de la surveillance de votre propre utilisation de la mémoire sur un serveur partagé, par exemple.Bonne réponse @RahulPatil.
Un autre point à considérer à propos de ps ou top est le suivant
Via ibm / developerworks / linux_memory
Étant donné que votre question se réfère à un serveur sans tête - je ne sais pas combien de doubles rapports top ou ps auront réellement.
la source
Je crains que nous ne passions à côté de l'évidence, car c'est un "bien sûr" pour la plupart d'entre nous.
Jonah, pardonnez-moi si je me trompe, mais vos questions semblent comme si vous n'aviez pas réalisé que toutes ces valeurs, l'utilisation du processeur en particulier, varieront normalement beaucoup d'une seconde à l'autre.
L'utilisation du processeur peut passer de chiffres uniques à 100% instantanément au démarrage d'un nouveau processus, mais rapidement (espérons-le) retomber dans la plage inférieure à 50%.
L'utilisation de la mémoire change plus lentement mais là, Linux essaie d'utiliser la mémoire non utilisée en exécutant des processus pour "mettre en cache" les accès au disque. Par exemple, il essaie de prédire ce qui devra être lu à partir du disque suivant, comme peut-être le reste d'un gros fichier après la lecture d'une partie, et de le précharger dans le cache. Certaines des valeurs d'utilisation de la mémoire incluent à la fois la mémoire utilisée par les processus ainsi que la mémoire utilisée pour la mise en cache. Sur un système qui fonctionne depuis un certain temps, les deux combinés seront probablement de 80 à 90% ou plus.
Considérez également que le processus que vous exécutez pour afficher l'utilisation, par exemple
top
, utilise également le processeur et la mémoire. Si vous avez écrit un script avec une boucle pour signaler l'utilisation du processeur en continu, il afficherait presque toujours 100% car l'acte de rapporter l'utilisation lui-même (sans quelquessleep
retards) utilise tout le processeur.la source