Linux-Speichermechanismus und manuelle Freigabe von Swap, Puffer und Cache

Freigeben: 2023-08-04 16:38:23
nach vorne
1915 Leute haben es durchsucht

Dieser Artikel stellt die Prinzipien und praktischen Vorgänge des Linux-Speichermechanismus, des virtuellen Speicheraustauschs, der Puffer-/Cache-Freigabe usw. vor.

1. Was ist der Speichermechanismus von Linux?

2. Wann begann Linux mit der Verwendung von virtuellem Speicher (Swap)?

3. Wie kann ich Speicher freigeben? 4. Wie kann ich den Swap freigeben?

1. Was ist der Speichermechanismus von Linux?

Wir wissen, dass das Lesen und Schreiben von Daten direkt aus dem physischen Speicher viel schneller ist als das Lesen und Schreiben von Daten von der Festplatte. Daher hoffen wir, dass das gesamte Lesen und Schreiben von Daten im Speicher erfolgt und der Speicher begrenzt ist führt zu den Konzepten des physischen Speichers und des virtuellen Speichers.

Physischer Speicher ist die von der Systemhardware bereitgestellte Speichergröße. Im Vergleich zum physischen Speicher gibt es unter Linux ein Konzept, um dem Mangel an physischem Speicher zu begegnen die Verwendung von Ein durch Speicherplatz virtualisierter logischer Speicher Der als virtueller Speicher verwendete Speicherplatz wird als Swap-Speicherplatz bezeichnet.

Als Erweiterung des physischen Speichers verwendet Linux den virtuellen Speicher der Swap-Partition. Genauer gesagt schreibt der Kernel die vorübergehend nicht verwendeten Speicherblockinformationen in den Swap-Bereich Wenn der Speicher freigegeben wird, kann dieser Speicher für andere Zwecke verwendet werden. Wenn der ursprüngliche Inhalt benötigt wird, werden die Informationen erneut aus dem Auslagerungsspeicher gelesen.

Die Speicherverwaltung von Linux verwendet einen Paging-Zugriffsmechanismus. Um sicherzustellen, dass der physische Speicher vollständig genutzt werden kann, tauscht der Kernel selten verwendete Datenblöcke im physischen Speicher zum richtigen Zeitpunkt automatisch in den virtuellen Speicher aus, während dies bei häufig verwendeten Datenblöcken der Fall ist werden zum richtigen Zeitpunkt automatisch in den virtuellen Speicher ausgelagert. Verwendete Informationen bleiben im physischen Speicher erhalten.

Um ein tiefes Verständnis des Linux-Speicherbetriebsmechanismus zu erlangen, müssen Sie die folgenden Aspekte kennen:

Das Linux-System führt von Zeit zu Zeit Seitenaustauschvorgänge durch, um so viel freien physischen Speicher wie möglich zu erhalten, auch wenn nichts vorhanden ist das Speicher benötigt, Linux Temporär ungenutzte Speicherseiten werden ebenfalls ausgelagert. Dies vermeidet die Wartezeit auf den Umtausch.

Der Seitenaustausch in Linux ist an Bedingungen geknüpft, wenn er nicht verwendet wird. Der Linux-Kernel tauscht nur einige selten verwendete Seitendateien in den virtuellen Speicher aus. Manchmal werden wir sehen Dieses Phänomen: Linux hat immer noch viel physischen Speicher, aber es wird auch viel Swap-Speicherplatz verwendet. Tatsächlich ist dies nicht überraschend. Wenn beispielsweise ein Prozess, der viel Speicher beansprucht, beim Ausführen viele Speicherressourcen verbrauchen muss, werden einige ungewöhnliche Auslagerungsdateien in den virtuellen Speicher ausgelagert, aber später beansprucht dieser Prozess Viele Speicherressourcen werden in den virtuellen Speicher ausgelagert. Wenn der Prozess endet und viel Speicher freigegeben wird, wird die gerade ausgelagerte Auslagerungsdatei nicht automatisch in den physischen Speicher des Systems ausgelagert Zu diesem Zeitpunkt ist viel Speicher verfügbar und der Auslagerungsraum wird ebenfalls verwendet. Das gerade erwähnte Phänomen ist aufgetreten. An diesem Punkt besteht kein Grund zur Sorge, Sie müssen nur wissen, was los ist.

Die Seiten im Auslagerungsbereich werden bei Verwendung zunächst in den physischen Speicher ausgelagert. Wenn zu diesem Zeitpunkt nicht genügend physischer Speicher für die Unterbringung dieser Seiten vorhanden ist, ist möglicherweise nicht genügend Speicherplatz vorhanden Diese Austauschseiten werden im virtuellen Speicher gespeichert und verursachen schließlich Probleme wie falsche Abstürze und Dienstanomalien. Obwohl Linux sich innerhalb einer bestimmten Zeitspanne von selbst wiederherstellen kann, ist das wiederhergestellte System grundsätzlich unbrauchbar.

Daher ist es sehr wichtig, die Nutzung des Linux-Speichers richtig zu planen und zu gestalten.

Wenn eine Anwendung im Linux-Betriebssystem Daten in einer Datei lesen muss, weist das Betriebssystem zunächst etwas Speicher zu und liest die Daten aus Wenn es notwendig ist, Daten in eine Datei zu schreiben, weist das Betriebssystem zunächst Speicher für den Empfang von Benutzerdaten zu und schreibt die Daten dann aus dem Speicher auf die Festplatte. Wenn jedoch eine große Datenmenge von der Festplatte in den Speicher gelesen oder vom Speicher auf die Festplatte geschrieben werden muss, wird die Lese- und Schreibleistung des Systems sehr gering, da unabhängig davon, ob Daten von der Festplatte gelesen werden Das Schreiben von Daten auf die Festplatte ist ein sehr langer Prozess, der Zeit und Ressourcen verbraucht. In diesem Fall hat Linux die Puffer und Cache-Mechanismen eingeführt.

