J'ai un serveur Ubuntu 8.04 qui exécute une base de données et un tas de serveurs d'applications Java. Sa configuration et son utilisation de la mémoire sont les suivantes:
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 chaque après-midi et est libéré quelque temps dans la nuit. La demande n'est pas la même tous les jours et démarre à des moments différents. C'est donc assez aléatoire, à l'exception de la frontière floue "après-midi".
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 baisse progressivement.
J'ai maintenant les questions suivantes:
- Comment savoir quels processus utilisent le swap?
- Pourquoi préfère-t-il échanger plutôt que de prendre de la mémoire dans le cache?
NSWAP
colonne (Ubuntu 16.04: /).Sur StackOverflow, il existe déjà une excellente réponse à votre première question ("Quel processus utilise réellement le swap?").
/programming//a/7180078/1442301
En bref, des outils comme
top
ouhtop
ne fournissent pas du tout d'informations précises sur l'utilisation du swap. Vous devriez plonger dans le/proc
dossier (dans le pseudo fichier/proc/$PID/smaps
) pour obtenir des informations plus précises.Le message mentionné ci-dessus contient un court script shell pour obtenir ces informations en écho d'une manière agréable.
la source
Avec
htop v1.01
, j'Enfoncé « S » pour ajouter laNSWAP
colonne au lieu de « F2 » (comme Gilles suggéré), puisColumns
>Available Columns
> etF5
de l' ajouter.la source
Sans interroger ni analyser les sorties d'outils tels que
vmstat
,free
ettop
, le meilleur endroit où chercher pourrait être les analyses croisées de l'utilisateur root ou d'autres utilisateurs du système. Si la charge générale sur le système augmente de manière fiable à un certain moment, il y a de fortes chances qu'il existe un processus dans cron qui crée le besoin de ressources. Sinon, vous pouvez toujours créer un utilitaire de journalisation du ghetto avec l'script
utilitaire, qui enregistre simplement tout ce qui va à la STDOUT.Donc, si j'avais besoin de faire un script jetable unique pour attraper la sortie pour une inspection ultérieure, dans un terminal, je taperais:
et alors
et dans un autre terminal
et alors
puis le lendemain matin, tuez les deux
script
invocations et faites correspondre la sortie detop
etfree
encore une fois, c'est une approche du ghetto, mais il semble que vous n'avez besoin que d'une seule
vous aimerez aussi lire le guide de swap ubuntu
la source