Hallo,
ich habe ab und an mit reht grossen Daten in Matlab (unter Linux) zu tun. Das Auslagern klappt soweit. Nur würde ich es gerne mit einem ("Highspeed-")USB-Stick beschleunigen. Ich habe etwas ähnliches schon mal mit einem normalen Stick und einem alten Laptop gemacht, hat wunderbar funktioniert. Um jedoch eine bessere Performance zu erzielen (bzw um überhaupt einen Gewinn zu sehen;) würde ich gerne wissen, wie genau Linux auslagert. Also, abhängig vom swappiness usw, das hab ich schon rausgefunden. Nur wie ganz genau ? Lagert es immer kleine 5kB Blöcke aus, so wie Windows, oder fängt es bei Linux erst bei 1MB an ?
Ich würde es gerne wissen, da viele USB-Sticks zwar gute Datenübertragungen erreichen, aber bei kleinen Teilen versagen.
Linux 14.981 Themen, 106.343 Beiträge
"Das ist ein widerspruch in sich, denn RAM, das für Caching verwendet wird, fehlt für Anwendungsdaten. Das wiederum bedeutet, dass der PC sogar umso eher auslagert, je mehr RAM für Caching verwendet wird."
Diese Art der Speicherverwaltung ist vielleicht bei Windows üblich, aber nicht bei Linux.
Der Speicher wird nur teilweise für Festplattencaching verwendet. Du kannst dir ja selbst mal die Ausgabe von free -m oder free anschauen. So weit ich es verstanden habe, wird der Festplattencache auch reduziert, wenn der RAM knapp wird.
Ließ mal die manpage zu free:
"man free"
Das ist die Ausgabe von einem K6 500 MHz mit 256 Mbyte RAM:
karsten@Winkler2:~$ free -m
total used free shared buffers cached
Mem: 249 245 4 0 13 74
-/+ buffers/cache: 157 92
Swap: 501 0 501
Es wird nicht ein einziges Byte ausgelagert . 74 Mbyte werden für den Festplattencache verwendet und 13 MByte für einen Puffer.
Oder wenn du es ganz detalliert haben willst, dann gibst du den Inhalt der Datei /proc/meminfo aus:
cat /proc/meminfo
MemTotal: 255944 kB
MemFree: 4720 kB
Buffers: 7740 kB
Cached: 72916 kB
SwapCached: 0 kB
Active: 200940 kB
Inactive: 11828 kB
HighTotal: 0 kB
HighFree: 0 kB
LowTotal: 255944 kB
LowFree: 4720 kB
SwapTotal: 514040 kB
SwapFree: 513988 kB
Dirty: 520 kB
Writeback: 0 kB
AnonPages: 132132 kB
Mapped: 61368 kB
Slab: 35684 kB
PageTables: 1552 kB
NFS_Unstable: 0 kB
Bounce: 0 kB
CommitLimit: 642012 kB
Committed_AS: 293476 kB
VmallocTotal: 778220 kB
VmallocUsed: 1344 kB
VmallocChunk: 776764 kB
Ich weiß nicht konkret welcher RAM Speicher ausgelagert wird und wie diese Entscheidung der Linuxkernel trifft.
http://kechel.de/prozessadressraeume_zusammenfassung/node29.html
Keine Ahnung ob sich das was beim Linuxkernel 2.6.xx geändert hat.
Ich weiß nur das man das Auslagern von Speicher verhindern kann in dem man mehr RAM-Speicher einbaut. Um zu entscheiden ob mehr RAM Sinn machen, kontrolliere ich gelegentlich die Ausgabe von free.