J'ai un serveur Ubuntu 8.04 qui exécute une base de données et un groupe de serveurs d'applications Java. Sa configuration de la mémoire et son utilisation sont:
total used free shared buffers cached
Mem: 16456176 15930028 526148 0 81372 9674196
-/+ buffers/cache: 6174460 10281716
Swap: 1951888 366100 1585788
J'ai remarqué que le swap monte tous les après-midi et qu'il est publié de nuit. La demande n'est pas la même tous les jours et commence à des heures différentes. C'est donc assez aléatoire, à l'exception de la frontière floue "après-midi-nuit".
La charge sur cette machine varie au cours de la journée. Il est très bas entre minuit et 6h-7h, beaucoup plus élevé (mais stable) jusqu'à 18h-20h, puis diminue progressivement.
Maintenant, j'ai les questions suivantes:
Les schémas d'utilisation des échanges que vous décrivez ne paraissent pas surprenants. Ils sont compatibles avec certains processus en cours d'exécution ayant des pages rarement utilisées. Pendant la journée, en raison de la forte activité, les pages rarement utilisées sont presque toujours en swap. La nuit, il y a plus de place pour eux dans la RAM.
Vous pouvez avoir un aperçu de la quantité de mémoire utilisée par chaque processus dans top
ou htop
name__. Aucune utilisation d’échange d’échange par défaut, mais les deux peuvent être configurés sur (top: appuyez sur f
et activez la colonne SWAP
name__; htop: appuyez sur F2, ajoutez la colonne NSWAP
name__). Vous pouvez obtenir plus d'informations sur un processus particulier avec cat /proc/12345/vmstat
où 12345
est l'ID du processus. Notez que "la quantité d'échange utilisée par un programme" n'est pas complètement définie, certaines pages étant partagées par plusieurs processus.
Il existe deux principaux types de concurrents pour la RAM: la mémoire de processus (qui peut être remplacée) et les caches de disque (qui peuvent être relus à partir d’un fichier). Il n'y a aucune raison de toujours prioriser la mémoire de processus par rapport aux caches de disque: il est préférable de permuter une partie de la mémoire de processus rarement utilisée plutôt que de continuer à lire un fichier en mémoire encore et encore. Les chiffres que vous donnez, avec environ la moitié (disons entre 30% et 70%) de la mémoire consacrée aux caches de disque, sont typiques des systèmes disposant d'une quantité raisonnable de RAM pour les tâches qu'ils sont censés effectuer. .
Sans interrogation ni analyse des sorties d'outils tels que vmstat
name__, free
et top
name__, le meilleur endroit pour regarder pourrait être les crontabs de l'utilisateur racine ou d'autres utilisateurs du système. Si la charge générale du système augmente de manière fiable à un moment donné, il existe probablement un processus cron qui crée un besoin de ressources. Dans le cas contraire, vous pouvez toujours créer un utilitaire de journalisation dans les ghettos jetables avec l'utilitaire script
name__, qui enregistre simplement tout ce qui est transmis à STDOUT.
Donc, si j’avais besoin de faire un script jetable unique pour récupérer le résultat en vue d’une inspection ultérieure, je taperais dans un terminal:
script /tmp/free.txt
et alors
while (true); do date; free; sleep 30; done
et dans un autre terminal
script /tmp/top.txt
et alors
while (true); do date; top -n 1; sleep 30; done
et le lendemain matin, supprimez les deux invocations script
et faites correspondre le résultat de top
et free
name__
encore une fois c'est une approche ghetto mais ça sonne comme si vous n'aviez besoin que d'un seul coup
vous aimerez peut-être aussi lire le guide d'échange d'ubunt
Sur StackOverflow, il existe déjà une excellente réponse à votre première question ("Quel processus utilise réellement le swap?").
https://stackoverflow.com/a/718000078/1442301
En résumé, des outils tels que top
ou htop
ne fournissent aucune information précise sur l’utilisation de swap. Vous devriez plonger dans le dossier /proc
(dans le pseudo fichier /proc/$PID/smaps
) pour obtenir des informations plus précises.
Le post mentionné ci-dessus contient un court script Shell pour que cette information soit répercutée de manière agréable.