Schreibzugriffe minimieren

Schreibzugriffe auf einen Datenträger/ Speichermedium (vor allem SD-Karten) minimieren:

  • Vorteile:
    • längere Haltbarkeit des Speichermediums
    • geringerer Stromverbrauch
    • geringere Wahrscheinlichkeit für Headcrashes bei HDDs, da der Kamm/Leseköpfe in Parkposition geführt werden kann
  • Wear levelling für SD-Karten optimieren:
    • Wear levelling=Verteilung von physischen Schreibzugriffen für die selbe logische Adresse
    • bei SD-Karten sollte immer genug freier Platz (mehrere GB) gelassen werden, da viel beschriebene logische Adressen (z.B. selbes Offset innerhalb einer Datei) nicht alternierend auf bereits belegten Speicher geschrieben wird
    • 2 Möglichkeiten, um das zu erreichen:
      • das Dateisystem sollte sich nicht über die gesamte SD-Karte erstrecken
      • innerhalb des Dateisystems genug freien Platz lassen
  • Prozesse mit (Schreib-)Zugriffen identifizieren mittels
    • iostat (im "sysstat"-Paket enthalten):
      "kB_wrtn" beim ersten Bericht: Anzahl der geschriebenen KB seit dem Betriebssystem-Start
    • fatrace (file access trace--https://launchpad.net/fatrace)
      • Vorteil: gibt auch den Dateipfad mit aus
      • gibt pro Datei-Zugriff in 1 Zeile aus:
        Programm-Name, zugehörige Prozess-ID (da mehrere Instanzen des selben Programms möglich sind), Zugriffs-Art auf die Datei, Dateipfad der Datei
          • Beispiel einer Zeile:
            "iceweasel(28720): W /home/sgeb/.mozilla/firefox/kgxp7e24.default/cookies.sqlite-wal"
        Programm-Name Prozess-ID Modus Dateipfad
        iceweasel 28720 W (geschrieben) /home/sgeb/.mozilla/firefox/kgxp7e24.default/cookies.sqlite-wal
      • ab Version 0.10: nur die Datei-Zugriffe mit Erstellung und Schreiben ausgeben lassen "./fatrace --filter=W"
      • unter Version 0.10: nur die schreibenden Zugriffe ausgeben lassen: "./fatrace | grep "): W " "
    • iotop (http://guichaz.free.fr/iotop/)
      • Warnung: (Schreib-)zugriffe beendeter Prozesse werden nicht mehr angezeigt. Falls also ein Prozess nur kurzfristig geschrieben hat, sieht man das mitunter nicht mehr in der Ausgabe!
      • Kommandozeilen-Optionen:
        • "--only" : nur Prozesse/ Threads mit IO anzeigen
        • "--accumulated" : summiert die Lese- und Schreib-Datenmenge auf--sehr empfehlenswert
        • Beispiele:
          • empfohlen:"sudo iotop --only --processes --accumulated"
          • -"sudo iotop --only --pid=`pidof ntpd` --accumulated"
  • Schreibzugriffe minimieren:
    • Swapping deaktivieren (Raspbian) :
      "sudo chmod u-x /etc/init.d/dphys-swapfile"
    • auf RAMdisk statt auf Datenträger speichern:
      • Cache (für Internet-Browser wie Firefox, Chromium etc.) auf RAMdisk auslagern: (Zeile in /etc/fstab)
        "tmpfs /home/username/.cache tmpfs defaults,size=250M"
      • DHCP log in RAM disk speichern:
        • "mount -t tmpfs -o rw,nosuid,nodev,noexec,relatime,size=50k none /var/lib/dhcp"
        • permanent: in "/etc/fstab" eintragen: "tmpfs   /var/lib/dhcp   tmpfs   rw,nosuid,nodev,noexec,relatime,size=100k"
    • Ausgabe von Cron-Jobs in Log-Dateien (/var/log/...) verhindern:
      /etc/rsyslog.conf
      1. Cronjobs ";cron.none"
        -hinzufügen vor Zeile mit "/var/log/messages"
        dhclient: -dhclient.none in Zeile mit /var/log/cron.log
      2. (sudo) service rsyslog restart
© 2013-2022. Stefan Gebauer, M.Sc. Computer Science/Informatik (TU), B.Sc. Angewandte Informatik (FH)