Stress mit Linux


© März 2021, Letzte Änderung 23.03.23

Übersicht

allgemeine Info

Wer seinen PC selbst zusammen gebaut hat oder hat bauen lassen,
sollte am Anfang, bevor die Garantie abläuft, gründlich testen.

Nach meinen privaten Erfahrungen hatte ich die meisten Rückläufer
am Anfang bei den Speicherriegeln und einmal beim Motherboard.
CPU's sind mir noch garnicht ausgefallen im Sinne eines Defektes.
Ich hatte allerdings einmal das Problem das die CPU
noch nicht mit den BIOS harmonierte.
Dadurch war ich gezwungen, eine weitere CPU zu kaufen
um das BIOS updaten zu können.
Eine einzige nicht NAS Festplatten
fiel bisher bei mir nach ca. 6 Monaten aus,
weitere nicht NAS Festplatten nach mehr als 5 Jahren.
Alle bisher verwendeten NAS-Platten
habe ich wegen der zu klein gewordenen Größe,
vor Ausfall ausortiert.

Dieses Problem, entweder Ausfall am Anfang oder spät,
also z.B. kurz nach abgelaufener Garantie
wird auch Badewannenkurve bezeichnet.

Möchte ich mir nur mal schnell einen Überblick über mein System verschaffen,
kann ich z.B.   hardinfo   empfehlen.
Das Programm ist vergleichbar mit den Windows-Gerätemanager.
Man erhält also etliche Hardware- und Software-Informationen.

sudo apt-get install hardinfo

hardinfo                               einige Info nur als root sichtbar
hardinfo übersicht

harinfo   eignet sich nicht für alle gründlicheren und längeren Tests.

Quellen

kernel.org   6 Useful Linux Apps to Stress Test and Benchmark CPU Performance
pcwelt.de   Linux_So_testen_Sie_die_Leistung_Ihrer_Hardware-Benchmark

Zum Anfang

Speicher-Test

Da Speicherfehler nicht inbedingt sofort auftreten,
sollte man bei diesen Test über Nacht laufen lassen.
Hierfür eignet sich hervorragend   memtest86+,
weil es Betriebssystem unabhängig testet.
Somit werden nur ca. 1,8 MB (größe des Programms) nicht getestet.

Es gibt noch memtest86 ohne +, welche ich nicht verwenden würde,
auch wenn es etwas vergleichbares von Passmark Pty Ltd. ist.

sudo apt-get install memtest86+

Wie bereits beschrieben, läßt sich das Programm nicht direkt unter Linux aufrufen.
In   /usr/lib/memtest86+   befinden sich lediglich eine .elf und eine .iso-Datei.
Dafür ist im Boot-Menü ein weiterer Eintrag enthalten.

bootmenue mit memtest86+

Wenn man memtest86+ auswählt,
wird bereits ohne weitere Konfiguration mit den Testen losgelegt.

memtest86+ running

Quellen

memtest.org   Memtest86+

Zum Anfang

CPU-Test

Eine sehr einfache Möglichkeit die CPU zu belasten ist, mit  dd
Zufallszahlen berechnen zu lassen und die Ergebnisse weg zu schmeissen.
Wenn die Möglichkeit besteht, würde ich dabei die Stromaufnahme,
die Temperatur und Lüfterdrehzahl messen.
Die Messung sollte erfolgen wenn ich   dd   ein Mal, zwei Mal, etc. aufgerufen habe.
Die Anzahl der Aufrufe, richtet sich nach der Anzahl der Kerne.

Für die Temperatur und Drehzahl hat das Motherboard eigene Sensoren.
Hier: asrock.com   Fatal1ty B450 Gaming-ITX/ac mit AM4 Sockel;
    Ryzen 5 2600 6 core eingebaut
Die entsprechende Linux-Bibliothek   lm-sensors   muß ggf. installiert werden.
Damit die Werte stimmen, muß ggf. die Konfiguration in
/etc/sensors3.conf   angepasst werden.
Um möglichst viele Sensoren zu finden, sind sie zunächst zu suchen.

