BLKREPLAY(1)

πŸ“¦
version 1.0 Β· 2 versions
, in debian bookworm, debian trixie, ubuntu jammy, ubuntu noble

πŸ’– BLKREPLAY(1) πŸ’–

okay so bestie, pull up a chair, we're talking about blkreplay from section 1 of the manual β€” the block device testing and benchmarking tool that's genuinely kinda iconic πŸ”₯


✨ NAME ✨

blkreplay β€” block device testing and benchmarking tool, no cap πŸ’…


🌸 SYNOPSIS 🌸

blkreplay [options] device

that's it. that's the whole vibe. one device, a bunch of options, and a whole lot of I/O πŸ¦‹


πŸ’œ DESCRIPTION πŸ’œ

so blkreplay is a utility that drives the block layer of your operating system while it measures latency and throughput of I/O operations, so you can go visualise all that later πŸ“Šβœ¨

it can create artificial loads (random read-write sweeps, various kinds of overload tests, the whole dramatic repertoire) OR it can replay natural loads that were recorded by blktrace or a similar utility running on actual production servers πŸ‘‘

and like, what's it for? so many things bestie:

  • testing physical hardware
  • comparing different brands of hard disks or RAID controllers
  • evaluating the effect of SSD caching
  • comparing different block level transports like iSCSI vs Fibrechannel
  • and so on and so forth πŸŽ€

one thing you gotta know: blkreplay parses the load data from stdin. so if you wanna create load data from blktrace output, use the conv_blktrace_to_load.sh script. periodt πŸ’«


πŸŽ€ OPTIONS πŸŽ€

🌈 Influence replay duration

  • --replay-start=val β€” start offset, in seconds. 0 = from_start 🏁
  • --replay-end=val β€” end offset, in seconds. 0 = unlimited 🌌
  • --replay-duration=val β€” alternatively, specify the end offset as a delta (yes, a different way to say the same-ish thing, she contains multitudes) 🧚
  • --replay-out=val β€” start offset used for output, in seconds πŸ“€
  • --start-grace=val β€” start after a grace period for filling the pipes, in seconds ⏳

πŸ’… Handling of conflicting I/O requests

  • --with-conflicts β€” conflicting writes are ALLOWED. this means damaged I/O, bestie. it's giving chaos 😭
  • --with-drop β€” conflicting writes are simply dropped πŸ—‘οΈ
  • --with-partial β€” partial ordering by pushing back conflicts. this one is the default πŸ‘‘
  • --with-ordering β€” enforce total order in case of conflicts πŸ”’
  • --strong=val β€” mode between 0 and 2, see docs. default is 1 πŸ’ͺ

πŸ¦‹ Replay parameters

  • --threads=val β€” parallelism. default is 1024 🧡
  • --fill-random=val β€” fill data blocks with random bytes, as a percentage. default is 0 🎲

⭐ Verification modes

  • --no-overhead β€” verify is OFF. this is the default πŸ™ˆ
  • --with-verify β€” verify on reads πŸ‘€
  • --with-final-verify β€” an additional verify pass at the end 🏁
  • --with-paranoia β€” re-read after each write. this destroys performance, and I mean obliterates it πŸ’€

🫢 Convenience

  • --verbose=val β€” increase verbosity, show additional INFO: output πŸ—£οΈ

πŸ”₯ Expert options (DANGEROUS)

okay bestie, this is the expert section. the manpage literally put DANGEROUS in caps. read every line, fr fr πŸ™
  • --o-direct β€” use O_DIRECT. this is the default πŸ’Ύ
  • --no-o-direct β€” don't use O_DIRECT. this delivers FAKE results 😭
  • --o-sync β€” use O_SYNC πŸ”„
  • --no-o-sync β€” don't use O_SYNC. this is the default 🚫
  • --dry-run β€” don't actually do I/O, just measure internal overhead πŸ§ͺ
  • --fake-io β€” omit lseek() and tags, so even less internal overhead 🎭
  • --simulate-io=val β€” delay value for I/O simulation, in timespec sec.nsec format ⏱️
  • --ahead-limit=val β€” limit pipe fillahead, in realtime sec.nsec 🚧
  • --fan-out=val β€” only for kernel hackers. default is 4 πŸ€“
  • --no-dispatcher β€” only for kernel hackers πŸ”§
  • --bottleneck=val β€” max number of requests on dispatch 🍾
  • --speedup=val β€” speedup / slowdown by a REAL factor. default is 1.0 ⚑
  • --mmap-mode β€” use mmap() instead of read() / write(). [NYI] β€” not yet implemented, so don't get your hopes up 🫠

πŸ‘‘ AUTHORS πŸ‘‘

blkreplay was written by Thomas Schoebel-Theuer. this manual page was created from blkreplay documentation by Andrew Shadura. absolute legends, both of them 🫢


Copyright 2009-2012 Thomas Schoebel-Theuer


πŸ’« SEE ALSO πŸ’«


and that's the whole page, bestie πŸ’– this one's dated 2021-01-06 and it lives in section 1 as BLKREPLAY(1) β€” go forth and benchmark responsibly, mwah πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from