H2bench -- by Harald B”geholz / c't Magazin fr Computertechnik Copyright (C) 1999 Verlag Heinz Heise GmbH =============================================================== H2bench runs under DOS and directly accesses the hard disk via BIOS. In order to achieve correct results, i.e for comparison with ours, you have to boot DOS without any cache programs, using only those drivers which are absolutely necessary. If you are using a SCSI adapter from NCR or Symbios Logic and an SDMS BIOS version 3, you need the driver Doscam.sys -- otherwise the disks can only be operated in the slower asynchronous mode of the SCSI bus. For EIDE disks, whether or not a driver is needed depends on the BIOS of the EIDE host adapter. Our test system's BIOS (Asus P/I-P55TP4XE) achieves full performance without the support of a driver. However the situation is different for most Pentium Pro and Pentium II systems. The widely used Award BIOS is not able to drive the EIDE interface at full speed (see also the FAQ section below). If the board manufacturer supplies a busmastering IDE driver for DOS you should install this driver to improve performance. H2bench does not produce reliable results when running in a DOS box under Windows, Windows 95/98/NT or OS/2. Drivers such as Emm386 which run the processor in virtual 8086 mode also impair the measurements and should not be used for this reason. 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. When you enter the disk number without any options, H2bench displays geometry (cylinders, heads, sectors) and capacity of the disk. If there are several disks in the computer, it is recommended to run H2bench in this way first, to make sure that you select the correct disk later. H2bench ignores partitioning and accesses the disk directly, so that all data will be lost when writing on the disk. For this reason, H2bench 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. H2bench measurement consists of four components: interface transfer rate, zone measurement, the Hdbench measurement and the measurement of access times. The option "-c " (-c stands for "core test" for historical reasons) activates the interface transfer rate measurement at 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 "-z" carries out the zone measurement, option "-s" activates the seek measurement. The Hdbench measurement combines read and write accesses using different block sizes in a disk area of approx. 6 MByte. This measurement is activated with the option "-h ", where specifies the location of the measurement in percent of the total disk capacity (the space between -h and is important). We normally perform the Hdbench measurement in the fastest media zone. For most hard disks this is the outer area, i.e. at 0% of the capacity. When you enter the option "-ha", H2bench automatically selects the fastest media zone. In order to do so, the program carries out zone measuring first and then defines the H2bench zone by evaluating the measured read rates. When selecting the fastest zone the write rates are not taken into consideration. Therefore it could happen that in some cases the "wrong" zone is selected, for example some Western Digital EIDE drives like the AC21600 where the write rate in the outer area of the drive is weak, results in an average value of 2.95 MByte/s, but when measuring at 20 % of the capacity (with an adequate write rate) a value of 3.39 MB/s is measured. When you enter the option "-a", all four measurements are carried out; this option combines "-c", "-z", "-ha" and "-s". Use the option "-w " to enter a for storing the results. Please note that the name must not contain an extension because the program automatically adds extensions. H2bench generates two result files with the extensions ".txt" and ".ps". 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 Hdbench and 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 DOS 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. 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. 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 them into the Autoexec.bat via the SET command). The relevant variables are named H2btitle, 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: h2bench 0 -a -! -tt "harddisk 42" -w 42 This tests the first hard disk connected to the computer and stores the results in the files "42.txt" and "42.ps". Drives with more than 8 GByte capacity ====================================== From version 2.3, H2bench can use new BIOS functions (INT 13h, functions AH=41h to 49h) in order to access disks with more than 8 GByte capacity. Enter the option "-e" to use these BIOS extensions if available. If they are not available or if they don't work correctly, an error message will be displayed. The warning message "!!! warning: block size conflicts with Phoenix EDD spec 1.1" can safely be ignored if there aren't any other errors (see the FAQ section below). Drives with more than 32 GByte capacity ======================================= H2bench versions below 2.26 had a bug that caused H2bench to crash or give wrong results for the sustained write rates if the capacity of the drive was above 32 GByte. Please don't use the old versions any more and delete them. If you see an old H2bench version anywhere, please inform the supplier of that version about this bug and the availability of a new version. Language options ================ H2bench currently "speaks" three languages: German, English and Dutch. 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 your Autoexec.bat, for example: SET H2BLANGUAGE=deutsch for German SET H2BLANGUAGE=english for English SET H2BLANGUAGE=nederlands for Dutch Questions ========= Please send any questions about H2bench to bo@ct.heise.de (in German or English). I will take the liberty not to respond to questions already answered in the FAQ below. FAQ === ? H2bench always aborts with a read error. : In cases of physical defects, the current version of H2bench cannot measure the continuous transfer rate (zone measurement). You can use the option "-h x" in order to carry out the Hdbench measurement in a non-defective area of the disk. ? When calling up the hard disk benchmark H2bench, I always get an error message stating that the timer does not run monotonically, and the program is aborted. : H2bench accesses the system timer directly in order to get exact measurements (to the microsecond). In some chip sets, the system timer is defective, so that the end bits do not run monotonically. One example of this is the I/O chip 82378IB in the Mercury/Neptune chip set. For more information see c't 10/95, p. 334. This symptom impairs the time measurements, which is why H2bench first checks the timer for correct operation. You can use the option "-Tnocheck" to suppress the timer check -- but not the bug! When using this option, H2bench produces more or less correct results, but the results are not reliable. Also you may encounter a negative value in the Hdbench measurement from time to time. ? When using the option "-e" I get the message "!!! warning: block size conflicts with Phoenix EDD spec 1.1". : The BIOS extensions H2bench uses have been specified by Phoenix. According to the spec, each call can transfer at most 127 sectors at a time. H2bench, however, uses a block size of 128 sectors. This has worked fine with the SCSI adapters from Symbios Logic and Adaptec we used so far as well as with the Promise Ultra33. It is, however, against the spec, and therefore H2bench outputs this warning. The BIOS of some Adapters (for instance the Promise FastTrack) follows the spec to the letter and rejects calls with 128 sectors. On such adapters, the zone measurement and the measurement of the interface transfer rate can not be performed if the "-e" option is used. ? 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. There is a small program from Seagate which you can use to enable write caching. It also works with drives from other manufacturers and requires an ASPI driver. You can download the archive Aspiid15.zip from http://www.heise.de/ct/ftp/spezial.shtml. SCSI drives can remember the write cache setting permanently so that it suffices to turn it on once. ? I have H2bench 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. On January 20, 1999, the current version was 2.26. ? My hard drive achieves a maximum transfer rate of about 7 MByte/s when attached to the onboard EIDE channel of my Pentium II board although the test results published in c't magazine are much better. When I connect the drive to an older Pentium based system the performance is better. : This is the fault of the onboard IDE interface on your board, or to be more precise, the BIOS. In addition to the conventional PIO mode (Programmed I/O, the CPU is responsible for fetching the data from the interface and writing it to main memory) the onboard IDE host adapter of current boards can also be operated as a PCI busmaster. In this mode the host adapter transfers data directly to and from main memory without using the CPU. This is primarily useful for multitasking operating systems since it frees the CPU for other tasks while data is being transferred over the IDE interface. On all currently available Pentium Pro and Pentium II chip sets the IDE interface is much slower in PIO mode than it is in busmastering mode. Unfortunately the programmers of the widely used Award BIOS haven't bothered to implement busmastering yet. Current versions of the Award BIOS operate even Ultra DMA capable hard drives in the slower PIO mode, even if they report them as "UDMA". Only with a few boards which use a BIOS from other manufacturers have we seen the full performance of the IDE interface without using a driver. This shortcoming in the Award BIOS only affects DOS or DOS based benchmarks like H2bench. Other operating systems don't use the BIOS and directly access the hard disk with their own drivers. If these drivers use busmastering you can expect full performance. Some information about busmastering and drivers is available from http://www.bmdrivers.com. Triones supplies a busmastering DOS driver for the LX and BX chip sets. Some board manufacturers (e.g., Gigabyte) bundle this driver with their boards. Using this driver H2bench reaches the full performance. Without it such boards (if they use an Award BIOS) are not suitable for hard drive performance measurements with H2bench for the time being. ? My hard drive achieves a maximum transfer rate of about 6.3 MByte/s when attached to an Asus P/I-P55TP4XE board although the test results published in c't magazine are much better. In the meantime I have used the drive for several days and repeated the test. Surprisingly, it now shows the expected performance. How is that possible? : This may be caused by the BIOS. Some BIOS versions, for instance version 0203 for the Asus P/I-P55TP4XE, make a difference between new hard drives (or drives erased by h2bench) and drives that have already been partitioned. This is caused by an algorithm the BIOS developers have implemented to support external IDE adapters. During initialization the BIOS tries to find out if the IDE adapter can be accessed with 32-bit instructions. For that purpose it first reads the first sector of the drive, the master boot record (MBR), using 16-bit instructions. If that sector contains a valid partition table (marked with the signature 0aa55h in the last two bytes) it reads the same sector again, this time using 32-bit instructions. If the data from the two reads matches it uses 32-bit instructions thereafter. If the partition table contains invalid data the BIOS uses only 16-bit instructions to be on the safe side. This is compatible with all IDE adapters but limits the transfer rate to between 6 and 7 MByte/s. As a precaution you should issue the command "Fdisk /mbr" and reboot before running H2bench. This writes the correct signature to the master boot record so that the BIOS uses fast 32-bit instructions to access the IDE interface.