![]() |
Festplattenstress erzeugen
Hallo,
für ein Testprogramm muss ich einen Plattenstress erzeugen. 10,30,60 sekunden Step by Step read Messungen: Time for Step by Step, Bytes Read 10,30,60 sekunden ramdom seek: Messungen: Time for Track to Track, Bytes Read DMA - Lesegeschwindigkeit ausmessen. und nu wie? :gruebel: Gruss EL |
Re: Festplattenstress erzeugen
Falls das Programm nur unter NT aufwärts laufen soll, kann man CreateFile, FileRead verwenden um direkt Sektoren auszulesen.
Damit läßt sich dann analog zu Dateien eine Reihe von aufeinanderfolgenden Sektoren auslesen. Diese Sache sollte auch ungecacht (von der Windows-Seite her) sein, also für Performance-Messungen geeignet. Random-Access muß halt durch möglichst unregelmäßigen Zugriff gemessen werden. Also nicht aufeinanderfolgende Daten, sondern "zufällig" verteilt. Mit
Delphi-Quellcode:
kann man auf die erste physische Festplatte zugreifen.
DeviceHandle := CreateFile('\\.\PHYSICALDRIVE0', GENERIC_READ,
FILE_SHARE_READ or FILE_SHARE_WRITE, nil, OPEN_EXISTING, FILE_FLAG_RANDOM_ACCESS, 0);
Delphi-Quellcode:
Position ist die BytePosition (also nicht Sektor basiert).
FileSeek(DeviceHandle, Position, ord(soBeginning));
Delphi-Quellcode:
liest dann einfach Daten in einen Puffer.
FileRead(DeviceHandle, SectorBuffer^, Count);
Delphi-Quellcode:
liefert alle wichtigen Informationen zum Aufbau der Festplatte, z.B. Bytes pro Sektor.
DeviceIoControl(DeviceHandle, IOCTL_DISK_GET_DRIVE_GEOMETRY, nil, 0,
@DiskGeometry, sizeof(DiskGeometry), Dummy, nil)
Delphi-Quellcode:
sollte am Ende nicht vergessen werden!
CloseHandle(DeviceHandle);
Ein Paar Sachen sind zu beachten: Man kann nur an Sektorgrenzen mit dem Lesen beginnen und man braucht Administratorrechte. Unter 9X geht das auch ist aber aufwändiger: Bin gerade dabei dafür eine DLL zu entwickeln; man muß auf BIOS-Aufrufe zurückgreifen und das geht nur von einer 16-Bit DLL oder einem Treiber (noch komplizierter und nicht in Delphi machbar) aus. Ein Blick in die Windows-API Hilfe (MSDN) zu diesen Funktionen ist für weitere Details sicher sinnvoll. Zur DMA Lesegeschwindigkeit: Ich wüßte nicht wie man das machen soll, außer daß man es abstellt im Gerätemanager, wofür man (soweit ich mich erinnere) einen Neustart braucht. Hoffe das hilft, Gruß Maël. P.S.: Aus Neugierde: Was ist das für ein Testprogramm? |
Re: Festplattenstress erzeugen
Ach so, noch etwas:
Die Windows-API Funktionen QueryPerformanceCounter zusammen mit QueryPerformanceFrequency erlauben dann natürlich die Zeitmessung. |
Re: Festplattenstress erzeugen
Erstmal Danke,
da soll mal ein Proggi bei rauskommen, welches zunächst die Performance testet. Auch Temperatur soll dabei gemessen werden etc. Dann soll auch jeweils eine Platte einer Reihe einem Dauerstresstest unterzogen werden. (evtl. bis zum dadurch provozierten Ableben) Gruss EL |
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:32 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz