Produktkategorie
Kontaktiere uns
Hinzufügen: 5F, Gebäude 3A, No. 8 Xiyuanyi Straße, Westsee-Wissenschaftspark, Hangzhou, China
Tel .: + 86-571-87858811
Mob: +8613616520351
E-Mail: trade@qiyangtech.com
Nachrichten
Wie man Linux-Speicher manuell freigibt? Nehmen Sie I.mx6 als Beispiel
Jul 27, 2018

Erstens, die übliche Situation

Sprechen Sie zuerst den "freien" Befehl:

Zitate:

[root @ server ~] # free -m insgesamt verwendete freie geteilte Puffer im Cache Mem: 249 163 86 0 10 94 - / + Puffer / Cache: 58 191 Tausch: 511 0 511

darunter:

Zitate:

Gesamtspeichersumme, Anzahl der bereits belegten Speicher, freie Anzahl an freiem Speicher, Gesamtspeicherkapazität für mehrfach genutzte Prozesse, Größe der Pufferspeicherpuffer Cache und zwischengespeicherter Seitencache-Puffer / Cache-Speicher: Anzahl der belegten Speicherplätze - Puffer - Cache + Puffer / Cache frei + Puffer + Cache verfügbarer Speicher = freier Speicher + Puffer + Cache.

Mit dieser Grundlage können Sie wissen, dass ich jetzt für 163 MB verwendet, frei für die 86 MB, Puffer und im Cache waren 10 MB, 94 MB.

Dann sehen wir, ob es eine Änderung im Speicher gibt, wenn ich die Kopierdatei ausführe.

Zitate:

[root @ server ~] # cp -r / etc ~ / test / [root @ server ~] # frei -m insgesamt verwendete freie geteilte Puffer im Cache Mem: 249 244 4 0 8 174 - / + Puffer / Cache: 62 187 Swap : 511 0 511

Nachdem ich die Implementierung des Endes befohlen hatte, benutzt für 244MB, frei für die 4MB, Puffer für die 8MB, zwischengespeichert für die 174MB. Gott, alle wurden von Cached eatten. Sei nicht nervös, das soll die Effizienz der Dateilesepraxis verbessern.

Um die Effizienz des Plattenzugriffs zu verbessern, hat Linux ein durchdachtes Design entwickelt, zusätzlich zu dem Dentry-Cache (für VFS beschleunigte die Umwandlung des Dateipfad-Namens in Inode), nahm auch zwei Haupt-Cache-Weg: Puffer

Cache und Seitencache. Das erstere ist für das Lesen und Schreiben des Plattenblocks, das letztere für das Lesen und Schreiben des Dateiinode. Diese Cache sind effektiv gekürzt

E / A-System ruft Zeit auf (z. B. Lesen, Schreiben, Getdents).

Dann sagte jemand nach einer gewissen Zeit, Linux wird den Speicher automatisch freigeben. Warten Sie eine Weile, wir nutzen kostenlos, um es erneut zu versuchen, um zu sehen, ob es eine Freigabe gibt?

Zitate

[root @ server test] # frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Mem: 249 244 5 0 8 174 - / + Puffer / Cache: 61 188 Tausch: 511 0 511

Es scheint sich nichts zu ändern. (In der aktuellen Situation ist die Speicherverwaltung auch für Swap relevant)

Kann ich den Speicher manuell freigeben? Die Antwort ist ja!

Zweitens, geben Sie den Cache manuell frei

/ proc ist ein virtuelles Dateisystem, das wir lesen und schreiben können, um mit der Kernel-Entität zu kommunizieren. Mit anderen Worten, Sie können die Datei / proc ändern, um Anpassungen am aktuellen Kernelverhalten vorzunehmen. Dann können wir die / proc / sys / vm / drop_caches anpassen, um Speicher freizugeben. Die Operation ist wie folgt:

Referenz [root @ server test] # cat / proc / sys / vm / drop_caches 0 Zuerst wird der Wert von / proc / sys / vm / drop_caches auf 0 gesetzt. Zitat [root @ server test] # sync

