Linux-Systemwartung: Wenn swap den Rechner ausbremst
veröffentlicht am 06.06.2024 mit 651 Worten - Lesezeit: 4 Minute(n) in * LINUX *
Seit etwas mehr als 10 1/2 Jahren betreibe ich nun meinen PC hier zu Hause, Linux läuft auf der Maschine als Hauptbetriebssystem seit genau 10 Jahren. Und das Teil läuft und läuft und … 😄
Auch mit der Geschwindigkeit bin ich nach wie vor zufrieden - könnte mir aber vorstellen, irgendwann mal ein update zu tätigen, um mindestens dieselbe Rechenleistung mit geringerem Leistungsbedarf/Stromverbrauch zu realisieren.
Hardware
Derzeit sieht die Hardware hinsichtlich CPU und Grafik so aus:
~$ inxi -Fzx System: Kernel: 6.1.0-21-amd64 arch: x86_64 bits: 64 compiler: gcc v: 12.2.0 Desktop: Cinnamon v: 5.6.8 Distro: Debian GNU/Linux 12 (bookworm) Machine: Type: Desktop Mobo: ASUSTeK model: P8Z77-M v: Rev 1.xx serial: <superuser required> UEFI: American Megatrends v: 2203 date: 12/18/2015 CPU: Info: quad core model: Intel Core i5-3570 bits: 64 type: MCP arch: Ivy Bridge rev: 9 cache: L1: 256 KiB L2: 1024 KiB L3: 6 MiB Speed (MHz): avg: 1625 high: 1700 min/max: 1600/3800 cores: 1: 1600 2: 1600 3: 1700 4: 1600 bogomips: 27282 Flags: avx ht lm nx pae sse sse2 sse3 sse4_1 sse4_2 ssse3 vmx Graphics: Device-1: Intel Xeon E3-1200 v2/3rd Gen Core processor Graphics vendor: ASUSTeK P8H77-I driver: i915 v: kernel arch: Gen-7 bus-ID: 00:02.0 Device-2: Logitech Webcam C270 type: USB driver: snd-usb-audio,uvcvideo bus-ID: 3-1.5:3 Display: x11 server: X.Org v: 1.21.1.7 with: Xwayland v: 22.1.9 driver: X: loaded: modesetting unloaded: fbdev,vesa dri: crocus gpu: i915 resolution: 1: 1920x1200~60Hz 2: 1920x1200~60Hz API: OpenGL v: 4.2 Mesa 22.3.6 renderer: Mesa Intel HD Graphics 2500 (IVB GT1) direct-render: Yes
und RAM wird mit Memory: 15.44 GiB
ausgegeben, also 16GB. Und dann ist da noch eine Festplatte mit 2TB verbaut.
Wenn RAM nicht reicht
Nun kann man einen solchen Rechner schon bzgl. RAM an seine Grenzen bringen: Firefox mit etlichen Fenstern mit jeweils vielen offenen Tabs, Thunderbird, Hugo Server (zum Schreiben dieser Webseite), darktable (RAW-Konverter und Bildarchiv), Chromium für spezielle Web-Angebote, Gnucash und noch etliches mehr - und dann sieht die Auslastung ganz gerne mal so aus:
Solch eine Information läßt sich auch per Terminal abfragen:
~# free -m gesamt benutzt frei gemns. Puffer/Cache verfügbar Speicher: 15805 12346 593 3206 6424 3459 Swap: 24575 3309 21266
Bei einer Auslagerung in dieser Größenordnung (hier: 3,3GB) führt dann schon mal zu einer etwas zähen Performance des Rechners, insbesondere sind die vielen Festplatten-Zugriffe beim Zugriff auf den Swap-Speicher deutlich hörbar (eine SSD ist auch nur eine bedingte Lösung, denn deren Lebensdauer ist nicht wirklich auf die vielen schnellen Zugriffe ausgelegt).
Einfaches Schließen einzelner Fenster oder Anwendungen senkt zwar die Belegung des Speichers, führt aber nicht zur sofortigen Rückverlagerung aus dem Swap in den RAM-Speicher. Das kann aber händisch veranlaßt werden (im root-Terminal):
~# swapoff -a
Der Fortschritt der Aktion kann dann in einem normalen Terminal mit Benutzerrechten verfolgt werden:
~$ free -s 3 | grep Swap
Swap: 292188 292188 0
Swap: 246564 246564 0
Swap: 215692 215692 0
Swap: 207016 207016 0
Swap: 197092 197092 0
Swap: 187624 187624 0
Wenn hier die Belegung auf 0
“heruntergezählt” ist, dann kann der Swap-Speicher im root-Terminal wieder zugeschaltet werden:
~# swapon -a
und kann mit leerem Swap-Speicher weiterarbeiten:
Swappiness
Das Speichermanagement - also auch die Aufteilung der Belegung zwischen RAM
und swap
- folgt recht komplexen Regeln. Eine ausführliche Beschreibung findet sich in diesem Artikel.
Ein Parameter, der auf diese Aufteilung Einfluss nimmt, ist die sog. Swappiness. Stark vereinfacht geht es hier darum, wie lange das System Daten von Dateien, die eigentlich auch von der Festplatte gelesen werden könnten, im Arbeitsspeicher (RAM
) behält zw. wie schnell dieser Speicher freigegeben wird.
Der aktuelle Wert kann im Root-Terminal wie folgt ausgelesen werden:
~# cat /proc/sys/vm/swappiness 60
Der Wert kann geändert werden wie folgt:
~# sysctl vm.swappiness=30 vm.swappiness = 30
Diese Änderung bleibt bis zum nächsten Neustart wirksam. Für eine permanente Änderung muß der Datei /etc/sysctl.conf
eine Zeile hinzugefügt werden:
vm.swappiness=30
… und nun werde ich mal beobachten, wie sich das auf meiner alten Kiste hier auswirkt …
weitere Artikel
- Linux-Tipp: Rechner umbenennen - Hostname ändern
- sudo vs. root in debian
- Debian (.deb) Pakete bearbeiten: Abhängigkeiten anpassen
- Linux Mint und die Ubuntu-Backports
- sudo vs. gksudo - und verbogene Dateirechte