readme.txt
Code: Select all
H2benchw -- by Harald Bögeholz & Lars Bremer / c't Magazin für Computertechnik
Copyright (C) 2009 Heise Zeitschriften Verlag GmbH & Co. KG
==============================================================================
H2benchw runs as a Win32 console application (at the command prompt)
under Windows NT, 2000, XP and Vista. It accesses the hard drive
directly by opening it as a phyisical drive. Do to this, it needs
administrator privileges. In order to obtain reproducable results, you
should not run any other applications while benchmarking and leave the
machine alone. (H2benchw maximizes it's own process just to be sure.)
On the command line, the number of the hard disk you want to test and
any options for the test procedure must be given. When calling the
program without parameters, a short help text is displayed. All
options must be entered in lower case letters. The number of the hard
disk you want to test is the most important option. The first physical
disk is number 0, the next one is number 1, and so on. If you enter
the disk number without any options, H2benchw displays geometry
(cylinders, heads, sectors) and capacity of the disk. For IDE drives
you should additionally get model number, serial number and firmware
revision. If there are several disks in the computer, it is
recommended to run H2benchw in this way first, to make sure that you
select the correct disk later.
H2benchw ignores partitioning and accesses the disk directly, so that
all data will be lost when writing on the disk. For this reason,
H2benchw normally operates in read-only mode. The option "-!" activates
write measurements. For safety reasons this will not work if there are
any partitions on the disk.
H2benchw measurement consists of five components: interface transfer
rate, data integrity check, zone measurement, the measurement of
access times and application profiles. For a detailed description
please see c't 8/02, pp 194ff, c't 15/02, pp 150ff, and c't 23/02, pp
160ff (in German).
The option "-c <n>" (-c stands for "core test" for historical reasons)
activates the interface transfer rate measurement at <n> percent of
the total capacity. This measurement is usually done at 0 percent
since that is the fastest zone for most hard drives.
The option "-d <n>" activates the integrity check. The first <n>
sectors of the disk are fully checked, the rest ist only sampled.
Instead of a number you can use the word "max" to fully test the whole
disk. For more information see below under "Data integrity check".
The option "-z" carries out the zone measurement.
The option "-s" activates the seek measurement.
The option "-p" measures application profiles. Caution: This
measurement is no longer meaningful since access profiles of the OS
and applications have changed. Furthermore h2benchw makes some
assumptions that are no longer valid for todays hard drives so that
some profiles yield unrealistically good results.
When you enter the option "-a", all measurements are carried out; this
option combines "-c", "-z", "-s", and "-p", and aditionally "-d 20480"
if -! is also specified.
Use the option "-w <filename>" to enter a <filename> for storing the
results. H2benchw adds the extensions ".txt" and ".ps" to the given
base name and generates two result files.
The file with the extension ".txt" is an ASCII file, the first part of
which is a summary of the results. The second part contains detailed
results of the zone measurements. Please note that the zone
measurement has up to 1000 measuring points for both reading and
writing tests. Each result is given on a separate line, so that the
results can be evaluated with other programs. Before printing out the
.txt file, use a text editor to cut off the second part of the file --
otherwise you print out more than 30 pages of "garbage".
The file with the extension ".ps" is in PostScript format and
summarizes all results on a single page (DIN A4). Those equipped with
a postscript printer can simply send the file to the printer, for
example with the command
copy /b filename.ps prn
If you do not own a PostScript printer or if you want to display the
results on the screen, you can use the freeware interpreter
GhostScript or GhostView. These programs are freely available on the
internet for practically all operating systems. For current versions,
see http://www.cs.wisc.edu/~ghost/.
The following options can be used for documentation purposes: "-tt"
followed by the name of the hard disk (in quotation marks), assigns
the "title" of the test, "-ts" is meant for additional information
such as the media type in case of removable media. In the same way,
"-tb" is used for the BIOS, "-tc" for the CPU, "-tm" for the
motherboard, and "-ta" for the adapter (SCSI or EIDE). Since these
last components are rarely changed, you can also put them in
environment variables (i.e. put some SET commands into a batch file or
set the variables through the control panel in XP under
System->Advanced->Environment Variables). The relevant variables are
named H2BTITLE, H2BMEDIUM, H2BBIOS, H2BCPU, H2BBOARD, and H2BADAPTER.
They will be referred to when the command line does not contain any
relevant data.
In most cases, you only have to enter the name of the hard disk for
the test. Here is a typical command:
h2benchw 1 -a -! -tt "harddisk 42" -w 42
This tests the second hard disk connected to the computer and stores
the results in the files "42.txt" and "42.ps".
Data integrity check
====================
Originally H2benchw was a benchmark only, i.e., it measures how fast
you can read and write data but doesn't check the data for
correctness. When IDE drives crossed the 128 GByte boundary it seemed
a good idea to implement a data integrity check (option -d <n>). It
works as follows:
First it writes (different!) test patterns to the first <n> sectors of
the drive. The default is 20480 sectors (10 MByte). Instead of <n> you
can type "max" to test the whole disk. Next H2benhcw writes five
sectors each around LBAs that are powers of two (in case of driver
bugs these are the critical addresses). Finally the test writes a
pseudo-random sequence of sectors for a certain time (default: 10
seconds). The duration of this last phase can be changed with the
option -dt <s> where <s> specifies the number of seconds.
After a short breather H2bench reads the test patterns written before
and checks them. In case of an error it aborts with a message giving
the location of the error and the expected and found value. The test
data has the LBA of each sector stored in the first dword of that
sector. If there is a mismatch here that usually means that some
sector has been written to the wrong address. The actual value in the
first dword then shows which sector the data should have been written
to.
CAUTION: If you run the integrity check read-only, i.e., without the
option -!, the appropriate amount of test data must of cause have been
written to the disk in a previous run, otherwise you get an error
message.
Language options
================
H2benchw currently "speaks" three languages: German, English and
Dutch, the default being German. The command line option "-deutsch"
selects German, "-english" selects English and "-nederlands" selects
Dutch.
The language can also be pre-selected using the environment variable
H2BLANGUAGE. This avoids specifying the command line option each time.
You should usually set H2BLANGUAGE in the control panel. Examples:
SET H2BLANGUAGE=deutsch for German
SET H2BLANGUAGE=english for English
SET H2BLANGUAGE=nederlands for Dutch
Known limitations
=================
H2benchw works with 32-bit values for the logical block addresses
(LBA). That means it won't work with drives larger than 2 TByte
(hopefully I haven't forgotten a sign bit somewhere and built in a bug
at 1 TByte ;-) ).
On some multi processor or dual-core systems there is a problem with
the timers yielding incorrect results. If in doubt, please repeat the
measurement on a single core system.
Questions
=========
Please send any questions about H2benchw in German or English to
bo@ct.heise.de (Harald Boegeholz). I will take the liberty not to
respond to questions already answered in the FAQ below.
FAQ
===
? H2benchw always aborts with a read error.
: In cases of physical defects, the current version of H2benchw cannot
measure the continuous transfer rate (zone measurement). With luck,
some of the other measurements still work if they don't hit one of
the defective sectors.
? When calling up the hard disk benchmark H2benchw, I always get an
error message stating that the timer does not run monotonically,
and the program is aborted.
: On some chipsets the system timer is buggy: The lower bits are
sometimes read out wrong so that it looks like time is going
backwards.
Up to date this error message has been reported only under Windows
2000. Windows NT and XP seem to compensate the error. If you see
this error message under Windows XP, I would appreciate an exact
description of your system and the circumstances under which it
occured. Please email to bo@ct.heise.de.
In the meantime you can use the option "-Tnocheck" to suppress the
timer check -- but not the underlying problem! When using this
option, H2benchw produces more or less correct results, but the
results are not reliable.
? I can't reproduce your results: For my SCSI drive I get much lower
write rates than you do.
: On SCSI drives we always enable the write cache for benchmarking.
Without write cache SCSI drives write only about half as fast as
they read.
? I have H2benchw versions 2.15 and 2.3. Which one is the latest
version?
: The number after the dot is not meant as a decimal fraction but as
a minor version number. After 2.9 (two-nine) came 2.10 (two-ten),
then 2.11 (two-eleven) and so on. The current version is 3.13.
? My IDE drive achieves a maximum transfer rate of about 7 MByte/s
[sometimes even only 2 MByte/s] when attached to the onboard EIDE
channel of my board although the test results published in c't
magazine are much better. When I connect the drive to another
system the performance is better.
: Probably your drive is running in PIO mode instead of (Ultra) DMA
mode. Check this in the device manager (Windows 2000/XP) or with
the program dmacheck which is available for download from
Microsoft.
? I am using an IDE RAID array. Why doesn't H2benchw display the
model numbers an serial numbers of the drives?
: Reading the ATA device information is currently only implemented
for single IDE drives. On some host adapters it doesn't even work
for single drives, sorry.
Code: Select all
H2benchw -- by Harald Bögeholz & Lars Bremer / c't Magazin für Computertechnik
Copyright (C) 2009 Heise Zeitschriften Verlag GmbH & Co. KG
==============================================================================
H2benchw läuft als Konsolenanwendung (auf der Kommandozeile) unter
Windows NT, 2000, XP und Vista. Es greift direkt auf die Festplatte
zu, indem es sie als Physical Device öffnet und benötigt daher
Administratorrechte. Um nachvollziehbare Ergebnisse zu erhalten,
sollten Sie keine anderen Windows-Anwendungen laufen lassen und den
Rechner während der Messung nicht anrühren. (Sicherheitshalber erhöht
der Benchmark seine Prozesspriorität auf das maximal Mögliche.)
H2benchw erwartet auf der Kommandozeile die Nummer der zu testenden
Festplatte sowie Optionen, die die durchzuführenden Tests festlegen.
Ein Aufruf ohne Parameter liefert einen kurzen Hilfstext. ALLE
OPTIONEN MÜSSEN ALS KLEINBUCHSTABEN ANGEGEBEN WERDEN; die Reihenfolge
ist beliebig. Der wichtigste Parameter ist die Nummer der zu testenden
Festplatte. Die erste physikalische Platte hat die Nummer 0, die
nächste die Nummer 1 und so weiter. Gibt man auf der Kommandozeile nur
die Plattennummer ohne Optionen an, so zeigt H2benchw die Kapazität und
die vom Betriebssystem gemeldete logische Geometrie (CHS-Angabe,
Zylinder, Köpfe, Sektoren) der Platte an. Bei IDE-Platten erfährt man
außerdem Typenbezeichnung, Seriennummer und Firmware-Version. Wenn
mehrere Platten im Rechner sind, empfiehlt es sich, H2benchw zunächst
einmal nur so aufzurufen, um sicherzustellen, dass man die richtige
Platte trifft.
Da H2benchw unter Umgehung der Partitionierung direkt auf die Platte
zugreift, würden beim Beschreiben der Platte alle Daten verlorengehen.
Daher führt er alle Benchmarks normalerweise nur lesenderweise durch.
Erst die Option "-!" aktiviert auch die Schreibmessungen. Diese
wiederum funktionieren aus Sicherheitsgründen nur, wenn keine
Partitionen auf der Platte sind.
H2benchw hat fünf Komponenten: die Messung der Interface-Transferrate,
ein Test der Datenintegrität, die Zonenmessung, die Messung der
mittleren Zugriffszeit (Seek) und die Messung der Anwendungsprofile.
Eine genauere Erläuterung zu den einzelnen Messungen finden Sie im
Platten-Karussell (c't 8/02, S. 194ff, c't 15/02, S. 150ff, c't 23/02,
S. 160ff).
Die Option "-c <n>" (-c steht aus historischen Gründen für "Coretest")
veranlasst die Messung der Interface-Transferrate bei <n> % der
Kapazität der Platte. Üblicherweise gibt man hier 0 an, da die meisten
Festplatten dort am schnellsten sind.
Die Option "-d <n>" testet die Datenintegrität, wobei die ersten <n>
Sektoren der Platte vollständig geprüft werden, der Rest nur
stichprobenartig. Statt einer Zahl darf auch das Wort "max" stehen,
dann testet H2bench die gesamte Platte. Mehr dazu im unten stehenden
Abschnitt "Test der Datenintegrität".
Die Option "-z" aktiviert die Zonenmessung.
Die Option "-s" aktiviert die Seek-Messung.
Die Option "-p" misst die Anwendungsprofile. ACHTUNG: Diese Messung
ist inzwischen nicht mehr aussagekräftig, da sich einerseits das
Zugriffsverhalten von Betriebssystem und Anwendungen geändert hat und
andererseits einige Annahmen, auf denen die Profile basieren, heute
nicht mehr gelten. So liefern einige Teilprofile mit aktuellen
Festplatten unrealistisch überhöhte Messergebnisse.
Die Option "-a" schließlich führt alle Teilmessungen durch; sie
entspricht der Kombination von "-c", "-z", "-p" und "-s" sowie "-d
20480", falls -! angegeben.
Die Option "-w <Dateiname>" legt einen <Dateinamen> für das
Abspeichern der Ergebnisse fest. H2benchw hängt daran die
Erweiterungen ".txt" und ".ps" an und erzeugt zwei Ergebnisdateien.
Die .txt-Datei ist eine ASCII-Datei, die im vorderen Teil die
Ergebnisse im Klartext zusammenfasst. Der hintere Teil enthält die
Detailergebnisse der Zonenmessung. VORSICHT: Die Zonenmessung hat für
Lesen und Schreiben jeweils bis zu 1000 Messpunkte. Die Ergebnisse
stehen jeweils in einer eigenen Zeile, um die Auswertung mit anderen
Programmen zu ermöglichen. Bevor Sie auf die Idee kommen, die
.txt-Datei auszudrucken, sollten Sie mit einem Texteditor den hinteren
Teil der Datei abschneiden, da Sie sonst über 30 Seiten "Zahlenmüll"
zu Papier bringen.
Für den Ausdruck ist die .ps-Datei gedacht. Sie enthält alle
Messergebnisse auf einer DIN-A4-Seite zusammengefasst im
PostScript-Format. Besitzer eines PostScript-Druckers können die Datei
einfach so zum Drucker schicken, beispielsweise mit dem Befehl
copy /b Dateiname.ps prn
Wer über einen weniger edlen Drucker verfügt oder die Ergebnisse am
Bildschirm betrachten möchte, kann den Freeware-Interpreter
GhostScript beziehungsweise das Programm GhostView zur Anzeige
benutzen. Die Programme sind für praktisch alle Betriebssysteme
verfügbar; die aktuellen Versionen sind unter
http://www.cs.wisc.edu/~ghost/ zu finden.
Zu Dokumentationszwecken dienen die folgenden Optionen: "-tt", gefolgt
von der Bezeichnung der Festplatte (in Anführungszeichen), legt den
"Titel" des Tests fest, "-ts" ist für zusätzliche Angaben wie das
Speichermedium bei Wechselmedien vorgesehen. Entsprechend gibt es
"-tb" für das BIOS, "-tc" für die CPU, "-tm" für das Motherboard,
"-ta" für den verwendeten (SCSI- oder EIDE-) Adapter. Da letztere
Komponenten häufig gleichbleiben, kann man die Angaben auch in
Environment-Variablen unterbringen, zum Beispiel per SET-Befehl über
eine Batchdatei oder unter XP in der Systemsteuerung unter
System->Erweitert->Umgebungsvariablen. Die entsprechenden Variablen
heißen H2BTITLE, H2BMEDIUM, H2BBIOS, H2BCPU, H2BBOARD und H2BADAPTER
und kommen dann zum Zuge, wenn auf der Kommandozeile keine
antsprechenden Angaben vorliegen.
Meist braucht man beim Test dann nur noch den Namen der Festplatte
anzugeben. Ein typischer Aufruf lautet beispielsweise
h2benchw 1 -a -! -tt "Festplatte 42" -w 42
Dies führt mit der zweiten am Rechner angeschlossenen Festplatte alle
Messungen durch und speichert die Ergebnisse in den beiden Dateien
"42.txt" und "42.ps".
Test der Datenintegrität
========================
H2benchw ist ursprünglich ein reiner Benchmark, der nur überprüft, wie
schnell Daten gelesen und geschrieben werden, aber nicht, ob dies auch
fehlerfrei erfolgt. Anlässlich der Überschreitung der 128-GByte-Grenze
bei IDE-Platten ist ein Test der Datenintegrität hinzugekommen (Option
-d <n>). Dieser arbeitet wie folgt:
Zunächst schreibt er in die ersten <n> Sektoren der Platte bestimmte
Testmuster (alle verschieden!). Die Voreinstellung für <n> ist 20480
Sektoren (= 10 MByte). Statt <n> darf auch "max" für die gesamte
Kapazität angegeben werden. Anschließend schreibt H2bench jeweils fünf
Sektoren in der Umgebung aller LBAs, die eine Zweierpotenz sind (dies
sind bei Treiberbugs oft die kritischen Adressen). Schließlich
schreibt der Test noch eine gewisse Zeit lang (Voreinstellung: 10
Sekunden) eine pseudo-zufällige Folge von Sektoren. Die Dauer dieser
letzten Phase lässt sich mit der Option -dt <s> verändern, wobei der
Zahlenwert <s> die Dauer in Sekunden angibt.
Nach einer kurzen Verschnaufpause liest H2bench alle zuvor
geschriebenen Testdaten wieder ein und überprüft sie. Wenn dabei ein
Fehler auftritt, bricht er ab und gibt Ort des Fehlers, Soll- und
Istwert aus. Die Testdaten sind so beschaffen, dass im ersten Dword
(Offset 0) eines jeden Sektors dessen LBA steht. Wenn hier bei der
Überprüfung ein Fehler entdeckt wird, bedeutet dies sehr
wahrscheinlich, dass ein Sektor an die falsche Adresse geschrieben
wurde, und man kann anhand des Ist-Wertes erkennen, welcher dies war.
ACHTUNG: Wenn man den Integritätstest ohne die Option -!, also nur
lesenderweise aufruft, muss natürlich zuvor die entsprechende Menge
Testdaten geschrieben worden sein, sonst erhält man eine
Fehlermeldung.
Sprachoptionen
==============
H2benchw "spricht" derzeit drei Sprachen: Deutsch, Englisch und
Niederländisch. Die Kommandozeilenoption "-deutsch" wählt deutsche
Texte, die Option "-english" englische und die option "-nederlands"
niederländische.
Über die Environment-Variable H2BLANGUAGE lässt sich die Sprache
voreinstellen, um sich die Angabe der entsprechenden
Kommandozeilenoption zu ersparen. Zweckmäßigerweise setzt man sie in
der Systemsteuerung. Beispiele:
SET H2BLANGUAGE=deutsch für Deutsch
SET H2BLANGUAGE=english für Englisch
SET H2BLANGUAGE=nederlands für Niederländisch
Bekannte Einschränkungen
========================
H2benchw arbeitet intern mit 32-Bit-Werten für die logischen
Blockadressen (LBA). Es wird daher mit Platten über 2 TByte nicht
funktionieren (hoffentlich habe ich nicht irgendwo ein Vorzeichenbit
vergessen und schon einen 1-TByte-Bug eingebaut ;-) ).
Auf manchen Mehrprozessor- oder Dual-Core-Systemen hat H2benchw
Probleme mit der Zeitmessung. Bei Zweifeln an der Korrektheit der
Ergebnisse sollte man die Messung auf einem Einprozessorsystem
wiederholen.
Fragen
======
Fragen zu H2benchw richten Sie bitte per E-Mail (in deutscher oder
englischer Sprache) an bo@ct.heise.de (Harald Bögeholz). Ich werde mir
erlauben, Fragen, die in den untenstehenden FAQ beantwortet sind, zu
ignorieren.
FAQ:
====
? Der Benchmark H2benchw bricht immer mit einem Lesefehler ab.
: Wenn physikalische Defekte vorliegen, kann die aktuelle Version von
H2benchw die Dauertransferraten nicht messen. Mit etwas Glück
funktioniert aber eine der anderen Messungen noch, wenn sie den
defekten Sektor zufällig nicht trifft.
? Beim Aufruf des Festplatten-Benchmarks H2benchw erhalte ich immer
die Fehlermeldung, dass der Timer nicht monoton laufe, und das
Programm bricht ab.
: Bei manchen Chipsätzen arbeitet der Systemtimer fehlerhaft: Die
unteren Bits "hoppeln", sodass es gelegentlich den Anschein hat als
laufe die Zeit rückwärts. H2bench überprüft daher zu Beginn die
Zuverlässigkeit des Timers.
Die genannte Fehlermeldung wurde bisher unter Windows 2000
beobachtet, NT und XP scheinen die Fehler zu kompensieren. Wenn Sie
diese Fehlermeldung unter Windows XP erhalten, wäre ich für eine
E-Mail mit einer genauen Beschreibung des Systems dankbar an
bo@ct.heise.de.
Einstweilen können Sie mit der Option "-Tnocheck" die
Timerüberprüfung unterdrücken, nicht aber das von ihr festgestellte
Problem! H2benchw müsste dann zwar im großen und ganzen auch
richtige Werte liefern, aber verlassen kann man sich darauf nicht.
? Ich kann Ihre Messungen nicht nachvollziehen: Mit meiner
SCSI-Platte erhalte ich wesentlich niedrigere
Datenübertragungsraten beim Schreiben als Sie.
: Wir schalten bei SCSI-Platten für unsere Messungen grundsätzlich
den Schreibcache ein. Ohne diesen erzielen die Platten beim
Schreiben nur die halbe Übertragungsrate wie beim Lesen.
? Ich habe Version 2.15 und Version 2.3 von H2benchw. Welche ist
neuer?
: Die Nummer nach dem Punkt ist nicht als Dezimalbruch sondern als
fortlaufende Nummer zu verstehen. Nach 2.9 kam also 2.10 (zwei
punkt zehn), danach 2.11 und so weiter. Die aktuelle Version hat
die Nummer 3.13.
? Meine IDE-Platte erzielt an der Onboard-EIDE-Schnittstelle meines
Boards eine maximale Übertragungsrate von etwa 7 MByte/s [teilweise
sogar nur 2 MByte/s], obwohl sie laut c't-Testbericht wesentlich
schneller sein sollte. An einem anderen System bringt sie dagegen
die volle Leistung.
: Vermutlich läuft die Platte im PIO-Mode statt im (Ultra-)DMA-Mode.
Überprüfen Sie dies im Gerätemanager (Windows 2000/XP)
beziehungsweise mit dem Programm dmacheck (NT), das Sie bei
Microsoft zum Download finden sollten.
? Warum gibt H2bench bei meinem IDE-RAID-Array nicht die
Typenbezeichnungen und Seriennummern der Festplatten aus?
: Das Auslesen des ATA-Konfigurationssektors ist momentan nur für
einzelne IDE-Platten implementiert. Auf manchen Hostadaptern
funktioniert es auch für Einzelplatten nicht, sorry.