Ich versuche, die Ausführungszeit des FIO-Benchmarks zu messen. Ich bin derzeit, tut so die FIO Anruf zwischen gettimeofday Einwickeln():FIO-Laufzeit anders als gettimeofday()
gettimeofday(&startFioFix, NULL);
FILE* process = popen("fio --name=randwrite --ioengine=posixaio rw=randwrite --size=100M --direct=1 --thread=1 --bs=4K", "r");
gettimeofday(&doneFioFix, NULL);
und berechnen Sie die verstrichene Zeit als:
double tstart = startFioFix.tv_sec + startFioFix.tv_usec/1000000.;
double tend = doneFioFix.tv_sec + doneFioFix.tv_usec/1000000.;
double telapsed = (tend - tstart);
Nun, die Frage (n) ist
Die verstrichene Zeit ist anders ( größer) als die Runt von FIO-Ausgang. Kannst du mir bitte helfen zu verstehen Warum?
randwrite: (g=0): rw=randwrite, bs=4K-4K/4K-4K/4K-4K, ioengine=posixaio, iodepth=1 fio-2.2.8 Starting 1 thread randwrite: (groupid=0, jobs=1): err= 0: pid=3862: Tue Nov 1 18:07:50 2016 write: io=102400KB, bw=91674KB/s, iops=22918, runt= 1117msec ...
und das ist telapsed:
telapsed: 1.76088 seconds
was die tatsächliche Zeit von FIO Ausführung genommen ist: die Tatsache kann in FIO Ausgang ersichtlich a) Runt durch FIO gegeben, oder b) die verstrichene Zeit von getttimeofday()
- Wie FIO messen seine runt? (Wahrscheinlich, diese Frage zu 1. verknüpft)
PS: Ich habe versucht, die gettimeofday zu ersetzen (mit std :: Chrono :: high_resolution_clock :: now()), aber es verhält sich auch das gleiche (mit den gleichen , Ich meine es gibt auch eine längere Zeit als runt)
Vielen Dank im Voraus, für Ihre Zeit und Unterstützung.