hampft!

Harte Ware: Hardware im Griff unter Linux

Wie geht's meinem Speicher? Was machen die Platten? Was habe ich eigentlich für ein Board in meinem Rechner? Was für Speichermodule hab' ich eigentlich? Ist denn noch ein PCI-Slot frei?

Prinzipiell kann man die meisten Fragen mit beherztem Einsatz eines Kreuzschlitzschraubenziehers lösen... Aber es gibt besseres.

Vor dem Booten/Kurz nach der Installation

Auch einen neuen Rechner will man gerne auf Herz und Nieren testen.

memtest86

Wie sieht's mit dem Speicher aus? memtest86 hat alles, um den vorhandenen Speicher auf Herz und Nieren zu testen. Nach dem Compilieren kann mit make eine Bootdiskette erstellen, die den eigentlichen Speichertest durchführt. Wer sich nicht an einen Compiler traut wird auf der Website auch mit fertigen Diskimages bedient.

Der eigentliche Test läuft ohne Betriebssystem, es wird direkt von Boodiskette, BootCD oder aus eigenem Bootimage von der Platte gebootet.

bonnie++

Der Klassiker unter den Plattenperformance Tests ist bonnie++. bonnie++ tut der jeweiligen Platte Gewalt an, indem es riesige Files erzeugt, wild darauf zugreift und wieder löscht oder Unmengen von Files in einem Verzeichnis erzeugt, liest und vernichtet. bonnie++ läuft dabei stundenlang und die Ergebnisse werden im CSV-Format ausgegeben. Zusätzliche Tools stellen die Ergebnisse als Text oder HTML übersichtlich dar.

Mit den Ergebnissen kann man prima den Erfolg der Optimierung mit hdparm überprüfen, die besten Parameter für die Formatierung ausknobeln oder einfach bei anderen Linux-Freaks angeben

tiobench

Auch tiobench dient zum Bestimmen der Festplattenperformance. Allerdings versucht tiobench dem Problem gleichzeitiger Zugriffe zu Leibe zu rücken, indem es mit immer mehr Prozessen auf eine Datei zugreift. Damit misst es vor allem, wie gut Betriebssystem und Filesystem mit gleichzeitigen Zugriffen zurecht kommt.

crashme

crashme ist ein wahrhaft grausames Tool, das einfach nur zufällige Zeichenketten erzeugt und sie dann in einem Sohnprozeß ausführt. Die Theorie sagt, dass irgendwann zufällig Code erzeugt wird, der einen Fehler im Kernel aufdeckt. Man sollte crashme auf keinen Fall starten, wenn man keine Sicherung hat...

Beim Booten

hdparm

Was nützt der rattenschnelle Rechner, wenn die IDE-Platten im PIO-Mode vor sich hindümpeln? Ein Blick auf hdparm, das eigentlich jeder Distribution beiliegt, lohnt sich durchaus. Hier kann man die Platten in einen wesentlich günstigeren Modus schalten. Herumexperimentieren sollte man damit aber nur, wenn man vorher alle wichtigen Daten gesichert hat oder das System sowieso gerade neu aufgesetzt ist. Datenverluste nach dem Reboot sind durchaus möglich, wenn man die falschen Parameter erwischt ;). google hat unzählige Tips zu hdparm.

Im laufenden Betrieb

dmidecode

Umfassende Auskunft über Prozessor, Motherboard mit allen Slots, Slotbelegung, Hersteller, Seriennummern usw gibt midecode. Bei DMI handelt es sich um das "Desktop Management Interface", es wird von fast allen einigermassen modernen Mainboards unterstützt. Beim Aufruf von dmidecode ergiessen sich dann eine gewaltige Fülle von Systeminformationen über den Admin, unter anderem Seriennummern von Board, Karten und Prozessor, Version des BIOS, Größe und Typ der Prozessorcaches, Größe, Typ und Hersteller der einzelnen Memories usw. usf.

root@python:~# dmidecode
# dmidecode 2.4
SMBIOS 2.3 present.
47 structures occupying 1651 bytes.
Table at 0x000F0FD0.
Handle 0x0000
        DMI type 218, 17 bytes.
        OEM-specific Type
                Header and Data:
                        DA 11 00 00 B2 00 DE 00 08 00 00 00 00 FF FF 00
                        00
