H2bench -- by Harald Boegeholz / c't magazin voor computertechniek
Copyright (C) 2000 Verlag Heinz Heise GmbH
==================================================================



H2bench werkt onder DOS en benadert de harde schijf direct via de
BIOS. Om onze metingen te kunnen verifiren moet je DOS zonder
eventuele schijf-cache programma's en alleen met de hoogst
noodzakelijke drivers booten. Als je een SCSI-Adapter van NCR of
Symbios Logic gebruikt en de SDMS-BIOS versie 3 hebt, is de
Doscam-driver nodig; zonder deze werkt de harde schijf alleen maar in
de langzamere a-synchrone SCSI-busmode. 

Bij EIDE-schijven hangt het van het BIOS van de EIDE-adapter af, of er
een driver nodig is. Het BIOS van ons inmiddels enigszins verouderd
testsysteem (Asus P/I-P55TP4XE) haalt ook zonder driverhulp de
volledige performance. Bij de meeste Pentium-Pro- en
Pentium-II-systemen is dat echter anders, omdat het veel gebruikte
Award-BIOS de EIDE-interface niet met volledige snelheid kan
aanspreken (zie ook onder bij FAQ). Als de fabrikant van zo'n board
een DOS-driver voor de EIDE-interface bijlevert die geschikt is voor
de busmaster, kun je deze het best installeren.

In een DOS-box van Windows, Windows 95/98/NT of OS/2 zijn de
meetresultaten van H2bench niet betrouwbaar. Ook drivers zoals Emm386,
die de processor omschakelen in de virtuele 8086-modus, zorgen voor
foutieve meetresultaten en moeten dus niet worden geladen.

H2bench verwacht het nummer van de te testen schijf als parameter op
de commandoregel samen met schakelopties die aangeven welke tests er
moet worden uitgevoerd. Wanneer er geen parameter is opgegeven
presenteert het programma een korte helptekst. Alle opties moeten in
onderkast ('kleine' letters) worden opgegeven; de volgorde is
willekeurig. De belangrijkste parameter is het nummer van de te testen
schijf. De eerste fysieke schijf is nummer 0, de volgende 1
enzovoorts. Indien alleen het schijfnummer wordt opgegeven, zonder
opties, dan geeft H2bench de schijfparameters (cilinders, koppen,
sectoren) en de totale capaciteit van de schijf weer. Indien er
verscheidene schijven in het systeem aanwezig zijn, is het verstandig
om H2bench in eerste instantie op deze manier aan te roepen zodat u
zich kunt vergewissen dat de juiste schijf wordt getest.

Omdat H2bench de partitioneringsgegevens negeert en direct de schijf
benadert zouden bij schrijven naar de schijf alle gegevens verloren
gaan. Daarom wordt tijdens de benchmark normaliter alleen gelezen. Met
de optie '-!' worden ook de schrijfmetingen geactiveerd. Deze
functioneren -- uit veiligheidsoverwegingen -- echter alleen indien er
geen partities op de schijf zijn gedefinieerd.

H2bench bestaat uit vier delen: De meting van de
interface-transferrate (overdrachtssnelheid van de interface),
zonemeting, Hdbench-meting en de meting van de gemiddelde toegangstijd
(seek). De optie '-c <n>' (-c betekent, om historische redenen,
'Coretest') zorgt ervoor dat de meting van de interface-transferrate
gebeurt bij <n> % van de schijfcapaciteit. Normaal gesproken wordt
hier 0 ingevuld, omdat de meeste schijven daar het snelste zijn.

De optie '-z' activeert de zonemeting, '-s' de seek-meting
(toegangstijd), De Hdbench-meting combineert lees- en schrijfacties
met verschillende blokgroottes binnen een gebied op de schijf ter
grote van 6 MByte. Met de optie '-h <n>' wordt deze meting uitgevoerd
ter hoogte van <n> % van de schijfcapaciteit (de spatie tussen '-h' en
'<n>' is belangrijk). Wij voeren de Hdbench-meting altijd in de
snelste zone uit, die bij verreweg de meeste schijven helemaal
buitenaan ligt; dus ter hoogte van 0% schijfcapaciteit.