su
apt install lm-sensors                 bei DEB 10 bereits installiert
apt install psensor                    grafische Ausgabe
sensors-detect                         Scannt nach Sensoren
bash: sensors-detect: command not found
whereis sensors-detect                 bei DEB 10 woanders
sensors-detect: /usr/sbin/sensors-detect /usr/share/man/man8/sensors-detect.8.gz
/usr/sbin/sensors-detect               alles mit  y  bestätigen
…
AMD Family 17h thermal sensors...                           Success!
    (driver `k10temp')
Found `Nuvoton NCT6792D Super IO Sensors'                   Success!
    (address 0x290, driver `nct6775')
Using driver `i2c-piix4' for device 0000:00:14.0: AMD KERNCZ SMBus
Module i2c-dev loaded successfully.
…
To load everything that is needed, add this to /etc/modules:
#----cut here----
# Chip drivers
nct6775
#----cut here----
If you have some drivers built into your kernel, the list above will
contain too many modules. Skip the appropriate ones!

Do you want to add these lines automatically to /etc/modules? (yes/NO)y
Successful!

Monitoring programs won't work until the needed modules are
loaded. You may want to run '/etc/init.d/kmod start'
to load them.

Unloading i2c-dev... OK
Unloading cpuid... OK

/etc/init.d/kmod start
[ ok ] Starting kmod (via systemctl): kmod.service.

/usr/sbin/service kmod start           alternativ
exit

Temperaturmessung

Nun hat man durch Eingabe von   psensor   die Möglichkeit
sich ein paar Temperaturen anzuschauen.
Beim ersten Start ist die Darstellung leider etwas verwirrend.

psensor erster start

Wenn man allerdings den Textbereich nach rechts schiebt,
sieht man einen Verlauf.   Tdie   ist die Temperatur der CPU.

psensor etwas konfiguriert

Nun kann man, entsprechend der Anzahl der Kerne,
  dd   aufrufen und gucken was passiert.

dd if=/dev/urandom of=/dev/null &		1. im Hintergrund ausgeführt
[1] 4503
dd if=/dev/urandom of=/dev/null &		2. im Hintergrund ausgeführt
[2] 4505
…

Die dargestellte Kurve entstand zunächst durch Messung der Leerlauftemperatur.
Dann habe ich hier durch 12 maliges Aufrufen von   dd   Volllast erzeugt.
Nachdem ein eingeschwungener Zustand erreicht war, habe ich einen Screenshot erstellt.

psensor mit Last

Nach der Messung, habe ich in einen Terminalfester   top
laufen lassen, um die Prozess-Id's zu sehen.
und in einen anderen Fenster habe ich z.B. via   kill 4505
einen Prozess nach den anderen beendet.

s-tui   wäre eine Alternative, welche auch via   ssh
im Terminal-Fenster Balkendiagramme darstellen kann.

s-tui

Wird lediglich ein momentaner Wert benötigt, reicht auch   sensors
oder zyklisch aufgerufen   watch sensors.

sensors
iwlwifi_1-virtual-0
Adapter: Virtual device
temp1:        +38.0°C  

radeon-pci-2600
Adapter: PCI adapter
temp1:        +61.5°C  (crit = +120.0°C, hyst = +90.0°C)

k10temp-pci-00c3
Adapter: PCI adapter
Tdie:         +41.6°C  (high = +70.0°C)
Tctl:         +41.6°C 

Interessanterweise zeigt   sensors   bei mir keine Lüfterdrehzahl an,
obwohl in   /etc/sensors3.conf   Angaben zu finden sind.

acpi -t   rückt unter DEB 10 für das Fatal1ty B450 Gaming-ITX/ac keine Informationen raus.

sysbench   findet Synaptic unter DEB 10 nicht.

Messung der Lüfterdrehzahl

Zur Erinnerung: Am Anfang startete ich   sensors-detect
und bekam unter anderem folgende Meldung.

su
/usr/sbin/sensors-detect               alles mit  y  bestätigen
…
#----cut here----
# Chip drivers
nct6775
#----cut here----

nct6775   wurde zwar korrekt   /etc/modules   hinzugefügt.
Aber durch den versäumten Neustart wirkt das noch nicht.
Alternativ kann man sofort mit   modprobe   einen Treiber nachladen.

/usr/sbin/modprobe nct6775             nct6775 nachgeladen

Danach hat z.B.  sensors   neben der Drehzahl,
noch Spannungen angezeigt.
Bei vielen Werten muß man das aber in Frage stellen,
da das offensichtlich nicht passen kann (z.B. -128°C bis 117°C)
Guckt man in   /etc/sensors3.conf   findet man nicht den NCT6792D, aber den NCT6775.

cat /etc/sensors3.conf
custom configuration files located in /etc/sensors.d
…
chip "w83627ehf-*" "w83627dhg-*" "w83667hg-*" "nct6775-*" "nct6776-*" \
     "nct6779-*" "nct6791-*" "nct6795-*" "nct6796-*"

    label in0 "Vcore"                  0.400 .. 0.69
    label in2 "AVCC"                   3.424 3.440
    label in3 "+3.3V"                  3.408 3.424
    label in7 "3VSB"                   3.424 
    label in8 "Vbat"                   3.280 3.296

Die ergänzten Spannungswerte stammen aus   sensors -u.
Leider habe ich nur bei einigen Spannungen mehrere Werte
bei unterschiedlicher Belastung messen können.

Laut   hisevilness.com   AMD Ryzen 5 2600 overclocking guide
bewegt sich der empfohlene Spannungsbereich zwischen 1.300 und 1.350 V.
→   0.400 ≙ 1.3 V;   0.688 ≙ 1.35 V
→ Steigung: 50 / 288;   Offsett: 1.23

Da noch keine sichtbare Datei in   /etc/sensors.d   existiert,
habe ich eine neue angelegt.

su
nano /etc/sensors.d/additional.conf
chip "nct6792-*"             # ausgelesen mit sensors -u

  label  in0 "Vcore"
  ignore in1 
  label  in2 "AVcc"
  label  in3 "v3"
  ignore in4  
  ignore in5  
  label  in6 "v6"
  label  in7 "3V_SB"
  label  in8 "VBat"
  label  in9 "v9"
  label  in10 "v10"
  label  in11 "v11"
  label  in12 "v12"
  label  in13 "v13"
  ignore in14  
  label fan2 "CPU"           # 1319..1925
  label temp1_input "Sys118" # geht nicht
  label temp2_input "CPU-63"
  label temp4_input "Aux107"
  label temp5_input "Aux108"
  label temp6_input "-"
  
  compute in0 @ * (25/144) + 1.23, (@ - 1.23) * (144 / 25) 

  set in0_min   1.29  # 0.400 0.408 0.472 0.608 0.632 0.640 
  set in0_max   1.36  # 0.648 0.656 0.664 0.672 0.688
  set in2_min   3.08  # 3.424 3.440
  set in2_max   3.78  # 
  set in3_min   3.07  # 3.408 3.424
  set in3_max   3.77  #
  set in6_min   0.56  # 0.624 0.632 0.640 0.648 0.656 0.664 0.672 
  set in6_max   0.84  # 0.680 0.712 0.720 0.736 0.744 0.760 0.768
  set in7_min   3.08  # 3.424  
  set in7_max   3.77  #
  set in8_min   2.95  # 3.280 3.296 
  set in8_max   3.61  #
  set in9_min   1.65  # 1.832 1.840 
  set in9_max   2.02  #
  set in10_min  0.17  # 0.184 0.192 0.200
  set in10_max  0.21  #
  set in11_min  0.12  # 0.128 0.136 0.144 0.152 
  set in11_max  0.16  #
  set in12_min  1.45  # 1.616 1.624 1.632 1.648 1.656 1.680
  set in12_max  1.94  # 1.688 1.712 1.720 1.736 1.744 1.752
  set in13_min  0.15  # 1.680 1.688
  set in13_max  1.86  #
  
sensors -s                             aktualisiert die set Werte

Exemplarisch habe ich damit in0 = Vcore korrigiert
und den Alarm für die Spannungen geändert.

Fehlermeldung vermeiden

Nach der Installation von   lm-sensors   holt man sich gewöhlich
auch eine Fehlermeldung mit auf den Schirm.
Und zwar immer dann, wenn man den Bildschirm entsperrt.

Authtication required

Da ich die Temperatur nicht benötige, kann ich in
Psensor > Preferences > Blatt: Providers > Abschnitt: Hard disk drive > udisk2
die Unterstützung abschalten.
Nach einem Neustart sollte die Fehlermeldung verschwunden sein.

psensor_udisk2

Quellen

kernel.org   Lm_sensors - Linux hardware monitoring
linuxhint.com   How to Check CPU Temperature in Linux
phoenixnap.com   How to Check CPU Temperature on Linux
pinguin.gws2.de   Ubuntu: Temperaturen des Systems anzeigen - Diagnosetool
cyberciti.biz   Linux Read CPU Temperature Sensor Chip Data Including Voltage and Fan Speed With lm-sensors
wpitchoune.net   psensor is a graphical hardware temperature monitor for Linux
web.archive.org   How to figure out the voltage labels and scaling factors
die.net   sensors.conf(5) - Linux man page
nuvoton.com   LPC Super I/O for Desktop & Server - NCT6792D-A
pcgameshardware.de   Spannung beim Ryzen 5 2600

Zum Anfang

Grafik-Karten-Test

Als schnell zu installierenden Test meiner passiven Radeon HD6450
habe ich nur   glxgears   gefunden.
Dabei ist die Frame-Anzahl nicht so wichtig.
Wichtiger ist jedoch, das die Grafik-Karte bei hohen Temperaturen
noch stabil läuft und die Temperatur sich auf ein bestimmtes Niveau einpendelt.

su
apt install mesa-utils
exit
glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
305 frames in 5.0 seconds = 60.907 FPS
301 frames in 5.0 seconds = 60.004 FPS

Im 2. Terminal-Fenster habe ich die Temperatur-Messung gestartet.

watch sensors radeon-pci-2600

Every 2.0s: sensors radeon-pci-2600                b41: Wed Jan  5 18:50:58 2022

radeon-pci-2600
Adapter: PCI adapter
temp1:        +68.5°C  (crit = +120.0°C, hyst = +90.0°C)

Nach etwa 30 Minuten ist die Temperatur von 54°C auf 67°C gestiegen.
Den "Screenshot" habe ich übrigens via Ctrl-Shift-A Ctrl-Shift-C gemacht. 18:15

Programme wie   gputest   oder   glmark2   sind in Synaptic unter DEB 10 nicht zu finden.

Quellen

maketecheasier.com   How to Stress Test a Graphics Card on Linux

Zum Anfang

Platten-Test

wikipedia.org SMART steht für Self-Monitoring, Analysis and Reporting Technology und
steht eigentlich bei allen heutigen Platten zur Verfügung.

Die wichtigsten Parameter des Kommandos smartctl sind folgende.

Um die Festplatten zu überprüfen gibt es smartmontools, welches zunächst installiert wird.
Dann suche ich mit fdisk die zu überprüfende Festplatte heraus und starte den Test.

su
apt install smartmontools

fdisk -l                               bis deb 9
/sbin/fdisk -l                         ab deb 10

Disk /dev/nvme0n1: 447.1 GiB, 480103981056 bytes, 937703088 sectors
…
Disk /dev/sda: 2,7 TiB, 3000592982016 bytes, 5860533168 sectors
…

Beim ersten Laufwerk handelt es sich um eine M2 PCI SSD
und beim zweiten Laufwerk um eine klassische, über S-ATA angeschlossene, Festplatte.

su
smartctl -i /dev/sda                   bis deb 9
bash: smartctl: command not found      ab deb 10

whereis smartctl                       ab deb 10
smartctl: /usr/sbin/smartctl /usr/share/man/man8/smartctl.8.gz

/usr/sbin/smartctl -i /dev/sda         ab deb 10
smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-15-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate NAS HDD
Device Model:     ST3000VN000-1H4167
Serial Number:    Z300HMZ3
LU WWN Device Id: 5 000c50 063922d0d
Firmware Version: SC42
User Capacity:    3.000.592.982.016 bytes [3,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5900 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Sun Apr 11 19:29:22 2021 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

Ist dies die gewünschte Platte, kann man mit den eigentlichen Test anfangen.

su
/usr/sbin/smartctl -s on /dev/sda         ab deb 10
smartctl 6.6 2017-11-05 r4594 [x86_64-linux-4.19.0-14-amd64] (local build)
Copyright (C) 2002-17, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF ENABLE/DISABLE COMMANDS SECTION ===
SMART Enabled.

smartctl -t long /dev/sda              bis deb 9
/usr/sbin/smartctl -t long /dev/sda    ab deb 10

smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-15-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF OFFLINE IMMEDIATE AND SELF-TEST SECTION ===
Sending command: "Execute SMART Extended self-test routine immediately in off-line mode".
Drive command "Execute SMART Extended self-test routine immediately in off-line mode" successful.
Testing has begun.
Please wait 448 minutes for test to complete.
Test will complete after Mon Apr 12 03:15:40 2021

Use smartctl -X to abort test.

Wie man sieht, benötigt dieser Test beachtlich viel Zeit (ca. 7,5 Stunden).
Man könnte nun ab und zu gucken ob der Test schon abgeschlossen ist mit folgenden Befehl.

su
smartctl -l selftest /dev/sda               bis deb 9
/usr/sbin/smartctl -l selftest /dev/sda     ab deb 10

smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-15-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF READ SMART DATA SECTION ===
SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Self-test routine in progress 30%      6968         -
# 2  Extended offline    Completed without error       00%      2716         -
# 3  Extended offline    Completed without error       00%        13         -

Irgendwann ist der Test abgeschlossen und man möchte das Ergebnis sehen.
Sinnvoll ist es, mindestens Jährlich, diesen Test zu durchlaufen und
die Ergebnisse in eine Datei zu speichern.

su
smartctl -a /dev/sda                   bis deb 9
/usr/sbin/smartctl -a /dev/sda         ab deb 10

smartctl 6.6 2016-05-31 r4324 [x86_64-linux-4.9.0-15-amd64] (local build)
Copyright (C) 2002-16, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Seagate NAS HDD
Device Model:     ST3000VN000-1H4167
Serial Number:    Z300HMZ3
LU WWN Device Id: 5 000c50 063922d0d
Firmware Version: SC42
User Capacity:    3.000.592.982.016 bytes [3,00 TB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    5900 rpm
Form Factor:      3.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-2, ACS-3 T13/2161-D revision 3b
SATA Version is:  SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Apr 12 09:21:26 2021 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: PASSED

General SMART Values:
Offline data collection status:  (0x82)	Offline data collection activity
					was completed without error.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (   0)	The previous self-test routine completed
					without error or no self-test has ever 
					been run.
Total time to complete Offline 
data collection: 		(  128) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   1) minutes.
Extended self-test routine
recommended polling time: 	 ( 448) minutes.
Conveyance self-test routine
recommended polling time: 	 (   2) minutes.
SCT capabilities: 	       (0x10bd)	SCT Status supported.
					SCT Error Recovery Control supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 10
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000f   116   099   006    Pre-fail  Always       -       108431584
  3 Spin_Up_Time            0x0003   092   091   000    Pre-fail  Always       -       0
  4 Start_Stop_Count        0x0032   100   100   020    Old_age   Always       -       629
  5 Reallocated_Sector_Ct   0x0033   100   100   010    Pre-fail  Always       -       0
  7 Seek_Error_Rate         0x000f   074   060   030    Pre-fail  Always       -       28099755
  9 Power_On_Hours          0x0032   093   093   000    Old_age   Always       -       6977
 10 Spin_Retry_Count        0x0013   100   100   097    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0032   100   100   020    Old_age   Always       -       627
184 End-to-End_Error        0x0032   100   100   099    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
188 Command_Timeout         0x0032   100   099   000    Old_age   Always       -       1
189 High_Fly_Writes         0x003a   001   001   000    Old_age   Always       -       263
190 Airflow_Temperature_Cel 0x0022   065   055   045    Old_age   Always       -       35 (Min/Max 22/38)
191 G-Sense_Error_Rate      0x0032   100   100   000    Old_age   Always       -       0
192 Power-Off_Retract_Count 0x0032   100   100   000    Old_age   Always       -       24
193 Load_Cycle_Count        0x0032   100   100   000    Old_age   Always       -       629
194 Temperature_Celsius     0x0022   035   045   000    Old_age   Always       -       35 (0 17 0 0 0)
197 Current_Pending_Sector  0x0012   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0010   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x003e   200   200   000    Old_age   Always       -       0

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Extended offline    Completed without error       00%      6970         -
# 2  Extended offline    Completed without error       00%      2716         -
# 3  Extended offline    Completed without error       00%        13         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Die Interpretation der Daten ist leider ein wenig schwierig…
Laut Wiki sollte zumindest die Anzahl der Start- und Stop-Vorgänge minimiert werden
und der Temperaturbereich eingehalten werden.

Ich persönlich hatte bisher nur einen einzigen Hardware-Ausfall (innerhalb der ersten Monate).
In den meisten Fällen waren es unter Windows amok gelaufene Programme, schlechte Treiber, etc.
Also Software-Fehler…
Unabhängig davon, würde ich immer NAS-Laufwerke (konzipiert für den Dauereinsatz) empfehlen.

Zum Anfang

Fehlermeldungen…

Bei einer SSD Force MP510 habe ich folgende Meldung bekommen
Read NVMe SMART/Health Information failed: NVMe Status 0x2002.

Eine Möglichkeit ist es, sich unter smartmontools.org
die aktuellsten Platten-Daten runter zu laden und die aktuelle Datei (bei DEB 10 von 2018) auszutauschen.

su
cp /home/a1/Downloads/drivedb.h /var/lib/smartmontools/drivedb/

Leider war meine SSD dort auch noch nicht enthalten.

Für diesen Fall gibt es die Möglichkeit einen Bericht zu erstellen. Siehe…
smartmontools.org My ATA/SATA drive is not in the smartctl/smartd database

Zum Anfang

Durchsatzrate der Platte messen

Eine einfache Möglichkeit die Lesegeschwindigkeit einer Platte unter Umgehung des Caches zu testen,
ist mehrmals (2 - 3 Mal laut man)   hdparm   aufzurufen.

sudo apt install hdparm hddtemp
/usr/sbin/fdisk -l
Disk /dev/nvme0n1: 447.1 GiB, 480103981056 bytes, 937703088 sectors
Disk model: Force MP510                             
…
Disk /dev/sda: 2.7 TiB, 3000592982016 bytes, 5860533168 sectors
Disk model: ST3000VN000-1HJ1
…
Disk /dev/sdb: 7.5 GiB, 8027897856 bytes, 15679488 sectors
Disk model: DataTraveler 2.0

sudo /usr/sbin/hdparm --direct -tT /dev/sda
/dev/sda:
 Timing O_DIRECT cached reads:   828 MB in  2.00 seconds = 413.12 MB/sec
 Timing O_DIRECT disk reads: 536 MB in  3.00 seconds = 178.50 MB/sec
 
/usr/sbin/hddtemp /dev/sda
/dev/sda: ST3000VN000-1HJ166: 35°C

Damit habe ich zumindest einen optimal erreichbaren Wert ermittelt.
Je nachdem wie geschickt ich bei der   Partitionierung   war,
komme ich unterschiedlich nah an diesen theoretischen Wert ran.

df -h
Filesystem      Size  Used Avail Use% Mounted on
…
/dev/nvme0n1p1   28G   11G   16G  41% /
/dev/nvme0n1p6  396G  204G  173G  55% /home
/dev/sda3       2.7T  1.3T  1.3T  49% /mnt/sda3

cd /mnt/sda3/a0/
sync; dd if=/dev/zero of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.550016 s, 2.0 GB/s

sync; dd if=/dev/urandom of=tempfile bs=1M count=1024; sync
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 15.2704 s, 70.3 MB/s

dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 0.11175 s, 9.6 GB/s

sudo sync && /sbin/sysctl -w vm.drop_caches=3
vm.drop_caches = 3

dd if=tempfile of=/dev/null bs=1M count=1024
1024+0 records in
1024+0 records out
1073741824 bytes (1.1 GB, 1.0 GiB) copied, 6.26363 s, 171 MB/s

rm tempfile 
sudo systemctl reboot

Man sieht schön, dass wenn man den Cache nicht ausschaltet, kommen da fantastische Werte heraus.
Und die Schreibrate wird wesentlich vom zu schreibenen Inhalt bestimmt.
Schreibe ich Zufallszahlen wird die CPU beansprucht
und das Laufwerk kann schlecht komprimieren.
Schreibe ich Nullen, hat die CPU nicht viel zu tun, aber das Laufwerk könnte optimieren.
Nach dem Test reboote ich, weil ich an Kernel-Variablen gedreht habe.

SSD's & TRIM

Nun habe ich eine SSD Corsair MP510, welche bestimmte Dateien kriechend langsam liest.

Der folgende Befehl läßt sich leider nur auf SATA-SSDs anwenden.
Bei einer PCIe M2 SSD bekomme ich eine Fehlermeldung.

su
/usr/sbin/hdparm -I /dev/nvme0n1 | grep -i TRIM
 HDIO_DRIVE_CMD(identify) failed: Inappropriate ioctl for device
 
sudo /usr/sbin/hdparm -I /dev/sda | grep -i TRIM
	   *	Data Set Management TRIM supported (limit 8 blocks)
	   *	Deterministic read ZEROs after TRIM

Quellen

thomas-krenn.com   Test mit smartctl
smartmontools.org   smartmontools
ubuntuusers.de   Festplatten-Geschwindigkeitstest
shellhacks.com   Disk Speed Test (Read/Write): HDD, SSD Performance in Linux
stackpointer.io   Linux: Clear Memory Cache
cyberciti.biz   How to reload sysctl.conf variables on Linux
stackexchange.com   Slow USB 3 write speed
blackmoreops.com   USB and SSD drive speedtest in Linux
https://wiki.ubuntuusers.de/SSD/TRIM/

Zum Anfang

Speichersticks, SD-Cards, etc. überprüfen

Beim Übertragen von Daten via USB-Stick benutze ich möglichst unter Windows den Totalcommander
und unter Linux das Programm Krusader.
Der Hintergrund ist der, dass beide Programme die Möglichkeiten einer Datei-Synchronisation nach Inhalt,
statt nach Datum und Dateilänge, ermöglichen.

Leider gab es speziell bei den Wechseldatenträgern z.B. USB-Speicher, SD-Cards, etc.
Betrugsversuche, sodaß dagegen in der Windows-Welt das Programm   H2testw   entwickelt wurde.
Es beschreibt den Speicher so weit wie möglich und misst die Schreibgeschwindigkeit.
Danach wird das geschriebene gelesen und überprüft.
Man bekommt also nebenbei noch ganz wertvolle Informationen.

Das Pendant in der Linux-Welt ist   F3 - Fight Flash Fraud.
Es besteht aus   f3write, welches 1 GB Dateien mit Namen N.h2w auf den Datenträger schreibt
und   f3read   um diese Dateien zu überprüfen.

WARNUNG: alle Daten auf den zu schreibenden Medium können verloren gehen!

Nachdem ein externes Speichermedium z.B. via Thunar gemounted wurde,
kann f3write mit den Pfad zum Speichermedium gestartet werden.
Hier z.B. /media/a1/AIR/.

sudo apt install f3

f3write /media/a1/AIR/
F3 write 7.1
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

Free space: 7.46 GB
Creating file 1.h2w ... OK!                         
Creating file 2.h2w ... OK!                         
Creating file 3.h2w ... OK!                         
Creating file 4.h2w ... OK!                         
Creating file 5.h2w ... OK!                         
Creating file 6.h2w ... OK!                         
Creating file 7.h2w ... OK!                         
Creating file 8.h2w ... OK!                        
Free space: 0.00 Byte
Average writing speed: 11.94 MB/s

Die Überprüfung findet auf ähnliche art und weise statt.

f3read /media/a1/AIR/
F3 read 7.1
Copyright (C) 2010 Digirati Internet LTDA.
This is free software; see the source for copying conditions.

                  SECTORS      ok/corrupted/changed/overwritten
Validating file 1.h2w ... 2097152/        0/      0/      0
Validating file 2.h2w ... 2097152/        0/      0/      0
Validating file 3.h2w ... 2097152/        0/      0/      0
Validating file 4.h2w ... 2097152/        0/      0/      0
Validating file 5.h2w ... 2097152/        0/      0/      0
Validating file 6.h2w ... 2097152/        0/      0/      0
Validating file 7.h2w ... 2097152/        0/      0/      0
Validating file 8.h2w ...  955424/        0/      0/      0

  Data OK: 7.46 GB (15635488 sectors)
Data LOST: 0.00 Byte (0 sectors)
	       Corrupted: 0.00 Byte (0 sectors)
	Slightly changed: 0.00 Byte (0 sectors)
	     Overwritten: 0.00 Byte (0 sectors)
Average reading speed: 24.30 MB/s

Schreib-Geschwindigkeitsklassen

Größenklassen

Tatsächliche Geschwindigkeiten

Warum auch immer, hatte ich Schwierigkeiten mit den unten genannten µSD-Cards.
Weder der Delock 91704 USB3.0 Reader noch der Transcend TS-RDF9K konnten die µSD anzeigen.

Bezeichnung Platz Schreibgeschw. Lesegeschw. Adapter
SanDisk Ultra Plus UHS-I Card,
up to 150 MB/s V10 A1 C10
SDSQUBC-128G-GN6MA
119 GB 8,73 MB/s 20,14 MB/s Lexar Card Reader LRWM01U-7000 Rev C
SanDisk Extreme UHS-I Card,
up to 170 MB/s V30 A2 U3
SDSQXAH-064G-GN6AA
59 GB 11,02 MB/s 19,36 MB/s Lexar Card Reader LRWM01U-7000 Rev C
SanDisk Extreme III,
C6
BH0835111730D
3,77 GB 20,25 MB/s

16,5 MB/s
Lesefehler
11,17 MB/s
18.4 MB/s
Transcend TS-RDF9K
Delock 91443
H2testw 1.4

Zum Anfang

Quellen

heise.de   H2testw 1.4 - Speicher und Speed-Test von nicht volatilen Medien
wordpress.com   testing-sd-cards-with-linux
linuxreviews.org   HOWTO_test_SD_cards_and_identify_fake_ones_(mostly_sold_on_ebay) - f3write, f3read
github.com   AltraMayor f3 - f3write, f3read, f3probe, f3fix
linux-usb.org   USB Testing on Linux - testusb, usbtree
giga.de   USB-Stick: Geschwindigkeit testen – so geht's
blogspot.com   Increase USB Flash Drive Write Speed - alignment
linuxhint.com   List USB Devices Linux