新宿区で働くプロジェクトマネージャーのブログ

新宿区で働くプロジェクトマネージャーのブログ

FIOコマンドで利用できるパラメータ

FIOコマンドで利用できるパラメータ

  • (コマンド引数でもファイル読み込みでもどちらでもいけるみたい)
  • よく使えそうなものは★、○。△は検証が必要。?は使い方不明。
パラメータ名 使えそう度合い パラメータ説明(原文) 解釈
description Text job description jobの説明。
name Name of this job job名。
filename File(s) to use for the workload 読み込むジョブファイル。
lockfile Lock file when doing IO to it 実行に利用するロックファイル。
directory Directory to store files in fioで読み書きするディレクトリ。
filename_format Override default $jobname.$jobnum.$filenum naming fioで読み書きに使うファイル名フォーマット。デフォルトは、$jobname.$jobnum.$filenumらしい。
opendir Recursively add files from this directory and down 再帰的にファイルの追加・削除していく。
rw IO direction ベンチマークの内容を決める。
bs Block size unit ブロックサイズの指定。
ba IO block offset alignment
bsrange Set block size range (in more detail than bs) bsオプションの詳細版かな
bssplit Set a specific mix of block sizes
bs_unaligned Don't sector align IO buffer sizes
randrepeat Use repeatable random IO pattern ランダムアクセスを規則性を持ったランダムで行うということかな?例えば、全部2つ飛ばしとか。ランダムじゃあない気がするが…
randseed Set the random generator seed value ここで設定された値をもとに、乱数を発生させて、ランダムアクセスするらしい。
use_os_rand Set to use OS random generator
norandommap Accept potential duplicate random blocks
ignore_error Set a specific list of errors to ignore 無視するエラーを指定する。設定例: ignore_error=EAGAIN,ENOSPC:122
rw_sequencer IO offset generator modifier
ioengine IO engine to use "IOをどう行うか決める。デフォルトはsyncらしい。指定しないとsync(同期I/O)になる。ググってみた感じ、syncかlibaioを使ってる人が多いみたい。Nullはデータ転送を発生させないらしく、デバックやテスト目的らしい。設定できる値として以下がある。sync,psync,vsync,psyncv,libaio,posixaio,solarisaio,windowsaio,mmap,splice,syslet-rw,sg,null,net,netsplice,cpuio,guasi,rdma,falloc,e4defrag,rbd,gfapi,gfapi_async,libhdfs,mtd,external
iodepth Number of IO buffers to keep in flight "ファイルに対するIO書き込みのユニット数。IO waitを作り出すのに使ったりするらしい。デフォルトは1らしいけど、マルチスレッド実行させたいときは調整したほうがよいのかな?queue depthともいう。どれくらい平行して非同期読み書きを行うか。一度に受け取れるコマンドの数。"
iodepth_batch Number of IO buffers to submit in one go IO数をどれだけ出すか。基本はiodepthと同じ値にする。
iodepth_batch_complete Number of IO buffers to retrieve in one go "どれだけのIOをすぐに回収するか。デフォルトは1で、理由はカーネルから回収するプロセスの最小IO=1を求めるから。"
iodepth_low Low water mark for queuing depth マルチスレッド処理の最中で、1つのスレッドが待機キューとして受け入れれる最大行数?
size Total size of device or files "この測定で読み書きするファイルサイズ。Job全体のIOサイズ。単位はb。, 64{k,M, G, T, P}, 10% など"
fill_device Write until an ENOSPC error occurs
filesize Size of individual files 1ファイルのサイズ。このファイルサイズの合計がsizeパラメータらしい。
offset Start IO from this offset
offset_increment What is the increment from one offset to the next
number_ios Force job completion of this number of IOs
random_generator Type of random number generator to use "ランダムの定義をどうするか決めれる?エンジンとしては以下が選択できるらしい。tausworthe、lfsr、tausworthe64
random_distribution ? Random offset distribution generator
percentage_random Percentage of seq/random mix that should be random "どのくらいの割合でランダムにするか設定できる。100%にするとすべてランダム、0%だとすべてシーケンシャルになる。読み取り、書き込み、トリムそれぞれに値を設定できる。設定例:読み取りに50%、書き込みに100%、トリムは0% percentage_random=50,100,0
nrfiles Split job workload between this number of files "このジョブで利用するファイル数を設定できる。デフォルトは1。"
file_service_type How to select which file to service next
openfiles Number of files to keep open at the same time "同時にファイルを開いておける数。デフォルトは、nrfilesと同じみたい。
fallocate Whether pre-allocation is performed when laying out files
fadvise_hint Use fadvise() to advise the kernel on IO pattern
fsync Issue fsync for writes every given number of blocks "IOが与えられるたびに、fsyncを呼ぶ。 0の時は呼ばない。
fdatasync Issue fdatasync for writes every given number of blocks fsyncと同じっぽい。メタデータの扱いが異なるみたいな記載がどこかにあった。
write_barrier Make every Nth write a barrier write
sync_file_range Use sync_file_range()
direct Use O_DIRECT IO (negates buffered) "ダイレクト転送。1は有効にする1、つまりtrueの時、 non-buffered IOを使う。(たいていは O_DIRECT)"
atomic Use Atomic IO with O_DIRECT (implies O_DIRECT)
buffered Use buffered IO (negates direct) デフォルトは1(true)
sync Use O_SYNC for buffered writes ioengineのsyncと何が違うん?
overwrite When writing, set whether to overwrite current data "ファイルへの書き込みを上書きするか、どうか。1=true=上書きする。デフォルトは1(true)"
loops Number of times to run the job ジョブを何回繰り返すか。デフォルトは1。
numjobs Duplicate this job this many times 同じワークロードを実行するスレッドをいくつ生成するか。
startdelay Only start job when this period has passed ジョブの開始を遅延させる時間
runtime Stop workload when this amount of time has passed 実行最大時間
time_based Keep running until runtime/timeout is met
verify_only Verifies previously written data is still valid 実際の計測はしないで、確認用のモード。
ramp_time Ramp up time before measuring performance
clocksource What type of timing source to use
mem Backing type for IO buffers "バッファとして利用するメモリーのタイプ。以下が選択できるらしい。malloc 、shm 、shmhuge 、mmap 、mmaphuge 、mmapshared
verify Verify data written "ファイル書き込みの検証をする。モードは以下から選択可能。md5,crc64,crc32c,crc32c-i,crc32,crc16,crc7,xxhash,sha512,sha256,sha1,meta,pattern,null,
do_verify Run verification stage after write "書き込み後に正しい書き込みか検証する。デフォルトは1。
verifysort Sort written verify blocks for read back
verifysort_nr Pre-load and sort verify blocks for a read workload
verify_interval Store verify buffer header every N bytes
verify_offset Offset verify header location by N bytes
verify_pattern Fill pattern for IO buffers
verify_fatal Exit on a single verify failure, don't continue
verify_dump Dump contents of good and bad blocks on failure
verify_async Number of async verifier threads to use
verify_backlog Verify after this number of blocks are written
verify_backlog_batch Verify this number of IO blocks
trim_percentage Number of verify blocks to discard/trim
trim_verify_zero Verify that trim/discarded blocks are returned as zeroes
trim_backlog Trim after this number of blocks are written
trim_backlog_batch Trim this number of IO blocks
experimental_verify Enable experimental verification
write_iolog Store IO pattern to file IOパターンの書き出し。各Jobで異なるファイルを指定する必要がある。
read_iolog Playback IO pattern from file IOパターンの読み出し
replay_no_stall Playback IO pattern file as fast as possible without stalls
replay_redirect Replay all I/O onto this device, regardless of trace device
exec_prerun Execute this file prior to running job この処理実行前に指定されたコマンドを実行する
exec_postrun Execute this file after running job この処理実行後に指定されたコマンドを実行する
ioscheduler Use this IO scheduler on the backing device
zonesize Amount of data to read per zone
zonerange Give size of an IO zone
zoneskip Space between IO zones
lockmem Lock down this amount of memory (per worker) "指定された量のメモリを未使用にできるらしい。メモリの少ない状態をシュミレートできるとのこと。"
rwmixread Percentage of mixed workload that is reads "読み書きの割合。設定例:-rwmixread=70 70%read, 30%write"
rwmixwrite Percentage of mixed workload that is writes たぶん、rwmixreadと一緒で引数の意味が逆なだけ。
nice ★? Set job CPU nice value
prio Set job IO priority value このジョブのプライオリティを指定する。0が最高。0~7で指定する。
prioclass Set job IO priority class このIOクラスのプライオリティを指定する。0が最高。0~7で指定する。
thinktime Idle time between IO buffers (usec) IO発行の間で、Jobを止める。単位は microsecond(μs)
thinktime_spin Start think time by spinning this amount (usec) thinktimeが設定されている場合のみ有効
thinktime_blocks IO buffer period between 'thinktime' thinktimeが設定されている場合のみ有効
rate Set bandwidth rate ジョブで使用される帯域幅。数はバイト/秒。
ratemin Job must meet this rate or it will be shutdown 最低限維持する帯域幅。これを下回るとジョブが失敗する。
ratecycle Window average for rate limits (msec)
rate_iops Limit IO used to this number of IO operations/sec
rate_iops_min Job must meet this rate or it will be shut down
max_latency Maximum tolerated IO latency (usec) レイテンシー。待ち時間。
latency_target Ramp to max queue depth supporting this latency
latency_window Time to sustain latency_target
latency_percentile Percentile of IOs must be below latency_target
invalidate Invalidate buffer/page cache prior to running job IO計測の前に、キャッシュを使わないようにしておく
create_serialize Serialize creating of job files 作成されるファイルをシリアライズする。データのインターリーブを回避するために便利かも。
create_fsync fsync file after creation 作成後のデータファイルのfsync。デフォルトでtrue
create_on_open Create files when they are opened for IO
create_only Only perform file creation phase
pre_read Pre-read files before starting official testing ファイルが事前にメモリに読み込まれる。
cpumask ★? CPU affinity mask
cpus_allowed Set CPUs allowed
end_fsync Include fsync at the end of job 書き込みが完了したらfsyncも完了する?
fsync_on_close fsync files on close ジョブ終了時にfsyncがファイルをクローズする。
unlink Unlink created files after job has completed 該当のジョブファイルへのリンクを解除する。デフォルトはtrue。
exitall Terminate all jobs when one exits 1ジョブが終了すると残りの部分も終了する。
stonewall Insert a hard barrier between this job and previous 1ジョブがエラーで終了すると残りの部分も終了する。デフォルトでは各ジョブの終了するのを待つ。
new_group Mark the start of a new group (for reporting) 新しいレポートグループの開始。
thread ★? Use threads instead of processes
write_bw_log Write log of bandwidth during run 帯域幅のログ
bwavgtime Time window over which to calculate bandwidth (msec) 指定された単位の帯域幅の平均。ミリ秒単位で値は指定する。
write_lat_log Write log of latency during run レイテンシーに関するログ
write_iops_log Write log of IOPS during run IOPSのログ
iopsavgtime Time window over which to calculate IOPS (msec) IOPSの平均時間
log_avg_msec Average bw/iops/lat logs over this period of time デフォルトは0.
group_reporting Do reporting on a per-group basis 結果をjob単位でなく、グループ単位で出力
zero_buffers Init IO buffers to all zeroes バッファーをゼロにする
refill_buffers Refill IO buffers on every IO submit バッファーをゼロの場合に補充できるらしい。
scramble_buffers Slightly scramble buffers on every IO submit
buffer_pattern Fill pattern for IO buffers
buffer_compress_percentage How compressible the buffer is (approximately)
buffer_compress_chunk Size of compressible region in buffer
clat_percentiles Enable the reporting of completion latency percentiles パーセンタイルの報告を有効にする。完了の待ち時間。
percentile_list Specify a custom list of percentiles to report
disk_util Log disk utilization statistics ディスク使用率の統計情報
gtod_reduce Greatly reduce number of gettimeofday() calls
disable_lat Disable latency numbers
disable_clat Disable completion latency numbers
disable_slat Disable submission latency numbers
disable_bw_measurement Disable bandwidth logging
gtod_cpu Set up dedicated gettimeofday() thread on this CPU
unified_rw_reporting Unify reporting across data direction データ方向、読み取り、書き取り、トリムなどの個別にログ。
continue_on_error Continue on non-fatal errors during IO
error_dump Dump info on each error
profile Select a specific builtin performance test
cgroup Add job to cgroup of this name コントロールグループ名
cgroup_nodelete Do not delete cgroups after job completion
cgroup_weight Use given weight for cgroup
uid Run job with this user ID ユーザID
gid Run job with this group ID グループID
kb_base How many bytes per KB for reporting (1000 or 1024)
unit_base Bit multiple of result summary data (8 for byte, 1 for bit)
hugepage-size When using hugepages, specify size of each page
flow_id The flow index ID to use フローのID
flow Weight for flow control of this job
flow_watermark High watermark for flow control. This option should be set to the same value for all threads with non-zero flow.
flow_sleep How many microseconds to sleep after being held back by the flow control mechanism