diskio


author

AuthorVersion
Tetsuo Takata4.*
Tetsuo Takata3.*.*
Tetsuo Takata2.*.*
Ryusuke Konishi
Kenichi Okuyama
1.0.*
Kenichi Okuyama0.*

target

file system.

invalidity

System might not be helding synchronous write when it should.

symptom

If system is requested to do synchronous write, and is not doing synchronous write, then system is not waiting for media I/O. If so, write(2) system call ( or whatever the way it is doing synchronous write ) might be returning too quickly.

detection strategy

Measure the time required to held synchronous write in accuracy of at least 1usec order. Calculate ideal minimum time required to held synchronous write and compare it with measured result.

For example, writing 8192 bytes of data to ATA-100 base HDD requires at least:

8192 / ( 100 * 1024 * 1024 ) sec. = 78.125usec

to make data pass through ATA-100 bus. This is minimum required, and hence, any factors that should effect IO performance will make the time longer, but never shorter.

If any single synchronous write returned in time less than 78usec, we should doubt for system not waiting for media I/O.

tools

diskio 4.0 is now available.

measurement results

NTT Cyber Space Laboratories,
Nippon Telegraph and Telephone Corporation
based on version 1.0.0.

Tetsuo Takata,
NTT DATA Corporation
based on version 2.0.0.

results graphs

Documents

history

version date author
log
4.0 2006/05/11 (JST) Tetsuo Takata@NTT DATA INTELLILINK Corp.
  • Add the scripts for auto test pattern generation.
    (See PatternGenerationHowto in the diskio-4.0.tar.bz2 for details.)
3.0.0 2005/11/04 (JST) Tetsuo Takata@NTT Data Corp.
The new features of diskio-3.0:
  • Changed what to measure and the output format. (See 00WhatNew in the diskio-3.0.0.tar.bz2 for details.)

Current limitations:
  • The limitations of diskio-3.0 are the same as that of diskio-2.0.
2.0.0 2005/04/19 (JST) Tetsuo Takata@NTT Data Corp.
The new features of diskio-2.0.0:
  • Added new access write patterns.
    Currently available access patterns are sequential, interleave and random.
  • Two new flags for open(2) are supported.
    Supported flags are 'O_CREATE' and 'O_LARGEFILE'.

Current limitations:
  • diskio-2.0.0 writes to file in ASAP. So the time between writing is very small, but OS might sync with HDD.
  • Only supports gcc(and its compatible compilers).
  • Does not support 64bit CPU.
1.0.4 2004/11/23 (JST) Seiji Kihara@NTT Lab.
Thanks to Seiji Kihara@NTT Lab. His patch3.buffer is applied.
  • move 'dumpbuf' from global variable to static variable in common_preparation(), to avoid new bug arround here.
1.0.3 2004/11/23 (JST) Seiji Kihara@NTT Lab.
Thanks to Seiji Kihara@NTT Lab. His patch2.mountopt is applied.
  • add UMOUNT_MOUNT_BEFORE_TEST macro for enabling/disabling remounting feature, because the code is fully Linux-dependent.
1.0.2 2004/11/23 (JST) Seiji Kihara@NTT Lab.
Thanks to Seiji Kihara@NTT Lab. His patch1.misc is applied.
  • the variables difft in logclass::sys_open() and pagesize in common_preparation() are now initialized.
  • avoid compile-time warnings
  • The function dump() was declared to return int, but did not return any meaning value. So the type of the function was changed to void.
  • unused variable (pagesize in write_test(), write_o_sync_test(), write_o_dsync_test(), fsync_test(), fdatasync_test(), sync_test()) was removed.
  • fix the comment in title header that seem to be natural (is it right?)
1.0.1 2004/09/28 (JST) 'Ryusuke Konishi'@NTT Lab.
  • Added file '00Changes'.
  • Thanks to 'Ryusuke Konishi'@NTT Lab.
    He've pointed out diskio.C is still too complex and should be separated into individual testtypes for ease of maintenance. Indeed.
1.0.0 2004/09/13 (JST) 'Ryusuke Konishi'@NTT Lab.
  • Thanks to 'Ryusuke Konishi'@NTT Lab.
    He've pointed out that run.sh have bug in name of testtype. For this mistake, fsync was doing async.