Pi immer wieder extrem langsam - falsche SD-Karte?

  • Hallo zusammen,


    ich benutze seit Jahren einen Raspberry Pi 3B für mein Smart Home. Ca. alle 6 Monate wird das System extrem langsam. Um ein Beispiel zu nennen: Der reine Login über SSH dauert teilweise 1 Minute (Gerät per LAN direkt an der FB). Ich konnte in htop nie etwas außergewöhnliches feststellen, bis mir irgendwann jmd. riet, die SD-Karte mal zu tauschen. Ich machte also ein Backup der Karte, spielte es auf einer neuen Karte ein und voila - Performance.


    Die verwendete Karte ist eine ScanDisk Ultra mit 120MB/s A1.


    Jetzt habe ich für ein Fotobox-Projekt einen 2. Pi 3B gekauft, welcher am Anfang sehr schnell lief, doch jetzt wurde er schlagartig extrem träge. Ähnlich wie mein Smart Home Server.


    Bevor ich jetzt wieder Stunden lang alles neu einrichte, würde ich mir gerne mal den Rat von Experten heran ziehen. Vllt. liegt das Problem ja ganz wo anders?

    Da ich nicht weiß, wo man hier ansetzen kann, hier mal ein Auszug aus htop:


    Ich bin gerne bereit, alle weiteren hilfreichen Informationen zu liefern.


    LG

    bliebt gesund

  • Go to Best Answer
  • Vllt. liegt das Problem ja ganz wo anders?

    Konfiguriere die swappiness auf 1, deaktiviere Loggen welches nicht zwingend benötigt wird und konfiguriere logrotate für das Loggen, das Du benötigst.


    EDIT:


    Schreibe folgende Zeilen in die /etc/sysctl.conf:

    Code
    vm.swappiness = 1
    vm.drop_caches = 3

    Die 2. Zeile (mit drop_caches) nur temporär als Test, für die Zeitdauer von z. B. 10 Monate.

    Nach dem Eintrag, den PI rebooten.


    Poste mal jetzt, _vor_ dem rebooten, von deinem PI die Ausgaben von:

    Code
    sudo find / -type d -exec du -sh {} \; 2>/dev/null | sort -brh | head -n 20
    find ~ -uid 0 -exec ls -lad {} 2>/dev/null +;

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Hi, vielen Dank für die schnelle Antwort. Ich musste jeden einzelnen Vorschlag googeln, aber ich denke verstanden zu haben, was du meins.t Ich möchte nur auf Nummer sicher gehen, da mitterweile selbst das Drücken der TAB-Taste zum Vervollständigen der Pfade bis zu 5 Minuten lädt, sollte jeder Befehl sitzen:


    Swappiness auf 1:

    Code
    sudo nano /etc/sysctl.conf
    vm.swappiness=1

    Das Problem, das ich mit dem Loggen sehe ist, dass ich nicht weiß, wer was wie wo wann loggt und wie ich es beeinflussen kann. Bei mir läuft jede Schnittstelle über Docker. Dort kenne ich `docker logs`.

    Mit Log Rotation hatte ich noch nie zu tun.


    Kommst du auf das Thema Logging weil du vermutest, dass sehr viele Schreibvorgänge meine SD-Karte zu stark belassen und wenn ja, kann man das irgendwie messen oder überwachen?

  • Kommst du auf das Thema Logging weil du vermutest, dass sehr viele Schreibvorgänge meine SD-Karte zu stark belassen ...

    Nein, ich meine nicht Schreibvorgänge auf die SD-Karte, sondern den evtl. Umgang/Zugang (Öffnen, Schreiben, ...) mit/zu "großen" Logdateien.


    EDIT:


    Konfiguriere in der [Journal]-Section der /etc/systemd/journald.conf:

    Code
    Storage=none
    ForwardToSyslog=no
    ForwardToWall=no
    Code
    sudo systemctl daemon-reload
    sudo systemctl restart systemd-journald
    systemctl status systemd-journald

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

    Edited once, last by rpi444 ().

  • Hier ist schon mal der erste Output vom find, der mehrere Stunden gedauert hat. Den zweiten habe ich gerade gestartet:

    Der 2. ging doch schnell und hatte gar kein output

  • Rein logisch hätte ich gedacht, wenn der swap zu klein ist (weil wohl voll), müsste man den swap vergrößern, anstatt ihn auf 1 MB zu stellen oder zu deaktivieren. Ebenso macht es für mich keinen logischen Unterschied, ob man 1MB oder keinen Swap hat. Ich hatte aber bis heute auch noch keine wirkliche Ahnung, was ein swap ist.

    Was ich aber sagen kann, ist, dass

    Code
    sudo nano /etc/sysctl.conf
    vm.swappiness=1
    sudo reboot

    keine spürbare Änderung bewirkt hat. Ein SSH login dauert nach wie vor, 1-5min und ein "ls -l" (in einem Ordner mit 5 Dateien) z.B. auch.

    Was sich aber tatsächlich geändert hat, ist, dass meine Bewegungsmelder wieder Lichter schalten und zwar direkt. Bis vorhin ging das gar nicht mehr.

    Könnte zwar auch an dem Reboot liegen, aber das hatte ich vorab schon unzählige Male versucht und da brachte das keinen Erfolg.

  • Rein logisch hätte ich gedacht, wenn der swap zu klein ist (weil wohl voll), müsste man den swap vergrößern, anstatt ihn auf 1 MB zu stellen oder zu deaktivieren.

    Das Problem ist, dass obwohl vom RAM nur 231MB verbraucht werden, schon geswappt wird. Und ja, statt swappiness auf 1 zu stellen, kannst Du den Swap auch deaktivieren.

    Für den Speicherverbrauch siehe auch die Ausgabe von:

    Code
    free -m


    Ein SSH login dauert nach wie vor, 1-5min ...

    Versuch mal mit:

    Code
    UseDNS no
    GSSAPIAuthentication no

    in der "/etc/ssh/sshd_config"-Datei. Welchen ssh-Client benutzt Du? Stellst Du die ssh-Verbindung im (W)LAN oder via Internet her? Benutzt Du IPv4 oder IPv6?

    Wie sind auf deinem PI die Ausgaben von:

    Code
    cat /etc/nsswitch.conf
    cat /etc/resolv.conf
    cat /etc/hosts
    sudo netstat -tulpena | grep -i avahi

    ?

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Code
                  gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
    Speicher:        922         525          33           0         363         339
    Swap:             99           1          98


    Code
    cat /etc/resolv.conf
    # Generated by resolvconf
    domain fritz.box
    nameserver 192.168.188.1


    Code
    cat /etc/hosts
    127.0.0.1       localhost
    ::1             localhost ip6-localhost ip6-loopback
    ff02::1         ip6-allnodes
    ff02::2         ip6-allrouters
    
    127.0.1.1       pi


    Code
    sudo netstat -tulpena | grep -i avahi
    udp        0      0 0.0.0.0:51765           0.0.0.0:*                           108        10915      377/avahi-daemon: r 
    udp        0      0 0.0.0.0:5353            0.0.0.0:*                           108        10913      377/avahi-daemon: r 
    udp6       0      0 :::43720                :::*                                108        10916      377/avahi-daemon: r 
    udp6       0      0 :::5353                 :::*                                108        10914      377/avahi-daemon: r 
  • Code
                  gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
    Speicher:        922         525          33           0         363         339
    Swap:             99           1          98

    Ist diese Ausgabe mit swappiness auf 1? Wenn Ja, dann deaktiviere den Swap und teste mit:

    Code
    vm.drop_caches = 3


    Code
    cat /etc/nsswitch.conf
    hosts:          files mdns4_minimal [NOTFOUND=return] dns


    Ändere die hosts-Zeile in:

    Code
    #hosts:          files mdns4_minimal [NOTFOUND=return] dns
    hosts:          files dns resolve myhostname


    Code
    127.0.1.1       pi

    Hast Du manuell diese Zeile in die hosts-Datei eingetragen? Ist der hostname deines PI "pi" oder ist das der username? Siehe die Ausgaben von:

    Code
    hostname
    host -t a pi.fritz.box 192.168.188.1


    Code
    sudo netstat -tulpena | grep -i avahi
    udp        0      0 0.0.0.0:51765           0.0.0.0:*                           108        10915      377/avahi-daemon: r 

    Wenn Du avahi nicht brauchst, kannst es deinstallieren.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • Am Pi ist ja alles langsam

    ja, wenn er swappt oder swappen will, ist er immer langsam. Teste mal mit deaktiviertem Swap.

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • so ich habe jetzt die swappiness auf 0 gesetzt, dann den swapping Dienst deaktiviert:

    Code
    sudo service dphys-swapfile stop

    mit free geschaut, dass er auf 0 ist und dann deaktiviert:

    Code
    sudo systemctl disable dphys-swapfile

    und gerebootet. Jetzt komme ich gar nicht mehr auf den Pi:

    Code
    ssh: connect to host 192.168.188.88 port 22: Connection refused
  • so ich habe jetzt die swappiness auf 0 gesetzt, dann den swapping Dienst deaktiviert:

    Das ist nicht logisch. Wenn swapping deaktiviert ist, wird die Zeile mit der swappiness in der /etc/sysctl.conf gar nicht benötigt bzw. kann evtl. ein Problem darstellen.

    BTW: Auf meinem PI ist das gar nicht installiert (da gibt es auch nichts zu deaktivieren):

    Code
    :~ $ apt-cache policy dphys-swapfile
    dphys-swapfile:
      Installed: (none)
      Candidate: 20100506-5+rpt2

    The most popular websites without IPv6 in Germany.  IPv6-Ausreden

  • HI pharmonie, hast du mal probiert, deine SD-Karte auf read-only zu stellen? Diesen Tip habe ich in folgendem Video gefunden:

    Simple Trick to protect your Raspberry SD card from Crashing

    Man findet diese Option unter sudo raspi-config, Punkt 4 performance settings, dann P3 overlay file system (oder auch in der grafischen Benutzeroberfläche, siehe Video).

    Im Video wird ausgeführt, dass SD-Karten strenggenommen gar nicht wirklich gut für die Nutzung im Raspi geeignet sind und besonders unter den damit verbundenen Schreibvorgängen leiden. Setzt man nun die Karte auf read-only, dann wird stattdessen eine virtuelle Festplatte im RAM erzeugt (besagtes overlay file system), deren Inhalte freilich beim Ausschalten verloren gehen und bei Bedarf entsprechend anderweitig gesichert werden müssen - man hat quasi ein Linux Livesystem.

    Ich fand das Video sehr einleuchtend und habe die schon etwas ältere 4Gb-Karte auf meinem raspi3b ebenfalls auf read-only gesetzt (der fungiert mit einer USB-Festplatte als Netzwerkspeicher mit openmediavault). Den Schreibschutz deaktiviere ich zwischendurch immer nur mal gelegentlich, wenn Aktualisierungen anliegen. Just my 0,50€ :)

  • Ich habe dem Teil jetzt noch eine Weile zum Booten gegeben - er ist ja schließlich nicht mehr der schnellste ;) Aber das hat leider nicht geholfen. Habe ihn dann vom Strom genommen und wieder angesteckt, dann kam ich wieder drauf.

    Der Swap ist nun deaktiviert

    Code
    free -m
                  gesamt       benutzt     frei      gemns.  Puffer/Cache verfügbar
    Speicher:        922         457          35           1         429         410
    Swap:              0           0           0

    vm.drop_caches = 3 hatte ich schon zu Beginn eingestellt.


    @JustinCase (btw: cooler Name :D) das ist etwas, das ich mal testen kann. Allerdings ist das für mich keine Dauerlösung.


    @RTFM dafür kenne ich mich zu wenig aus, um zu wissen, nach was ich suchen muss.

  • Das setzten der SD-Karte auf read-only führt in der Tat dazu, dass der Pi wieder schnell läuft. Zumindest kann ich die ganzen Befehle jetzt gewohnt schnell ausführen. Allerdings läuft docker nun nicht und somit auch nicht meine gesamte Hausautomation.