Free ist in Linux ein integrierter Befehl zum Überprüfen des Speichernutzungsstatus. Er kann die Nutzung des physischen Systemspeichers, des virtuellen Speichers (Swap-Partition), des gemeinsam genutzten Speichers und des Systemcaches anzeigen. "; free command Die Ausgabe ist dem Speicherteil des top-Befehls sehr ähnlich.
Die Betriebsumgebung dieses Tutorials: Linux7.3-System, Dell G3-Computer.
Free-Befehl wird verwendet, um den Systemspeicherstatus anzuzeigen, einschließlich der Nutzung des physischen Systemspeichers, des virtuellen Speichers (Swap-Swap-Partition), des gemeinsam genutzten Speichers und des Systemcaches sowie seiner Ausgabe ist das gleiche wie der oberste Befehl. Der Speicherteil ist sehr ähnlich. Das Grundformat des
free-Befehls ist wie folgt:
# free [选项]
Tabelle 1 listet die häufig verwendeten Optionen dieses Befehls und ihre jeweilige Bedeutung auf.
Option | Bedeutung |
-b | Zeigt die Speichernutzung in Byte (Byte) an. |
-k | Zeigt die Speichernutzung in KB an. Diese Option ist die Standardoption des kostenlosen Befehls. |
-m | Zeigt die Speichernutzung in MB an. |
-g | Zeigt die Speichernutzung in GB an. |
-t | Geben Sie im Endergebnis der Ausgabe die Gesamtmenge an Speicher und Swap-Partition aus. |
-o | Zeigen Sie die Systempufferspalte nicht an. |
-s Intervall Sekunden | Zeigen Sie weiterhin die Speichernutzung gemäß dem angegebenen Intervall an. |
free 命令可以显示系统中剩余及已用的物理内存和交换内存,以及共享内存和被核心使用的缓冲区。
如果加上 -h 选项,输出的结果会友好很多:
有时我们需要持续的观察内存的状况,此时可以使用 -s 选项并指定间隔的秒数:
$ free -h -s 3
Der obige Befehl gibt die Speichernutzung alle 3 Sekunden aus, bis Sie Strg + C drücken.
Da der Free-Befehl selbst relativ einfach ist, liegt der Schwerpunkt dieses Artikels darauf, wie man die aktuelle Speichernutzung des Systems mithilfe des Free-Befehls versteht.
Lassen Sie uns zunächst den Inhalt der Ausgabe erklären:
Mem Die zweite Zeile (die zweite Zeile) ist die Speichernutzung. Die Zeile
Swap (die dritte Zeile) ist die Nutzung des Swap-Speicherplatzes. Die Spalte
total zeigt den insgesamt verfügbaren physischen Speicher und die Swap-Space-Größe des Systems an. Die
used-Spalten zeigen den verwendeten physischen Speicher und Swap-Speicherplatz. Die Spalte
frei zeigt, wie viel physischer Speicher und Swap-Speicher zur Nutzung verfügbar ist. Die Spalte
shared zeigt die Größe des gemeinsam genutzten physischen Speichers. Die Spalte
buff/cache zeigt die physische Speichergröße an, die von Puffer und Cache verwendet wird. Die Spalte
verfügbar zeigt die Menge des physischen Speichers an, der auch von Anwendungen genutzt werden kann.
Ich denke, die obige Ausgabe kann uns erst dann helfen, den Speicherstatus des Systems zu verstehen, wenn wir einige Grundkonzepte verstanden haben.
Lassen Sie mich zunächst eine Frage stellen: Puffer und Cache sollten zwei Arten von Speicher sein, aber warum fügt der Befehl free sie zusammen? Die Beantwortung dieser Frage erfordert einige Vorbereitung. Lassen Sie uns zunächst die Bedeutung von Puffer und Cache klären.
Puffer Im Betriebssystem bezieht es sich auf den Puffercache, der auf Chinesisch im Allgemeinen als „Puffer“ übersetzt wird. Um Puffer zu verstehen, müssen zwei weitere Konzepte verstanden werden: „Sektor“ und "Stück". Ein Sektor ist die kleinste Adressierungseinheit eines Geräts, auch „Hardsektor“ oder „Geräteblock“ genannt. Block ist die kleinste Adressierungseinheit des Dateisystems im Betriebssystem, auch „Dateiblock“ oder „E/A“ genannt „Block“. Jeder Block enthält einen oder mehrere Sektoren, kann jedoch nicht größer als eine Seite sein. Wenn ein Block in den Speicher geladen wird, wird er in einem Pufferbereich gespeichert entspricht einem Block, der der Darstellung eines Plattenblocks im Speicher entspricht (das Bild unten stammt aus dem Internet):
Beachten Sie, dass der Puffercache nur das Konzept von Blöcken und keinen Dateien hat .Konzept, es verschiebt einfach die Blöcke auf der Festplatte direkt in den Speicher, ohne sich darum zu kümmern, welches Format die Datei im Block gespeichert ist „Seiten-Cache“ auf Chinesisch. „Der Seiten-Cache ist ein vom Kernel implementierter Festplatten-Cache. Er wird hauptsächlich verwendet, um E/A-Vorgänge auf der Festplatte zu reduzieren. Insbesondere wird der Zugriff auf die Festplatte durch Caching in Zugriff auf die Festplatte umgewandelt Die Daten auf der Festplatte werden in den physischen Speicher übertragen. Der Seiten-Cache speichert Speicherseiten, die aus dem Lesen und Schreiben von gewöhnlichen Dateien, Blockgerätedateien (dies bezieht sich auf den Puffer-Cache) stammen.
Seitencache. Wir können den Cache gewöhnlicher Dateien wie folgt verstehen: Wenn der Kernel eine Datei lesen möchte (z. B /etc/hosts) wird zunächst geprüft, ob sich die Daten dieser Datei bereits im Seitencache befinden. Wenn ja, geben Sie den Zugriff auf die Festplatte auf und lesen Sie direkt aus dem Speicher. Dieses Verhalten wird als Cache-Treffer bezeichnet. Wenn sich die Daten nicht im Cache befinden, handelt es sich um einen Cache-Fehler und der Kernel plant den Block. E/A-Operationen lesen Daten von der Festplatte. Der Kernel legt die gelesenen Daten dann im Seitencache ab. Dieser Cache zielt auf Dateien ab, die vom Dateisystem erkannt werden (z. B. /etc/hosts).Der Cache der Blockgerätedateien im Seitencache ist der Puffercache, den wir zuvor eingeführt haben. Weil einzelne Festplattenblöcke über den Puffer auch im Seitencache gespeichert werden (der Puffer wird letztendlich vom Seitencache gehostet).
An diesem Punkt hätten wir es herausfinden sollen: Ob es sich um einen Puffer oder einen Seitencache handelt, sie werden auf die gleiche Weise implementiert. Der Puffer ist lediglich ein konzeptionell spezieller Seitencache.
Warum dann
Heißt der kostenlose Befehl nicht direkt „cache“ statt „buff/cache“? Dies liegt daran, dass Puffer- und Seitencache-Implementierungen nicht grundsätzlich einheitlich sind. unter Linux
Kernel 2.4
Nur dann können sie vereint werden. In früheren Kerneln gab es zwei separate Festplatten-Caches: den Seiten-Cache und den Puffer-Cache. Ersteres speichert Seiten und Letzteres speichert Puffer. Sobald Sie die Geschichte kennen, spielen die Namen der Spalten in der Ausgabe möglicherweise keine Rolle mehr.
在 free 命令的输出中,有一个 free 列,同时还有一个 available 列。这二者到底有何区别?
free
是真正尚未被使用的物理内存数量。至于 available 就比较有意思了,它是从应用程序的角度看到的可用内存数量。Linux
内核为了提升磁盘操作的性能,会消耗一部分内存去缓存磁盘数据,就是我们介绍的 buffer 和 cache。所以对于内核来说,buffer 和
cache 都属于已经被使用的内存。当应用程序需要内存时,如果没有足够的 free 内存可以用,内核就会从 buffer 和 cache
中回收内存来满足应用程序的请求。所以从应用程序的角度来说,available = free + buffer + cache。请注意,这只是一个很理想的计算方式,实际中的数据往往有较大的误差。
swap space 是磁盘上的一块区域,可以是一个分区,也可以是一个文件。所以具体的实现可以是 swap 分区也可以是 swap 文件。当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,这就是常说的换出和换入。交换空间可以在一定程度上缓解内存不足的情况,但是它需要读写磁盘数据,所以性能不是很高。
现在的机器一般都不太缺内存,如果系统默认还是使用了 swap 是不是会拖累系统的性能?理论上是的,但实际上可能性并不是很大。并且内核提供了一个叫做 swappiness 的参数,用于配置需要将内存中不常用的数据移到 swap 中去的紧迫程度。这个参数的取值范围是 0~100,0 告诉内核尽可能的不要将内存数据移到 swap 中,也即只有在迫不得已的情况下才这么做,而 100 告诉内核只要有可能,尽量的将内存中不常访问的数据移到 swap 中。在 ubuntu 系统中,swappiness 的默认值是 60。如果我们觉着内存充足,可以在 /etc/sysctl.conf 文件中设置 swappiness:
vm.swappiness=10
如果系统的内存不足,则需要根据物理内存的大小来设置交换空间的大小。具体的策略网上有很丰富的资料,这里笔者不再赘述。
其实 free 命令中的信息都来自于 /proc/meminfo 文件。/proc/meminfo 文件包含了更多更原始的信息,只是看起来不太直观:
$ cat /proc/meminfo
有兴趣的同学可以直接查看这个文件。
free 命令是一个既简单又复杂的命令。简单是因为这个命令的参数少,输出结果清晰。说它复杂则是因为它背后是比较晦涩的操作系统中的概念,如果不清楚这些概念,即便看了 free 命令的输出也 get 不到多少有价值的信息。
相关推荐:《Linux视频教程》
Das obige ist der detaillierte Inhalt vonWas ist unter Linux kostenlos?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!