Outils pour utilisateurs

Outils du site


linux:memory (lu 88700 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édentesRévision précédente
Prochaine révision
Révision précédente
linux:memory [17-09-2014 13:46] edmc73linux:memory [23-10-2025 21:23] (Version actuelle) – [Créer une swap dans un fichier] edmc73
Ligne 3: Ligne 3:
  
 ===== Comportement de la swap ===== ===== Comportement de la swap =====
- 
-FIXME : Je pose des commandes en vrac,je détaillerai plus tard 
  
 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. 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.
Ligne 11: Ligne 9:
  
 Réduire cette valeur peut améliorer considérablement les performances du système. 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  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 rajouter la ligne suivante dans **/etc/sysctl.conf**+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   vm.swappiness=5
  
Ligne 22: Ligne 29:
 Vous pourrez suivre l'évolution dans un autre terminal soit avec la commande **htop** ou avec la commande suivante Vous pourrez suivre l'évolution dans un autre terminal soit avec la commande **htop** ou avec la commande suivante
   watch free   watch free
-Vous verrez se vider la swap et se remplir la ram jusqu'a plus soif :)+Vous verrez se vider la swap et se remplir la ram jusqu'a plus soif LOL
  
 ===== Gérer la swap ===== ===== Gérer la swap =====
Ligne 29: Ligne 36:
   swapon -s   swapon -s
  
-Rajouter de la swap grâce à un fichier de swap. Nous allons créer un fichier de 2Go +==== Créer une swap dans un fichier ==== 
-  dd if=/dev/zero of=/file.swap bs=1G count=2+ 
 +Rajouter de la swap grâce à un fichier de swap. Nous allons créer un fichier de 200Go 
 +  dd if=/dev/zero of=file.swap bs=1G count=200
 Nous formatons ce fichier avec le système swap Nous formatons ce fichier avec le système swap
-  mkswap -c /file.swap +  mkswap -c file.swap  
 + 
 +<code> 
 +mkswap: avertissement : la vérification des blocs défectueux du fichier d’espace d’échange n’est pas prise en charge : file.swap 
 +mkswap: file.swap : droits 0644 non sûrs, 0600 conseillées. 
 +Configure l'espace d'échange (swap) en version 1, taille = 200 GiB (214748360704 octets) 
 +pas d'étiquette, UUID=0261ab32-d95c-4040-9c7a-5a9ac4920b7a 
 +</code> 
 +Si vous voulez retrouver l'UUID, utilisez la commande suivante 
 +  swaplabel file.swap 
 + 
 Il est nécessaire de mettre les droits adéquates Il est nécessaire de mettre les droits adéquates
-  chmod -v 600 /file.swap+  chmod -v 600 file.swap
 On ajoute ce fichier à la swap de façon instantanée On ajoute ce fichier à la swap de façon instantanée
-  swapon /file.swap+  swapon file.swap
  
 Pour supprimer ce fichier de la swap Pour supprimer ce fichier de la swap
-  swapoff /file.swap+  swapoff file.swap 
 + 
 +Ajouter dans /etc/fstab 
 +  /var/cache/swap/file.swap none swap sw 0 0 
 + 
 +(A noter que mettre le UUID dans le fstab ne fonctionne pas car ce n'est pas une partition) 
 + 
 +==== 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
  
  
Ligne 47: Ligne 95:
 Commande pour vider le cache de la mémoire 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.1410961596.txt.gz · Dernière modification : de edmc73