Handle 0x0001
        DMI type 0, 20 bytes.
        BIOS Information
                Vendor: Intel Corp.
                Version: A06
                Release Date: 06/12/2002
                Address: 0xF0000
                Runtime Size: 64 kB
                ROM Size: 512 kB
                Characteristics:
                        PCI is supported
                        PNP is supported
                        BIOS is upgradeable
                        BIOS shadowing is allowed
                        ESCD support is available
                        Boot from CD is supported
                        Selectable boot is supported
                        EDD is supported
                        Japanese floppy for NEC 9800 1.2 MB is supported (int 13h)
                        Japanese floppy for Toshiba 1.2 MB is supported (int 13h)
                        5.25"/360 KB floppy services are supported (int 13h)
                        5.25"/1.2 MB floppy services are supported (int 13h)
                        3.5"/720 KB floppy services are supported (int 13h)
                        3.5"/2.88 MB floppy services are supported (int 13h)
                        Print screen service is supported (int 5h)
                        8042 keyboard services are supported (int 9h)
                        Serial services are supported (int 14h)
                        Printer services are supported (int 17h)
                        CGA/mono video services are supported (int 10h)
                        ACPI is supported
                        USB legacy is supported
                        AGP is supported
                        LS-120 boot is supported
                        ATAPI Zip drive boot is supported
                        BIOS boot specification is supported
[...und weitere 500 Zeilen Informationen ...]

si

Auch im /proc stehen Unmengen an Informationen über die Hardware. Nur steht das da alles über ein recht großes Filesystem verstreut drin. Das ist der Einsatz für si von Joe Turgeon. si sammelt eine Fülle von Informationen aus dem /proc und zeigt sie übersichtlich an, auf Wunsch sogar in Farbe. Und bunt.

root@python:~# dmidecode
si - Version 1.0 - By Joe Turgeon (jturgeon@isd.net)
si:  Using Linux Kernel 2.4 Code
si:  Loading Information
si:  Dumping Information


si - Program Information:
  si - Version 1.0 - By Joe Turgeon (jturgeon@isd.net)

System Information:
  CPU Information:
        Number of CPUs: 1
        Processor #0 Information:
                Vendor: GenuineIntel
                Model:  Intel(R) Pentium(R) 4 CPU 2.00GHz
                Speed:  1993.568 MHz
                Cache:  512 KB
                CPU Usage By Priority Modes:
                        User Mode:          148 Seconds (  0:02:28)
                        Nice Mode:           10 Seconds (  0:00:10)
                        System Mode:         55 Seconds (  0:00:55)
                        Idle Mode:         2737 Seconds (  0:45:37)
        Total CPU Usage By Priority Modes:
[... und weitere Informationen zum laufenden System ...]

lspci

lspci gehört zur Standardinstallation der meisten Distributionen, unbekannt ist es trotzdem. Mit lspci kann man Informationen über alle Karten in den PCI-Slots und zu den meisten On-Board Devices bekommen. Sehr praktisch.

root@python:~# lspci -v
00:00.0 Host bridge: Intel Corp. 82845 845 (Brookdale) Chipset Host Bridge (rev 04)
        Flags: bus master, fast devsel, latency 0
        Memory at f8000000 (32-bit, prefetchable) [size=64M]
        Capabilities: [e4] #09 [9104]
        Capabilities: [a0] AGP version 2.0

[...]

02:0a.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139 (rev 10)
        Subsystem: Allied Telesyn International: Unknown device 2503
        Flags: bus master, medium devsel, latency 32, IRQ 11
        I/O ports at d400 [size=256]
        Memory at feafec00 (32-bit, non-prefetchable) [size=256]
        Capabilities: [50] Power Management version 1

02:0b.0 SCSI storage controller: Adaptec AHA-294x / AIC-7871 (rev 03)
        Flags: bus master, medium devsel, latency 32, IRQ 9
        I/O ports at d800 [disabled] [size=256]
        Memory at feaff000 (32-bit, non-prefetchable) [size=4K]
        Expansion ROM at feae0000 [disabled] [size=64K]

smartmontools

Ein ganz anderes Kaliber sind die smartmontools. Festplatten sind schon seit längerem fast ausnahmslos mit einem integrierten Diagnosetool ausgestattet, bei IDE-ATA Platten heisst das S.M.A.R.T.. Bei SCSI-Platten gibt's das auch, da heisst das aber leicht irreführend Informal Exceptions. Und für Tapes gibt es da TapeAlert. Alle drei Technologien bekommt man mit den smartmontools in den Griff.

Ein conjob wirft täglich die verschiedenen Plattenselbsttests an, der smartd überwacht die S.M.A.R.T. Parameter der Platte und per EMail Alarm, wenn die Platte ihren eigenen Ausfall in naher Zukunft voraussieht. Unkritische Änderungen der Plattenmesswerte (einstellbar pre /etc/smartd.conf) werden per syslog protokolliert.

Schliesslich kann man mit smartctl die Plattenparameter, -messwerte und die Ergebnisse der letzten Selbsttests aus der Platte auslesen.

root@python:~# smartctl -a /dev/hda
smartctl version 5.30 Copyright (C) 2002-4 Bruce Allen
Home page is http://smartmontools.sourceforge.net/