Führen Sie den sync-Befehl manuell aus (Beschreibung: sync-Befehl zum Ausführen der sync-Unterroutine. Wenn Sie das System anhalten müssen, führen Sie den sync-Befehl aus, um die Dateisystemintegrität .sync zu gewährleisten

Befehl zum Schreiben aller ungeschriebenen Systempuffer auf den Datenträger, einschließlich geänderter i-Knoten, verzögerter Block-E / A und Lese-Schreib-Zuordnungsdateien

Zitat [root @ server test] # echo 3> / proc / sys / vm / drop_caches [root @ server test] # cat / proc / sys / vm / drop_caches 3 set / proc / sys / vm / drop_caches bis 3 quote [root @server test] # frei -m insgesamt genutzte freie gemeinsam genutzte Puffer im Cache Mem: 249 66 182 0 0 11 - / + Puffer / Cache: 55 194 Austausch: 511 0 511

Dann führen Sie den Befehl frei, finden Sie die aktuelle verwendet, um 66 MB, frei für die 182 MB, Puffer für 0 MB, zwischengespeichert auf 11 MB. Es ist also die effektive Freigabe von Puffer und Cache.

Die Verwendung von / proc / sys / vm / drop_caches wird im Folgenden beschrieben

Zitat / proc / sys / vm / drop_caches (seit Linux 2.6.16) Das Schreiben in diese Datei führt dazu, dass der Kernel saubere Caches, Dentries und Inodes aus dem Speicher löscht, wodurch der Speicher frei wird. Verwenden Sie zum Freigeben von Seitencache echo 1> / proc / sys / vm / drop_caches; Um Dentries und Inodes zu befreien, benutze echo 2> / proc / sys / vm / drop_caches; Um Seitencache, Dentries und Inodes freizugeben, verwenden Sie echo 3> / proc / sys / vm / drop_caches. Da dies eine nicht-destruktive Operation ist und schmutzige Objekte nicht freigegeben werden können, sollte der Benutzer zuerst die Synchronisierung ausführen.

Drittens, meine Meinung

Der obige Artikel hat eine mehr "intuitive" Antwort auf die Linux-Speichermanagementfragen von vielen Benutzern seit vielen Jahren gegeben, ich fühle mich ein bisschen wie die Kern-Entwickler-Teamkompromisse.

Ich habe Bedenken, ob ich diesen Wert verwenden oder den Wert für den Benutzer erwähnen muss:

Zitate

1, es kann von dem Mann gesehen werden, wird dieser Wert nach 2.6.16 Core-Version zur Verfügung gestellt, so dass die alte Version des Betriebssystems, wie Red Flag DC 5.0, Version vor RHEL 4.x hatte dies nicht ;

2, wenn der Systemspeicher für die Beobachtung ausreicht, habe ich immer noch die Verwendung von Swap und die Größe der beiden Werte si / so sehen;

Benutzer häufige Frage ist, warum frei so klein, ob Speicher nicht nach dem Schließen der Anwendung freigegeben wird?

Aber in der Tat, wir alle wissen, dass dies, weil Linux ist anders als Windows auf der Speicherverwaltung, kostenlos klein ist nicht, dass der Speicher nicht genug ist, sollten Sie den letzten Wert der zweiten Zeile von frei sehen:

Zitate

- / + Puffer / Cache: 58 191

Dies ist die Menge an Speicher, die dem System zur Verfügung steht.

Das eigentliche Projekt sagt uns, dass, wenn die Anwendung Probleme wie ein Speicherleck hat, Überlauf Probleme, kann es schneller aus der Verwendung des Swap zu beurteilen, aber das oben genannte von free ist schwieriger zu sehen.

Im Gegensatz dazu, zu diesem Zeitpunkt, wenn wir dem Benutzer sagen, das System einen Wert ändern, "kann" den Speicher freizugeben, wird kostenlos größer sein. Was würde der Benutzer denken? Denken sie nicht, dass das Betriebssystem "ein Problem hat"?

Also, da der Kern den Puffer oder Cache schnell löschen kann, ist es nicht schwierig zu tun (was von der obigen Operation gesehen werden kann), aber der Kern hat es nicht getan (der Standardwert ist 0), sollten wir nicht nur ändern es beiläufig.

Unter normalen Umständen wird die Anwendung stabil auf dem System betrieben, und der freie Wert bleibt auf einem stabilen Wert, obwohl er kleiner erscheinen mag.

Wenn nicht genügend Speicher vorhanden ist, kann die Anwendung nicht verfügbar Speicher, OOM-Fehler und andere Probleme, wir sollten mehr, um die Gründe für die Anwendung zu analysieren, wie die Anzahl der Benutzer ist zu groß, was zu Speichermangel führt, die Anwendung von Speicherüberlauf, sonst den Puffer löschen, um zu zwingen, die Größe des Freien freizugeben, deshalb kann es das Problem nur auf das temporäre Schild setzen.

Also, ich denke, abgesehen von dem Mangel an Speicher, es sei denn, es ist in der Software-Entwicklungsphase, müssen wir vorübergehend den Puffer löschen, um die Anwendung der Speichernutzung zu bestimmen; oder wenn die Anwendung keine Unterstützung mehr bietet, selbst wenn die Anwendung ein Problem für den Speicher hat, und den Fall nicht vermeiden kann, können wir nur das Timing-Löschen des Puffers berücksichtigen. (Leider laufen solche Anwendungen normalerweise auf der alten Betriebssystemversion, die obige Operation kann auch nicht gelöst werden).


QY-IMX6-V.jpg

Ein paar: Kostenlose

Der nächste streifen: WinCE VS Linux, wer gewinnt?

  • Newsletter
  • Produktkategorie
  • Kontaktiere uns
    Hinzufügen: 5F, Gebäude 3A, No. 8 Xiyuanyi Straße, Westsee-Wissenschaftspark, Hangzhou, China
    Tel .: + 86-571-87858811
    Mob: +8613616520351
    E-Mail: trade@qiyangtech.com
  • QR Code
  • Urheberrecht © Zhejiang Qiyang Intelligente Technologie Co., Ltd Alle Rechte vorbehalten.