====== free - Arbeitsspeicher-Auslastung ====== free zeigt die Nutzung des Arbeitsspeichers (RAM) und des Swap-Speichers an. Es ist ein essentielles Tool zur Überwachung der Speicherauslastung und hilft dabei, Performance-Probleme und Speichermangel zu identifizieren. ===== Voraussetzungen ===== * Zugriff auf die Linux-Kommandozeile * Grundkenntnisse in [[sammlung:bash_kommandos|Bash-Kommandos]] ===== Grundlegende Syntax ===== free [OPTIONEN] ===== Häufige Anwendungsfälle ===== ==== Standard-Ausgabe ==== # Standard-Ausgabe in Kilobytes free # Human-readable Format (empfohlen) free -h # In Megabytes free -m # In Gigabytes free -g ==== Ausgabe verstehen ==== $ free -h total used free shared buff/cache available Mem: 15Gi 4.5Gi 8.2Gi 250Mi 2.8Gi 10Gi Swap: 2.0Gi 0B 2.0Gi ^ Spalte ^ Bedeutung ^ | total | Gesamter verfügbarer Speicher | | used | Genutzter Speicher (ohne Buffers/Cache) | | free | Komplett ungenutzter Speicher | | shared | Von mehreren Prozessen genutzter Speicher (tmpfs, etc.) | | buff/cache | Von Kernel für Buffers und Cache genutzter Speicher | | available | Verfügbarer Speicher für neue Programme (wichtigste Spalte!) | ==== Kontinuierliche Überwachung ==== # Alle 2 Sekunden aktualisieren free -h -s 2 # 10 Mal alle 5 Sekunden free -h -s 5 -c 10 # Mit Zeitstempel watch -n 2 'date && free -h' ===== Nützliche Optionen ===== ^ Option ^ Bedeutung ^ | -h | Human-readable Format (KB, MB, GB) | | -b | Bytes | | -k | Kilobytes (Standard) | | -m | Megabytes | | -g | Gigabytes | | -t | Summen-Zeile für RAM + Swap | | -s N | Aktualisierung alle N Sekunden | | -c N | N Wiederholungen | | -w | Breite Ausgabe (Buffer und Cache getrennt) | | --si | 1000er-Basis statt 1024 | ===== Die Spalten im Detail ===== ==== Mem (RAM) ==== * **total**: Physischer Arbeitsspeicher insgesamt * **used**: Von Prozessen belegter Speicher * **free**: Komplett ungenutzter Speicher (meist gering) * **shared**: Shared Memory (z.B. tmpfs) * **buff/cache**: Für Buffers und Cache genutzter Speicher * **available**: **Wichtig!** Tatsächlich verfügbarer Speicher für neue Programme ==== Swap ==== * **total**: Gesamtgröße der Swap-Partition/Datei * **used**: Genutzter Swap (sollte idealerweise 0 oder gering sein) * **free**: Verfügbarer Swap ===== Praktische Beispiele ===== ==== Speicher-Analyse ==== # Übersicht mit Summen free -h -t # Breite Ansicht (Buffer und Cache getrennt) free -hw # Prozentuale Auslastung berechnen free | awk 'NR==2{printf "%.2f%%\n", $3*100/$2}' # Verfügbarer Speicher in Prozent free | awk 'NR==2{printf "%.2f%% verfügbar\n", $7*100/$2}' ==== Swap-Nutzung prüfen ==== # Swap-Auslastung anzeigen free -h | grep Swap # Warnung bei Swap-Nutzung free | awk '/Swap/{if($3>0)print "WARNUNG: Swap wird genutzt:", $3}' # Prozesse nach Swap-Nutzung sortieren sudo grep VmSwap /proc/*/status | awk '{sum[$1]+=$2}END{for(i in sum)print sum[i],i}' | sort -rn | head ==== Monitoring und Alarme ==== # Speicher-Alarm bei unter 10% verfügbar free | awk 'NR==2{if($7/$2<0.1)print "KRITISCH: Nur",$7,"verfügbar!"}' # Kontinuierliche Überwachung mit Farben watch -n 1 -c 'free -h' # Log erstellen while true; do echo "$(date): $(free -h | grep Mem)" >> memory.log; sleep 300; done ===== Erweiterte Anwendungen ===== ==== Cache leeren (nur für Tests!) ==== # WARNUNG: Nur für Troubleshooting! # PageCache leeren sudo sync && echo 1 | sudo tee /proc/sys/vm/drop_caches # Dentries und Inodes leeren sudo sync && echo 2 | sudo tee /proc/sys/vm/drop_caches # Alles leeren sudo sync && echo 3 | sudo tee /proc/sys/vm/drop_caches **Achtung:** Cache leeren ist normalerweise nicht nötig! Linux nutzt freien Speicher automatisch als Cache für bessere Performance. Cache wird bei Bedarf automatisch freigegeben. ==== Vergleich mit anderen Tools ==== # Mit top/htop vergleichen free -h && echo "---" && top -bn1 | head -5 # Mit /proc/meminfo vergleichen free -h && echo "---" && grep -E 'MemTotal|MemFree|MemAvailable' /proc/meminfo # Detaillierte Speicher-Info cat /proc/meminfo ==== Skripte und Automation ==== # Einfaches Monitoring-Skript #!/bin/bash AVAIL=$(free -m | awk 'NR==2{print $7}') if [ $AVAIL -lt 1000 ]; then echo "Warnung: Nur ${AVAIL}MB verfügbar!" | mail -s "Speicher-Warnung" admin@example.com fi # JSON-Output für Monitoring-Systeme free -b | awk 'NR==2{printf "{\"total\":%s,\"used\":%s,\"free\":%s,\"available\":%s}\n",$2,$3,$4,$7}' ===== Speicher-Verständnis ===== ==== Warum ist "free" so niedrig? ==== Linux nutzt ungenutzten RAM intelligent: * Freier Speicher wird für Buffers/Cache verwendet * Cache beschleunigt Dateizugriffe enorm * Cache wird automatisch freigegeben wenn Programme Speicher brauchen * **Wichtig**: Schaue auf "available", nicht auf "free"! ==== Wann ist Swap-Nutzung problematisch? ==== * Geringe Swap-Nutzung (<10%) ist meist unkritisch * Hohe Swap-Nutzung (>50%) deutet auf RAM-Mangel hin * Häufiges Swapping (thrashing) verlangsamt System massiv * Prüfe mit [[sammlung:vmstat|vmstat]] ob aktiv geswappt wird ===== Wichtige Hinweise ===== * **available** ist die wichtigste Spalte - sie zeigt wirklich verfügbaren Speicher * Cache ist kein "verschwendeter" Speicher - er verbessert Performance * Swap-Nutzung allein ist kein Problem - wichtig ist, ob aktiv geswappt wird * Bei RAM-Mangel: Prüfe mit [[sammlung:top|top]] oder [[sammlung:htop|htop]] welche Prozesse viel Speicher nutzen * tmpfs (z.B. /tmp) nutzt RAM und zählt zu "shared" ===== Fehlerbehebung ===== * **Zu wenig "available"**: Identifiziere speicherhungrige Prozesse mit ''top'' oder ''htop'' * **Hohe Swap-Nutzung**: Erwäge RAM-Upgrade oder reduziere laufende Dienste * **OOM-Killer aktiv**: Prüfe ''dmesg | grep -i oom'' für Details * **Cache zu hoch**: Normal und gewünscht! Cache wird automatisch freigegeben ===== Siehe auch ===== * [[sammlung:top|top - Prozess-Übersicht]] * [[sammlung:htop|htop - Interaktive Prozess-Verwaltung]] * [[sammlung:vmstat|vmstat - Virtual Memory Statistics]] * [[sammlung:df|df - Festplatten-Auslastung]] * [[sammlung:du|du - Verzeichnisgrößen]] {{tag>linux kommandozeile speicher ram swap monitoring performance system}}