Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| linux:memory [17-09-2014 13:46] – edmc73 | linux: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 / | ||
| 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 | + | Pour quelle soit prise en compte lors du reboot de la machine, il faut créer un fichier |
| + | vi / | ||
| + | et mettez dans ce fichier | ||
| vm.swappiness=5 | vm.swappiness=5 | ||
| Ligne 22: | Ligne 29: | ||
| Vous pourrez suivre l' | Vous pourrez suivre l' | ||
| watch free | watch free | ||
| - | Vous verrez se vider la swap et se remplir la ram jusqu' | + | Vous verrez se vider la swap et se remplir la ram jusqu' |
| ===== 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=/ | + | |
| + | Rajouter de la swap grâce à un fichier de swap. Nous allons créer un fichier de 200Go | ||
| + | dd if=/ | ||
| Nous formatons ce fichier avec le système swap | Nous formatons ce fichier avec le système swap | ||
| - | mkswap -c / | + | mkswap -c file.swap |
| + | |||
| + | < | ||
| + | mkswap: avertissement : | ||
| + | mkswap: file.swap : | ||
| + | Configure l' | ||
| + | pas d' | ||
| + | </code> | ||
| + | Si vous voulez retrouver l' | ||
| + | swaplabel | ||
| + | |||
| 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 | + | swapon file.swap |
| Pour supprimer ce fichier de la swap | Pour supprimer ce fichier de la swap | ||
| - | swapoff /file.swap | + | swapoff |
| + | |||
| + | Ajouter dans / | ||
| + | / | ||
| + | |||
| + | (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' | ||
| + | #losetup -f | ||
| + | / | ||
| + | |||
| + | Créer un fichier dans la RAM | ||
| + | cd /dev/shm | ||
| + | dd if=/ | ||
| + | |||
| + | On associe le fichier au device loop | ||
| + | losetup /dev/loop0 / | ||
| + | |||
| + | On formate notre device | ||
| + | mkswap / | ||
| + | |||
| + | On monte le device en swap | ||
| + | swapon / | ||
| + | |||
| + | 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 > / | echo 3 > / | ||
| + | |||
| + | ===== Qui utilise le swap ===== | ||
| + | |||
| + | Ligne de commande à adapter si besoin | ||
| + | for file in / | ||
| + | Avec des tabulations comme séparateur | ||
| + | for file in / | ||
| + | |||
| + | Une variante qui permet de récupérer l'Uid et de le résoudre pour avoir le nom de l' | ||
| + | for file in / | ||
| + | |||
| + | ===== Quels fichiers en RAM Cache ===== | ||
| + | |||
| + | Utilisez ce script => https:// | ||
| + | |||
| + | **vmtouch** permet d' | ||
| + | |||
| + | |||
| + | Exemple, ici on voit que le fichier n'est pas en cache | ||
| + | |||
| + | < | ||
| + | [root@xt ~]# vmtouch -v / | ||
| + | / | ||
| + | [ ] 0/5 | ||
| + | |||
| + | | ||
| + | | ||
| + | Resident Pages: 0/5 0/20K 0% | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Maintenant, on peut le forcer à se mettre en cache | ||
| + | < | ||
| + | [root@xt ~]# vmtouch -vt / | ||
| + | / | ||
| + | [OOOOO] 5/5 | ||
| + | |||
| + | | ||
| + | | ||
| + | | ||
| + | | ||
| + | </ | ||
| + | |||
| + | On vérifie | ||
| + | < | ||
| + | [root@xt ~]# vmtouch -v / | ||
| + | / | ||
| + | [OOOOO] 5/5 | ||
| + | |||
| + | | ||
| + | | ||
| + | Resident Pages: 5/5 20K/ | ||
| + | | ||
| + | </ | ||
| + | |||
| + | Commande pour afficher la liste des fichiers d'un répertoire qui sont en RAM | ||
| + | vmtouch -v * | grep -B 1 " | ||
| + | Ou au contraire qui ne sont pas en RAM | ||
| + | vmtouch -v * | grep -B 1 " | ||
| + | |||
| + | |||
| + | |||