Met de optie '-ha' zoekt H2bench zelf de snelste zone op. Hiertoe
voert het programma eerst een zonemeting uit en bepaalt dan de
Hdbench-zone aan hand van de gemeten leessnelheden. Omdat bij het
bepalen van de snelste zone geen rekening wordt gehouden met de
schrijfsnelheid kan het, in uitzonderlijke gevallen, voorkomen dat de
verkeerde zone wordt gekozen. Bijvoorbeeld bij bepaalde EIDE-schijven
van Western Digital, zoals de AC21600, stort de schrijf-performance in
het buitenste deel van de schijf behoorlijk in elkaar. Het gewogen
gemiddelde bedraagt daar slechts 2,95 MB/s. Wordt daarentegen gemeten
op 20% van de schijfcapaciteit (waar de schrijfsnelheid nog in orde
is), haalt de schijf een respectabele 3,39 MB/s. De optie '-a' tot
slot, zorgt ervoor dat alle vier de metingen worden uitgevoerd; dit
komt overeen met de combinatie van '-c', '-z', '-ha' en '-s'.

Doormiddel van de optie '-w <bestandsnaam>' wordt een <bestandsnaam>
opgegeven voor het opslaan van de resultaten. De opgegeven naam mag
niet van een extensie zijn voorzien, aangezien het programma deze zelf
toevoegt. H2bench maakt twee resultaatbestanden aan met de extensies
'.txt' en '.ps'. Het .txt-bestand is een ASCII-bestand dat begint met
een samenvatting van de meetresultaten waarna de gedetailleerde meet-
gegevens van de Hdbench- en zonemetingen volgen. Let op: de zonemeting
heeft voor zowel lezen als schrijven tot 1000 meetpunten. De
resultaten hiervan staan steeds op een aparte regel, om het inlezen
met andere programma's te vereenvoudigen. Mocht u op het idee komen om
het .txt-bestand af te drukken, denk er dan aan om het onderste deel
van het bestand met een editor te verwijderen, anders komen er dertig
pagina's 'getalletjes' uit de printer rollen.

Voor het maken van afdrukken is het .ps-bestand bedoeld. Hierin zijn
-- in PostScript-formaat -- alle meetresulaten samengevat op n
kantje A4. Wie een PostScript-printer heeft kan het bestand direct
naar de printer sturen, bijvoorbeeld met de DOS-opdracht

copy /b bestandsnaam.ps prn

Wie over een minder edele printer beschikt, of de resultaten op het
beeldscherm weer wil geven, kan de freeware-interpreter Ghostscript
respectievelijk het programma Ghostview gebruiken. Deze programma's,
die voor vrijwel alle besturingssystemen beschikbaar zijn kunt u
gratis via het internet downloaden.

Ter documentatie kunnen de volgende opties gebruikt worden: '-tt' met
daarachter de beschrijving van de harddisk (tussen aanhalingstekens),
voor de 'titel' van de test. Op analoge wijze dienen '-tb' voor de
BIOS, '-tc' voor de CPU, '-tm' voor het moederbord, '-ta' voor de
(SCSI- of EIDE-) adapter. Aangezien deze componenten over het algemeen
gelijk blijven, kunnen hun omschrijvingen ook, met het SET-commando in
autoexec.bat, in omgevingsvariabelen (environment) worden opgeslagen.
De variabelen heten respectivelijk H2btitle, H2bbios, H2bcpu, H2bboard
en H2badapter en worden gebruikt indien de overeenkomstige opties niet
op de commandoregel zijn gespecificeerd.


Meestal hoef je dan tijdens het starten van de test dan alleen nog
maar de omschrijving van de harddisk op te geven, bijvoorbeeld zo:

h2bench 0 -a -! -tt "Harddisk 42" -w 42

Deze opdracht zorgt ervoor dat op de eerste fysieke harddisk alle
tests worden doorlopen en dat de resultaten worden opgeslagen in de
bestanden '42.txt' en '42.ps'.


Schijven groter dan 8 GByte
===========================

Vanaf versie 2.3 kan H2bench ook de nieuwe BIOS-functies (INT 13h,
functies AH=41h tot 49h) gebruiken om schijven groter dan 8 Gbyte aan
te sturen. De optie '-e' zorgt ervoor dat H2bench deze BIOS-extensies,
indien beschikbaar, gebruikt. Indien de functies niet worden
ondersteund, of niet correct werken, krijgt u een foutmelding. 