=== START OF INFORMATION SECTION ===
Device Model:     WDC WD205BA
Serial Number:    WD-meinsmeinsmeins
Firmware Version: 16.13M16
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   4
ATA Standard is:  Exact ATA specification draft version not indicated
Local Time is:    Sat Apr  3 08:40:12 2004 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:  (0x85) Offline data collection activity was
                                        aborted by an interrupting command from host.
                                        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:                 (1568) seconds.
Offline data collection
capabilities:                    (0x1b) SMART execute Offline immediate.
                                        Auto Offline data collection on/off support.
                                        Suspend Offline collection upon new
                                        command.
                                        Offline surface scan supported.
                                        Self-test supported.
                                        No Conveyance Self-test supported.
                                        No 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.
                                        No General Purpose Logging support.
Short self-test routine
recommended polling time:        (   2) minutes.
Extended self-test routine
recommended polling time:        (  28) minutes.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x000b   200   197   051    Pre-fail  Always       -       0
  3 Spin_Up_Time            0x0006   104   100   000    Old_age   Always       -       3850
  4 Start_Stop_Count        0x0012   098   098   040    Old_age   Always       -       2933
  5 Reallocated_Sector_Ct   0x0012   200   200   112    Old_age   Always       -       0
  9 Power_On_Hours          0x0012   095   095   000    Old_age   Always       -       3894
 10 Spin_Retry_Count        0x0013   100   100   051    Pre-fail  Always       -       0
 11 Calibration_Retry_Count 0x0013   100   100   051    Pre-fail  Always       -       0
 12 Power_Cycle_Count       0x0012   098   098   000    Old_age   Always       -       2915
196 Reallocated_Event_Count 0x0012   200   200   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0012   200   200   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0012   200   200   000    Old_age   Always       -       0
199 UDMA_CRC_Error_Count    0x000a   200   253   000    Old_age   Always       -       0
200 Multi_Zone_Error_Rate   0x0009   200   199   051    Pre-fail  Offline      -       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  Short offline       Completed without error       00%       617         -

Bei der Lektüre der Homepage kann man noch einiges über Hardware lernen...

sar/sysstat

Ein Klassiker ist sar, der System Activity Report. sar gehört zu jeder Distribution und ist meist in einem Paket namens sysstat enthalten. Der Dämon sadc sammelt im 10- oder 5-Minuten-Takt Informationen zu Netz-, Platten-, Prozessorlast und Speicherbelegung. Mit sar kann man sich diese Informationen dann übersichtlich anzeigen lassen. Wenn man es richtig bunt haben will, kann man sich noch das tcl-Tool isag dazuinstallieren, dann bekommt man die Daten graphisch angezeigt.

Hier zum Beispiel ein Ausschnitt der Daten der I/O Transfers am 1. April, von 11:22 bis 11:32 wurde recht viel von den Platten gelesen...

root@python# sar -b -f /var/log/sa/sa01
Linux 2.4.21-h1 (python)        04/01/04

[...]
08:02:01          tps      rtps      wtps   bread/s   bwrtn/s
08:12:01        31.05      3.24     27.80     54.83    547.77
08:22:01        23.63      2.08     21.55     39.67    436.15
08:32:01        25.77      1.82     23.95     36.28    536.15
08:42:01        34.14      5.47     28.67    105.89    583.81
08:52:01        34.40      2.25     32.15     76.65    718.85
09:02:00        40.64      6.02     34.62     84.96    669.78
09:12:00        30.64      1.43     29.21     47.13    572.36
09:22:00        35.89      7.68     28.22    197.80    596.67
09:32:00        29.61      3.64     25.97     69.05    511.35
09:42:00        36.84      9.00     27.84    121.35    594.01
09:52:00        30.12      2.65     27.47     42.65    559.55
10:02:01        37.33      6.03     31.30    111.64    718.03
10:12:01        33.15      5.49     27.66     75.37    585.23
10:22:01        42.09      8.59     33.50    203.71    782.53
10:32:01        36.68      3.80     32.89     50.25    746.99
10:42:01        45.43     15.88     29.54    545.83    643.08
10:52:01        35.95     10.07     25.88    128.79    555.77
11:02:00        65.84     31.03     34.81    421.38    728.22
11:12:00        38.43      6.22     32.22    113.12    834.88
11:22:00        40.44      9.99     30.45    294.77    678.96
11:32:00        69.92     40.70     29.22   1654.80    784.97
11:42:00        32.37      7.91     24.46    205.19    610.32
[...]
Average:         1.44      1.68      1.79      0.93      0.30

So kann man auch im Nachhinein Engpässe im System aufspüren. Die letzten 7 Tage werden standardmäßig vom sadc aufbewahrt.

Links


hampft! ->