Catégorie de produit
Contactez nous
Ajouter: 5F, bâtiment 3A, n ° 8 Xiyuanyi Road, Parc scientifique de West Lake, Hangzhou, Chine
Tel: + 86-571-87858811
Mob: +8613616520351
E-mail: trade@qiyangtech.com
Nouvelles
Accueil > Nouvelles > Contenu
Comment libérer la mémoire Linux manuellement? Prenez I.mx6 comme exemple
Jul 27, 2018

Premièrement, la situation habituelle

Première commande "libre":

Citations

[root @ serveur ~] # libre -m total utilisé tampons partagés libres mis en cache Mem: 249 163 86 0 10 94 - / + tampons / cache: 58 191 Permuter: 511 0 511

parmi eux:

Citations

total de la mémoire totale, nombre de mémoire déjà utilisée, nombre libre de mémoire libre, quantité totale de mémoire des processus multiples partagés, taille du cache des buffers Cache et cache de la mémoire cache-mémoire tampon: le nombre de mémoire utilisé - buffers - mis en cache + tampons / cache libre + buffers + mémoire disponible mise en cache = mémoire libre + buffers + cache.

Avec cette base, vous pouvez savoir que je maintenant utilisé pour 163 Mo, libre pour les 86 Mo, tampon et mis en cache étaient 10 Mo, 94 Mo.

Alors voyons s'il y a un changement de mémoire si j'exécute le fichier de copie.

Citations

[racine @ serveur ~] # cp-r / etc ~ / test / [racine @ serveur ~] # libre -m total utilisé buffers partagés libres mis en cache Mem: 249 244 4 0 8 174 - / + buffers / cache: 62 187 Swap : 511 0 511

Après avoir commandé l'implémentation de la fin, utilisé pour 244 Mo, libre pour les 4 Mo, tampons pour les 8 Mo, mis en cache pour les 174 Mo. Dieu, tous ont été mangés en cachette. Ne soyez pas nerveux, c'est d'améliorer l'efficacité de la pratique de lecture de fichiers.

Afin d'améliorer l'efficacité de l'accès au disque, Linux a fait une conception élaborée, en plus du cache dentry (pour VFS, accélérer la conversion du nom de chemin d'accès du fichier en inode), a également pris deux voies principales: Buffer

Cache et cache de page. Le premier est pour la lecture et l'écriture de bloc de disque, ce dernier est pour l'inode de lecture et d'écriture de fichier. Ces Cache sont raccourcis efficacement

Le système d'E / S appelle l'heure (comme read, write, getdents).

Puis quelqu'un a dit après un certain temps, linux libérera automatiquement la mémoire utilisée. Attendez un peu, nous utilisons gratuitement pour réessayer de voir s'il y a une libération?

Citations

[root @ serveur test] # libre -m total utilisé tampons partagés libres mis en cache Mem: 249 244 5 0 8 174 - / + tampons / cache: 61 188 Permuter: 511 0 511

Il semble n'y avoir aucun changement. (dans la situation actuelle, la gestion de la mémoire est également pertinente pour Swap)

Puis-je libérer manuellement la mémoire? La réponse est oui!

Deuxièmement, libérer manuellement le cache

/ proc est un système de fichiers virtuel, nous pouvons le lire et l'écrire comme un moyen de communication avec l'entité du noyau. En d'autres termes, vous pouvez modifier le fichier / proc pour apporter des modifications au comportement actuel du noyau. Ensuite, nous pouvons ajuster le / proc / sys / vm / drop_caches pour libérer de la mémoire. L'opération est la suivante:

Référence [test root @ serveur] # cat / proc / sys / vm / drop_caches 0 D'abord, la valeur de / proc / sys / vm / drop_caches est 0 par défaut. Citation [root @ server test] # synchronisation

Exécutez manuellement la commande sync (Description: commande sync pour exécuter la sous-routine de synchronisation.Si vous devez arrêter le système, exécutez la commande sync pour vérifier l'intégrité du système de fichiers .sync

Commande pour écrire tous les tampons système non écrits sur le disque, y compris les nœuds i modifiés, les E / S de blocs retardés et les fichiers de mappage en lecture-écriture)

Citation [test racine @ serveur] # echo 3> / proc / sys / vm / drop_caches [test root @ serveur] # cat / proc / sys / vm / drop_caches 3 set / proc / sys / vm / drop_caches à 3 quote [racine @server test] # free -m total utilisé tampons partagés libres mis en cache Mem: 249 66 182 0 0 11 - / + tampons / cache: 55 194 Permuter: 511 0 511