Schijven groter dan 32 GByte
============================

De H2bench versie voor 2.26 had en fout: bij hardeschijven groter dan
32 GB leide dit tot vastlopers of tot mogelijk onjuiste meetgegevens
van de schrijf-datatransfersnelheid. Gebruikt u s.v.p.de oude versie
niet meer: gooi hem gewoon weg. Als u ergens een verouderde H2bench
versie ziet, informeer dan s.v.p. de gebruiker over het bestaan van
deze fout.


Taalopties
==========

H2bench ondersteund op dit moment drie talen: Nederlands, Engels en
Duits. De commandoregel optie "-nederlands" kiest de Nederlandse taal,
"-english" de Engelse taal en "-deutsch" de Duitse. Via de
environment-variabele H2BLANGUAGE kan de taal van tevoren ingesteld
worden. Daardoor is het niet meer nodig om de taal met de hand in te
stellen. Dit gebeurt via het set-commando in het autoexec.bat

SET H2BLANGUAGE=nederlands   voor Nederlands

SET H2BLANGUAGE=english      voor English

SET H2BLANGUAGE=deutsch      voor Duits


Vragen
======

Vragen met betrekking tot H2bench kunt u per e-mail richten aan
bo@ct.heise.de (in het Duits of het Engels).


FAQ:
====

?  De benchmark H2bench stopt steeds voortijdig met een schrijffout.

:  Indien de schijf fysiek beschadigd is kan de huidige versie van
   H2bench de duur-transferrate (langdurig haalbare
   overdrachtssnelheid) niet meten. Met de optie '-h <n>' (zie
   handleiding) kan in elk geval de Hdbench-meting op een onbeschadigd
   deel van de schijf worden uitgevoerd.


?  Bij het starten van H2bench krijg ik steeds de foutmelding dat de
   timer niet 'monotoon' loopt, en het programma stopt.

:  H2bench leest rechtstreeks de waarde van de timer om tot op de
   microseconde nauwkeurig te kunnen meten. Bij sommige chipsets is de
   systeemtimer echter een beetje 'buggy'; de laatste bits 'hobbelen'
   en tellen niet altijd monotoon door. Dit is bijvoorbeeld het geval
   bij de I/O-chip 82378/B van de Mercury/Neptune-chipsets.

   Dat heeft natuurlijk foutieve meetresultaten tot gevolg en daarom
   test H2bench eerst de timer. Met de opie '-Tnocheck' kunt u het
   testen van de timer uitschakelen, niet de bug. H2bench meet dan
   welliswaar in grote lijnen correcte waarden, maar u moet niet
   verbaasd zijn als er tussen de meetwaarden af en toe negatieve
   getallen opduiken.


?  Ik kan uw metingen niet bevestigen: met mijn SCSI-schijf meet ik
   belangrijk lagere waarden voor de schrijfsnelheid dan u.

:  Wij schakelen voor onze metingen bij SCSI-schijven principieel de
   schrijfcache in (op de diskdrive). Zonder deze cache halen de
   schijven bij het schrijven slechts de halve overdrachtssnelheid ten
   opzichte van het lezen. Er is hiervoor een klein programma'tje van
   Seagate dat ook op schijven van andere makkelijk werkt mits u een
   ASPI-driver gebruikt. Het staat op de c't website onder de naam
   Aspiid15.zip (ftp.fnl.nl/pub). SCSI-schijven onthouden deze
   instelling voor de schrijfcache langdurig zodat het programma maar
   n keer gebruikt hoeft te worden.


?  Ik heb versie 2.15 en 2.3 van H2bech. Welke is de nieuwste?

:  Het nummer na de punt geeft geen tiendes, maar een oplopend versie
   nummer weer. Na 2.9 komt dus 2.10, daarna 2.11 enzovoorts. De
   Huidige versie van 20.04.2000 heeft nummer 2.32.


?  Mijn harddisk haalt op de onboard-EIDE-interface van mijn
   Pentium-II-board een maximale transferrate van ongeveer 7 MB/s,
   hoewel hij volgens het c't-testbericht heel wat sneller zou moeten
   zijn. Op een ouder Pentium-systeem haalt hij echter de volledige
   performance.

