Eine der Antworten auf Benötige ich Swap-Speicherplatz, wenn ich mehr als genug RAM habe? Ich habe mich gefragt, ob es einen Zusammenhang zwischen der Speicherfragmentierung gibt, gemessen an cat /proc/buddyinfo
und ob Swap verwendet wird oder nicht. Um genauer zu sein, frage ich mich, ob die Verwendung von Swap die Speicherfragmentierung reduzieren kann. Während eines normalen Arbeitstages mit ausgeschaltetem Swap auf meinem System habe ich Folgendes:
tvbox@tvbox-G31M-ES2L:~$ cat /proc/buddyinfo
Node 0, zone DMA 3 3 4 14 16 6 2 0 0 1 0
Node 0, zone Normal 1564 1052 462 356 240 109 33 21 6 1 0
Node 0, zone HighMem 43 1972 839 285 183 109 98 34 16 0 0
tvbox@tvbox-G31M-ES2L:~$ free
total used free shared buffers cached
Mem: 2053888 1821904 231984 171376 299908 812940
-/+ buffers/cache: 709056 1344832
Swap: 0 0 0
Hinweis: Dieses System hat eine Betriebszeit von nie mehr als 18 Stunden.
Auf einem stärker ausgelasteten System habe ich Folgendes:
me@me-zippy:~$ cat /proc/buddyinfo
Node 0, zone DMA 149 106 70 26 15 5 4 0 0 2 0
Node 0, zone Normal 2455 3527 4651 1421 367 157 61 19 14 3 0
Node 0, zone HighMem 7 43 75 266 166 162 91 43 27 0 0
me@me-zippy:~$ free -h
total used free shared buffers cached
Mem: 7.4G 7.0G 351M 281M 116M 6.0G
-/+ buffers/cache: 967M 6.4G
Swap: 0B 0B 0B
me@me-zippy:~$ uptime
12:01:49 up 3 days, 3:20, 2 users, load average: 0.52, 0.23, 0.17
Sie werden feststellen, dass für keines dieser Systeme der Austausch aktiviert ist.
Antworten:
Durch das Austauschen können physische Seiten verschoben werden, in dem Sinne, dass der Inhalt einer Seite, die für einen bestimmten Zweck verwendet wird, ausgetauscht und dann für einen anderen Zweck verwendet werden kann.
Unter einem virtuellen Speichermanagementsystem der Gartenvielfalt gibt es keine Fragmentierung des physischen Speichers in Bezug auf Anwendungen. Jede von einer Anwendung zugewiesene Seite kann an einer beliebigen Stelle im physischen Speicher abgelegt werden. Es gibt keinen Grund, warum zwei aufeinanderfolgende Seiten im virtuellen Speicher eine bestimmte Nähe im physischen Speicher aufweisen müssten.
Es gibt viele Fälle, in denen die Speicherfragmentierung ein Problem darstellt: alle Umstände, unter denen der physische Speicherort von Bedeutung ist. Das beinhaltet:
Wenn keine „komplexen“ Szenarien vorliegen, kann die Fragmentierung des physischen Speichers zu Problemen beim Anschließen eines neuen Geräts führen, für das ein Pool zusammenhängender Speicher erforderlich ist (der Kernel behält solche Pools dafür bei, sie müssen jedoch möglicherweise vergrößert werden, wenn ein Treiber plötzlich einen großen Speicher erstellt Anfrage). Wenn die Gerätenutzung konstant ist, spielt die physische Fragmentierung keine Rolle und führt insbesondere nicht dazu, dass eine Anwendung langsamer ausgeführt wird oder nicht genügend Speicherplatz zur Verfügung steht.
Es ist möglich, dass eine Fragmentierung des physischen Adressraums dazu führt, dass mehr Speicher im Kernel verwendet wird, um die freie Liste darzustellen. Ich glaube nicht, dass dies unter Linux der Fall ist, aber ich bin weit davon entfernt, ein Experte für die Speicherverwaltung zu sein.
Zusammenfassend lässt sich sagen, dass durch das Zulassen des Austauschs eines Teils einer Anwendung dieser Anwendung nicht mehr Speicher zugewiesen werden kann. Einige Hardwaretreiber können jedoch den erforderlichen Speicher zuweisen.
Das Hinzufügen von Swap hat keine Auswirkungen auf den virtuellen Speicherplatz der Anwendung. Das ist schließlich der Punkt des Austauschs - er ist für Anwendungen transparent.
Es ist jedoch möglich, dass das Hinzufügen von Swap zu einer Maschine einen indirekten Einfluss auf die Fragmentierung im virtuellen Speicherbereich einer Anwendung hat. Wenn dem System der virtuelle Speicher ausgeht, muss die Anwendung mit dem auskommen, was sie hat. Wenn die Anwendung den größten Teil des vom Betriebssystem zugewiesenen Speichers verwendet, führt dies im Laufe der Zeit zu einer Fragmentierung innerhalb dieses Bereichs, da hier und da kleine Blöcke freigegeben werden. Wenn die Anwendung über mehr virtuellen Speicher verfügt (von dem einige ausgelagert sind), hat der Speichermanager mehr Spielraum und verringert das Risiko, dass der Anwendung der Speicher ausgeht. Drei separate 2-KB-Blöcke stehen zur Verfügung, wenn ein einzelner gewünscht wird 4kB Objekt.
quelle