Puffer und Cache sind Speicheroperationen, die zum Speichern von Dateien und Dateiattributinformationen verwendet werden, die vom System geöffnet wurden. Wenn das Betriebssystem bestimmte Dateien lesen muss, sucht es zunächst in den Puffern und Cache-Speicherbereichen . Wenn die erforderlichen Daten nicht gefunden werden, werden sie von der Festplatte gelesen. Durch Caching wird die Leistung des Betriebssystems erheblich verbessert. Der Inhalt von Puffern und zwischengespeicherten Puffern ist jedoch unterschiedlich.

Buffers wird zum Puffern von Blockgeräten verwendet. Es zeichnet nur die Metadaten des Dateisystems und der Verfolgung von In-Flight-Seiten auf, während Cached zum Puffern von Dateien verwendet wird. Einfacher ausgedrückt: Puffer werden hauptsächlich zum Speichern des Inhalts des Verzeichnisses, der Dateiattribute und -berechtigungen usw. verwendet. Und der Cache wird direkt verwendet, um sich die von uns geöffneten Dateien und Programme zu merken.

Um zu überprüfen, ob unsere Schlussfolgerung richtig ist, können Sie eine sehr große Datei über vi öffnen, um die Änderungen im Cache zu sehen, und dann die Datei erneut vi, um die Ähnlichkeiten und Unterschiede in der Geschwindigkeit beim zweimaligen Öffnen zu spüren und festzustellen, ob Es ist das zweite Mal, dass es deutlich schneller geöffnet wird als beim ersten Mal? Führen Sie dann den folgenden Befehl aus:

find / -name .conf, um zu sehen, ob sich der Wert der Puffer ändert, und führen Sie dann den Befehl „find“ wiederholt aus, um den Unterschied in der Anzeigegeschwindigkeit zwischen den beiden Zeiten zu sehen.

2. Wann begann Linux mit der Verwendung von virtuellem Speicher (Swap)?

[root@wenwen ~]# cat /proc/sys/vm/swappiness
60
Nach dem Login kopieren

Die oben genannten 60 bedeuten, dass Swap verwendet wird, wenn 40 % des physischen Speichers verwendet werden (siehe Netzwerkinformationen: Wenn der verbleibende physische Speicher weniger als 40 % (40 = 100-60) beträgt, wird der Swap verwendet Wenn swappiness=0, bedeutet dies, dass der physische Speicher maximal genutzt wird, und wenn swappiness=100, bedeutet dies, dass die Swap-Partition aktiv genutzt wird und die Daten auf der Der Speicher wird rechtzeitig in den Auslagerungsbereich verschoben.

Je größer der Wert, desto wahrscheinlicher ist es, dass Sie Swap verwenden. Es kann auf 0 gesetzt werden, was die Verwendung von Swap nicht verbietet, sondern nur die Möglichkeit der Verwendung von Swap minimiert.

通常情况下:swap分区设置建议是内存的两倍 (内存小于等于4G时),如果内存大于4G,swap只要比内存大就行。另外尽量的将swappiness调低,这样系统的性能会更好。

B.修改swappiness参数

临时性修改:
[root@wenwen ~]# sysctl vm.swappiness=10
vm.swappiness = 10
[root@wenwen ~]# cat /proc/sys/vm/swappiness
10
Nach dem Login kopieren

永久性修改:

[root@wenwen ~]# vim /etc/sysctl.conf
加入参数:
vm.swappiness = 35
然后在直接:
[root@wenwen ~]# sysctl -p /etc/sysctl.conf
查看是否生效:
cat /proc/sys/vm/swappiness
35
Nach dem Login kopieren

立即生效,重启也可以生效。

三、怎么释放内存?

一般系统是不会自动释放内存的关键的配置文件/proc/sys/vm/drop_caches。这个文件中记录了缓存释放的参数,默认值为0,也就是不释放缓存。他的值可以为0~3之间的任意数字,代表着不同的含义:

0 – 不释放1 – 释放页缓存2 – 释放dentries和inodes3 – 释放所有缓存

实操:

Linux-Speichermechanismus und manuelle Freigabe von Swap, Puffer und Cache

很明显多出来很多空闲的内存了吧

4. Wie tausche ich aus?

Voraussetzung: Stellen Sie zunächst sicher, dass der verbleibende Speicher größer oder gleich der Swap-Nutzung ist, sonst stürzt es ab! Gemäß dem Speichermechanismus werden nach der Freigabe der Swap-Partition alle in der Swap-Partition gespeicherten Dateien in den physischen Speicher übertragen. Das Freigeben von Swap erfolgt normalerweise durch erneutes Mounten der Swap-Partition.

a. Überprüfen Sie, wo die aktuelle Swap-Partition gemountet ist. b. Fahren Sie diese Partition herunter. c. Überprüfen Sie, ob die Swap-Partition heruntergefahren ist. f

Linux-Speichermechanismus und manuelle Freigabe von Swap, Puffer und Cache

Das obige ist der detaillierte Inhalt vonLinux-Speichermechanismus und manuelle Freigabe von Swap, Puffer und Cache. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:Linux中文社区
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!