:  De remmende factor is de IDE-interface van uw board, om
   nauwkeuriger te zijn het BIOS. Naast de klassieke PIO-mode
   (Programmed I/O, de CPU haalt ieder gegevenswoord apart bij de
   interface af en schrijft het naar het geheugen) kunnen de
   onboard-IDE-interfaces van gangbare boards ook als PCI-busmaster
   werken en direct het hoofdgeheugen benaderen. Deze bedrijfsmodus is
   vooral zinvol voor besturingssystemen die tot multitasking in staat
   zijn, omdat het de CPU ontlast: terwijl de IDE-interface gegevens
   verstuurt, kan de processor zich met andere zaken bezighouden.

   De IDE-interface is in de PIO-modus bij alle tot nu toe beschikbare
   Pentium-Pro- en Pentium-II-chipsets duidelijk langzamer dan met
   busmastering. Helaas hebben de programmeurs van het veel gebruikte
   Award-BIOS niet de moeite genomen om busmastering te implementeren.
   Zelfs IDE-schijven die Ultra-DMA kunnen gebruiken worden door het
   Award-BIOS in de PIO-modus aangestuurd, hoewel het tijdens het
   booten 'UDMA' meldt. Alleen bij een paar boards, waarvan de BIOS
   van een andere fabrikant afkomstig is, behaalt de IDE-interface
   zonder driver de volledige performance.

   Dit manco van de Award-BIOS heeft alleen effect op DOS
   respectievelijk op DOS gebaseerde benchmarks zoals H2bench. Andere
   besturingssystemen omzeilen het BIOS en benaderen de harddisk via
   hun eigen drivers. Als deze drivers van busmastering gebruik maken
   hoef je niet bang te zijn dat de snelheid erop achteruit gaat.
   Informatie over busmastering en drivers vindt u op
   http://www.bmdrivers.com. 

   De firma Triones verkoopt een voor busmastering geschikte
   DOS-driver voor de LX- of BX-chipset. Sommige boardfabrikanten
   (b.v. Gigabyte) leveren deze driver met hun boards mee. H2bench
   behaalt hiermee de volledige performance. Zonder zo'n driver zijn
   LX- of BX-boards met Award-BIOS voorlopig niet geschikt voor
   performancemetingen met de H2bench


?  Mijn harde schijf bereikt op een ASUS P/I-P55TP4XE slechts een
   continue transfersnelheid van ca. 6.3 MByte per seconde ofschoon
   hij volgens een test in de c't behoorlijk wat sneller zou moeten
   zijn. Ondertussen heb ik de harde schijf een paar dagen gebruikt en
   zie daar hij bereikt nu opeens wel de volle snelheid. Hoe kan dat?

:  Dat kan aan de BIOS liggen. Menige BIOS-versie, zoals bijvoorbeeld
   de versie 0203 voor het ASUS P/I-P55TP4XE gedragen zich anders op
   een schone of door H2bench gewiste harde schijf, dan op een harde
   schijf die al eens gepartitioneerd is geweest. De oorzaak zit hem
   in het algoritme, dat de BIOS developers gemplementeerd hebben
   voor die gevallen waar de gebruiker een andere IDE-adapter
   gebruikt.

   De BIOS probeert eerst uit te vinden of de IDE-adapter met 32-bit
   benaderingen uit de voeten kan. Daarvoor leest het de eerste sector
   vban de harde schijf, het master boot record, eerst met 16-bit
   benaderingen in. Als deze een geldige partitie tabel bevat (te
   herkennen aan de signatuur 0aa55h in de laatste beide bytes), leest
   de BIOS vervolgens dezelfde sector nog een keer met 32-bit
   benaderingen in, en test of de inhoud gelijk is. Alleen als dat het
   geval is, werkt de BIOS in het vervolg met 32-bit benaderingen.
   Bevat de partitietabel daarentegen vanaf het begin ongeldige data,
   blijft de BIOS voorzichtheidshalve de met iedere IDE-adapter
   kompatibele 16-bits benaderingen gebruiken. Dit uit zich in een
   overdrachtssnelheid van niet sneller dan 6  7 MByte/s.

   Voer daarom voor de meting van H2bench eerst het bevel 'Fdisk /mbr'
   uit, om de voor de BIOS benodigde signatuur in het Master boot
   record te schrijven. Na herstarten zou de IDE-interface dan
   gegarandeerd in de snellere 32-bit mode moeten werken.