Ensuite, exécutez la commande libre, vous trouverez le courant utilisé à 66 Mo, libre pour les 182 Mo, les tampons pour 0 Mo, mis en cache à 11 Mo. C'est donc la libération effective du tampon et du cache.

L'utilisation de / proc / sys / vm / drop_caches est décrite ci-dessous

Quote / proc / sys / vm / drop_caches (depuis Linux 2.6.16) En écrivant dans ce fichier, le noyau supprime les caches, les dénis et les inodes propres de la mémoire, ce qui libère la mémoire. Pour libérer pagecache, utilisez echo 1> / proc / sys / vm / drop_caches; pour libérer des dénis et des inodes, utilisez echo 2> / proc / sys / vm / drop_caches; Pour libérer pagecache, dentries et inodes, utilisez echo 3> / proc / sys / vm / drop_caches. Comme il s'agit d'une opération non destructive et que les objets sales ne peuvent pas être libérés, l'utilisateur doit d'abord exécuter la synchronisation.

Troisièmement, mon opinion

L'article ci-dessus a donné une réponse plus "intuitive" pour les questions de gestion de la mémoire Linux par de nombreux utilisateurs depuis de nombreuses années, je me sens un peu comme le compromis de l'équipe de développement de base.

J'ai des réserves quant à savoir si j'ai besoin d'utiliser cette valeur ou de mentionner la valeur à l'utilisateur:

Citations

1, il peut être vu de l'homme, cette valeur est fournie après la version de base 2.6.16, donc c'est l'ancienne version du système d'exploitation, comme le drapeau rouge DC 5.0, verison avant RHEL 4.x n'avait pas cette ;

2, si la mémoire du système est suffisante pour l'observation, j'ai toujours l'intention de voir l'utilisation de swap et la taille des deux valeurs si / so;

Question commune de l'utilisateur est, pourquoi gratuit si petit, si la mémoire n'est pas libérée après la fermeture de l'application?

Mais en fait, nous savons tous que c'est parce que Linux est différent de Windows sur la gestion de la mémoire, libre petit n'est pas que la mémoire ne suffit pas, vous devriez voir la dernière valeur de la deuxième ligne de libre:

Citations

- / + buffers / cache: 58 191

C'est la quantité de mémoire disponible pour le système.

Le projet actuel nous dit que si l'application a des problèmes comme une fuite de mémoire, des problèmes de débordement, il peut être plus rapide de juger de l'utilisation du swap, mais le ci-dessus de libre est plus difficile à voir.

Au contraire, à ce moment, si on dit à l'utilisateur de modifier le système d'une valeur, "peut" libérer la mémoire, le libre sera plus grand. Que penserait l'utilisateur? Ne pensent-ils pas que le système d'exploitation "a un problème"?

Donc, puisque le noyau peut rapidement effacer le tampon ou le cache, ce n'est pas difficile à faire (ce qui peut être vu de l'opération ci-dessus), mais le noyau ne l'a pas fait (la valeur par défaut est 0). ça par hasard.

Dans des circonstances normales, l'application fonctionne de manière stable sur le système et la valeur libre reste à une valeur stable, bien qu'elle puisse sembler plus petite.

Lorsque la mémoire est insuffisante, l'application ne peut pas obtenir la mémoire disponible, erreur OOM et d'autres problèmes, nous devrions peut-être plus d'analyser les raisons de l'application, comme le nombre d'utilisateurs est trop grand qui conduit à la pénurie de mémoire, l'application de débordement de la mémoire, sinon, effacer le tampon pour forcer à libérer la taille de la libre, par conséquent, il peut simplement mettre le problème sur le bouclier temporaire.

Donc, je pense, en excluant le manque de mémoire, à moins que ce soit dans la phase de développement logiciel, nous devons effacer temporairement le tampon pour déterminer l'application de l'utilisation de la mémoire; ou l'application ne fournit plus de support, même si l'application a un problème pour la mémoire, et ne peut pas éviter le cas, nous pourrions seulement considérer l'effacement de la mémoire tampon. (Malheureusement, ces applications fonctionnent généralement sur l'ancienne version du système d'exploitation, l'opération ci-dessus ne peut pas être résolue aussi).


QY-IMX6-V.jpg

  • Newsletter
  • Catégorie de produit
  • Contactez nous
    Ajouter: 5F, bâtiment 3A, n ° 8 Xiyuanyi Road, Parc scientifique de West Lake, Hangzhou, Chine
    Tel: + 86-571-87858811
    Mob: +8613616520351
    E-mail: trade@qiyangtech.com
  • QR Code
  • Copyright © Zhejiang Qiyang Intelligent Technology Co., Ltd Tous droits réservés.