Outils pour utilisateurs

Outils du site


linux:memory (lu 59216 fois)

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
linux:memory [17-09-2014 11:56]
edmc73
linux:memory [19-08-2020 14:54] (Version actuelle)
edmc73 [Quels fichiers en RAM Cache]
Ligne 1: Ligne 1:
 ====== Mémoire, RAM, SWAP ====== ====== Mémoire, RAM, SWAP ======
  
-FIXME : Je pose des commandes en vrac,je détaillerai plus tard 
  
 +===== Comportement de la swap =====
 +
 +La variable swappiness permet de faire varier l’utilisation de la mémoire vive par rapport à la swap. Par défaut, cette variable est fixée à 60 sur une échelle qui va de 0 à 100.
 +
 +Plus cette valeur est élevée plus le système va avoir tendance à swapper au détriment de l’utilisation de la mémoire vive.
 +
 +Réduire cette valeur peut améliorer considérablement les performances du système.
 +
 +  * vm.swappiness = 0 – Linux utilisera le HD en dernière limite pour éviter un manque de RAM.
 +  * vm.swappiness = 60 – Valeur par défaut de Linux : à partir de 40% d’occupation de Ram, le noyau écrit sur le disque.
 +  * vm.swappiness = 100 – tous les accès se font en écriture dans la SWAP.
 +
 +Pour vérifier la valeur actuelle
 +  cat /proc/sys/vm/swappiness
 +
 +Dans mon cas j'ai décidé de mettre swappiness à , la commande suivante applique cette valeur instantanément 
   sysctl -w vm.swappiness=5   sysctl -w vm.swappiness=5
 +Pour quelle soit prise en compte lors du reboot de la machine, il faut créer un fichier dans **/etc/sysctl.d**
 +  vi /etc/sysctl.d/swappiness.conf
 +et mettez dans ce fichier
 +  vm.swappiness=5
  
 +Afin de décharger le contenu de la swap dans votre ram, il faut désactiver la swap puis la réactiver avec la commande suivante
   swapoff -av && swapon -av   swapoff -av && swapon -av
  
 +Vous pourrez suivre l'évolution dans un autre terminal soit avec la commande **htop** ou avec la commande suivante
 +  watch free
 +Vous verrez se vider la swap et se remplir la ram jusqu'a plus soif LOL
 +
 +===== Gérer la swap =====
 +
 +Pour afficher la swap en cours
 +  swapon -s
 +
 +==== Créer une swap dans un fichier ====
 +
 +Rajouter de la swap grâce à un fichier de swap. Nous allons créer un fichier de 2Go
 +  dd if=/dev/zero of=/file.swap bs=1G count=2
 +Nous formatons ce fichier avec le système swap
 +  mkswap -c /file.swap 
 +Il est nécessaire de mettre les droits adéquates
 +  chmod -v 600 /file.swap
 +On ajoute ce fichier à la swap de façon instantanée
 +  swapon /file.swap
 +
 +Pour supprimer ce fichier de la swap
 +  swapoff /file.swap
 +
 +==== Créer une swap en RAM ====
 +Ca peut sembler bizarre mais on peut utiliser la RAM pour y stocker un fichier de swap.
 +
 +Tout d'abord, vérifier le device loop disponible
 +  #losetup -f
 +  /dev/loop0
 +  
 +Créer un fichier dans la RAM
 +  cd /dev/shm
 +  dd if=/dev/zero of=/dev/shm/file.swap bs=1024 count=4096000
 +
 +On associe le fichier au device loop
 +  losetup /dev/loop0 /dev/shm/file.swap
 +
 +On formate notre device
 +  mkswap /dev/loop0
 +
 +On monte le device en swap
 +  swapon /dev/loop0
 +
 +Pour vérifier
 +  swapon -s
 +
 +
 +
 +===== Cache =====
 +
 +Commande pour vider le cache de la mémoire
   echo 3 > /proc/sys/vm/drop_caches   echo 3 > /proc/sys/vm/drop_caches
 +
 +===== Qui utilise le swap =====
 +
 +Ligne de commande à adapter si besoin
 +  for file in /proc/*/status ; do awk '/^(VmSwap|Pid|Name)/{printf "%30s%s",$2,$3}END{ print ""}' $file; done | sort -k3 -h
 +Avec des tabulations comme séparateur
 +  for file in /proc/*/status ; do awk '/^(VmSwap|Pid|Name)/{printf $2 "" $3 "\t"}END{ print ""}' $file; done | sort -t$'\t' -k3 -h
 +
 +Une variante qui permet de récupérer l'Uid et de le résoudre pour avoir le nom de l'utilisateur
 +  for file in /proc/*/status ; do awk '/^(VmSwap|Uid|Pid|Name)/{if($1=="Uid:"){ system("echo -n $(id -nu " $2")"); printf "\t";} else printf $2 "" $3 "\t"}END{ print ""}' $file; done | sort -t$'\t' -k4 -h
 +
 +===== Quels fichiers en RAM Cache =====
 +
 +Utilisez ce script => https://github.com/hoytech/vmtouch
 +
 +**vmtouch** permet d'afficher si un fichier ou plusieurs sont stocké en ram. Il permet aussi de forcer un fichier à se mettre en ram plus tout un tas d'options => https://github.com/hoytech/vmtouch/blob/master/vmtouch.pod
 +
 +
 +Exemple, ici on voit que le fichier n'est pas en cache
 +
 +<code>
 +[root@xt ~]# vmtouch -v /usr/local/var/orca/procallator.cfg
 +/usr/local/var/orca/procallator.cfg
 +[     ] 0/5
 +
 +           Files: 1
 +     Directories: 0
 +  Resident Pages: 0/5  0/20K  0%
 +         Elapsed: 0.000215 seconds
 +</code>
 +
 +Maintenant, on peut le forcer à se mettre en cache
 +<code>
 +[root@xt ~]# vmtouch -vt /usr/local/var/orca/procallator.cfg
 +/usr/local/var/orca/procallator.cfg
 +[OOOOO] 5/5
 +
 +           Files: 1
 +     Directories: 0
 +   Touched Pages: 5 (20K)
 +         Elapsed: 0.005313 seconds
 +</code>
 +
 +On vérifie
 +<code>
 +[root@xt ~]# vmtouch -v /usr/local/var/orca/procallator.cfg
 +/usr/local/var/orca/procallator.cfg
 +[OOOOO] 5/5
 +
 +           Files: 1
 +     Directories: 0
 +  Resident Pages: 5/5  20K/20K  100%
 +         Elapsed: 0.000241 seconds
 +</code>
 +
 +Commande pour afficher la liste des fichiers d'un répertoire qui sont en RAM
 +  vmtouch -v * | grep -B 1 "^.\[.*[^ 0]/"
 +Ou au contraire qui ne sont pas en RAM
 +  vmtouch -v * | grep -B 1 "^.\[.* 0/"
 +
 +
 +
linux/memory.1410947796.txt.gz · Dernière modification: 17-09-2014 11:56 de edmc73