На самом деле вы можете довольно легко определить задержку вращения - я делал это однажды как часть университетского проекта. Это описано в этом отчете . Вы захотите перейти к странице 7, где вы увидите несколько хороших графиков задержки. Время составляет от 9,3 мс до 1,1 мс - падение на 8,2 мс. Это соответствует непосредственно 60 s / 8.2 ms = 7317 RPM
.
Это было сделано с простым кодом C - вот часть, которая измеряет между позициями a
и b
в файле с нулями. Мы делали это с большими и большими значениями b
, пока не блуждали по всему цилиндру:
/* Measure the difference in access time between a and b. The result
* is measured in nanoseconds. */
int measure_latency(off_t a, off_t b) {
cycles_t ta, tb;
overflow_disk_buffer();
lseek(work_file, a, SEEK_SET);
read(work_file, buf, KiB/2);
ta = get_cycles();
lseek(work_file, b, SEEK_SET);
read(work_file, buf, KiB/2);
tb = get_cycles();
int diff = (tb - ta)/cycles_per_ns;
fprintf(stderr, "%i KiB to %i KiB: %i nsec\n", a / KiB, b / KiB, diff);
return diff;
}