fio Changelog

What's new in fio 3.2

Nov 30, 2017
  • Andrzej Jakowski (2):
  • Fix overflow in percentile calculation for Windows
  • Fix more overflows in percentile calculation for Windows
  • Erwan Velu (7):
  • io_u: Converting usec from long to uint64_t
  • backend: Removing double definition of the same variable
  • backend: Removing memory leak in run_threads()
  • oslib/libmtd: Removing useless err assigment
  • t/gen-rand: Avoid memleak of buckets()
  • client: Avoid memory leak in fio_client_handle_iolog()
  • client: Fixing invalid use after free()
  • Jeff Furlong (1):
  • Add offset_align option
  • Jens Axboe (51):
  • backend: fix a case where we complain about no IO being done
  • Merge branch 'evelu/cleanup' of https://github.com/ErwanAliasr1/fio
  • client: fix pointer vs uint8_t comparison
  • Merge branch 'master' of https://github.com/dyniusz/fio
  • backend: don't complain about no IO done for create_only=1
  • engines/filecreate: a few fixes
  • engines/filecreate: don't use file hash
  • engines/filecreate: set FIO_NOSTATS flag
  • filesetup: don't track file allocation for jobs == 1
  • time: add ntime_since_now()
  • engine/filecreate: use clat and reads for stats
  • Update file creation example
  • Merge branch 'pr/note-for-shmmax' of https://github.com/taghos/fio
  • HOWTO: include note about increasing shared memory limits
  • engines/filecreate: set data direction for stats
  • blktrace: use for_each_file()
  • Merge branch 'ci_and_configure' of https://github.com/sitsofe/fio
  • Merge branch 'windowaio_invalidate' of https://github.com/sitsofe/fio
  • engines/windowsaio: style
  • Merge branch 'fgp_fixes' of https://github.com/sitsofe/fio
  • fio: kill unused TD_F_ flag
  • fio: rearrange TD_F_ flag logic
  • Error if td flags overlap with engine flags
  • Fix broken path separator definition on Windows
  • Windows mkdir() fix
  • fio: kill td_ioengine_flags()
  • Merge branch 'overflow_fix' of https://github.com/sitsofe/fio
  • Merge branch 'master' of https://github.com/Venutiwa/fio
  • flow: fix bad overflowing math
  • gettime: improve cpu clock test
  • Merge branch 'cpuclock-test'
  • parse: minimum options values are signed
  • io_u: re-invalidate cache when looping around without file open/close
  • Merge branch 'misc' of https://github.com/sitsofe/fio
  • init: make sure that compression enables refill buffers
  • Update compression documentation
  • Default buffer_compress_chunk to 512
  • engines/windowsaio: style fixups
  • io_u: wrap to beginning when end-of-file is reached for time_based
  • io_u: reset file to initial offset
  • filesetup: don't print non-debug error on native fallocate failure
  • filesetup: don't inline native_fallocate()
  • filesetup: pre_read_files() can use a bool
  • filesetup: __init_rand_distribution() can be void
  • filesetup: change random file init to be bool based
  • filesetup: create_work_dirs() can return bool
  • filesetup: recurse_dir() can use bool
  • filesetup: allocate 'r' locally in fallocate_file()
  • io_u_queue: convert rings to bool
  • Merge branch 'json_bw_bytes' of https://github.com/sitsofe/fio
  • Fio 3.2
  • Josef Bacik (7):
  • add a filecreate engine
  • add FIO_FILENOHASH ioengine flag
  • add an filecreate example file to examples/
  • convert FIO_OS_PATH_SEPARATOR to a character
  • create subdirs if specified in the filename_format
  • use mkdir instead of mkdirat
  • add documentation about filename_format directory behavior
  • Justin Eno (1):
  • backend: don't dereference ->io_ops in reap_threads()
  • Rebecca Cran (1):
  • Fix 'nice' parameter range: should be -20 to 19, not -19 to 20.
  • Ricardo Nabinger Sanchez (1):
  • Add note for increasing shmmax if necessary
  • Sitsofe Wheeler (16):
  • appveyor: install zlib and minor clean ups
  • configure: update compiler probing
  • fio_generate_plots: cope with per_job_logs filenames
  • windowsaio: add best effort cache invalidation
  • gettime: fix cycles_per_msec overflow when using 32 bit longs
  • doc: minor formatting fixes
  • steadystate_tests.py: fix up usage comment
  • tools: use /usr/bin/python2.7 as the interpreter
  • fio: fix interpreter lines
  • doc: fix groff line that started with a dot
  • COPYING: update license file
  • fio: update FSF address
  • doc: IO -> I/O, sync filecreate documentation
  • doc: minor formatting fixes
  • doc: rewrite write_*_log sections
  • stat: add bw_bytes JSON key
  • Tomohiro Kusumi (3):
  • solaris: #include
  • solaris: add os_phys_mem() implementation
  • solaris: add get_fs_free_size() implementation
  • Venu (1):
  • Adding support for multiple jobs for fio test
  • Vincent Fu (2):
  • stat: update description of clat accounting in stat.h
  • stat: update json+ output format for --lat_percentiles option
  • dyniusz (2):
  • Adjustments to support C++ engines
  • null context segfault fix

New in fio 2.1.4 (Nov 19, 2013)

  • Adds JSON output for client/server.
  • A fix for Windows build breakage in the previous release.
  • A fix for ioengine specific options.
  • Adds support for O_ATOMIC atomic writes on Linux.
  • A failsafe check for realloc() failure during logging.
  • A fix for a Solaris thread problem.
  • Various man page and documentation updates.
  • A fix for a crash on PowerPC without the mfspr instruction.

New in fio 2.1.2 (Aug 8, 2013)

  • This version adds basic support for an ACT (aerospike) profile, fixes atomic write support, adds various parsing fixes, makes a big revamp of the included graphing support, makes the IOPS log includes bandwidth, adds support for specific randomness settings for both reads and writes, adds support for random vs. sequential blocksize settings, fixes a potential verification failure, and adds multicast support for the net ioengine.

New in fio 2.1 (May 16, 2013)

  • Integration of the gfio GTK frontend. Better Android integration.
  • The initial file fill honors data compression settings.
  • An option for controlling randomness of I/O (percentage_random) instead of being fully random or fully sequential.
  • Fixes a bug in uneven pattern sizes for verification.
  • Various other important fixes.

New in fio 2.0.15 (Apr 9, 2013)

  • This version adds an --eta-newline option to insert ETA new line at fixed intervals.
  • Fixes for the CPU clock, notably PPC. Fixes for workloads with read/write file locking.
  • A fix for skewed latencies with rated IOPS.
  • Fixes a bug with block sizes varying more than 64x.
  • Improves the LFSR implementation.
  • Fixes missing JSON bandwidth output.
  • Various fixes for the Android platform.
  • Uses ginstall on Solaris.
  • Fixes man page installation.
  • Other bugfixes and improvements.

New in fio 2.0.14 (Feb 23, 2013)

  • Autodetect features with a new configure script when building.
  • Improve ETA for some workloads.
  • Support for verify mode that requires no metadata, greatly reducing memory requirements for big device verify workloads.
  • Ensures fsync is always done, even for direct/raw I/O (if asked to).
  • Support for unified read/write/trim reporting.
  • A few axmap and cpuclock bugfixes.
  • Fixes zones and numjobs used together.
  • Adds support for idle profiling, showing idle system CPU when running a workload.
  • Various Windows fixes.
  • FreeBSD now supports CPU affinities.
  • Many other fixes; all users should upgrade.

New in fio 2.0.13 (Jan 10, 2013)

  • A few build issues were fixed on a few select platforms, where issues with CC override or missing CPU clock support would break compilation.
  • Setting of size= for zipf/pareto workloads was fixed.
  • Floating math for CPU clock was sped up and improved, further reducing overhead.
  • A potential null pointer dereference on IO verification and requeue events was fixed.

New in fio 2.0.10 (Oct 11, 2012)

  • Support for trim as a primary IO directive, the addition of the JSON output format for easy parsing by both humans and computers, and fixes for a Solaris compilation error, gettid on NetBSD, Windows XP/2003 compatibility, engine starvation for extraordinarily long latencies, and fallocate(), netio compatibility, and support for SIGBREAK.
  • The critical error list is now configurable.
  • Three new IO engines were provided: falloc, e4defrag, and Fusion-io atomic write engine.
  • A new sample job file was provided for SSD steady state performance.
  • A segfault race on exit on non-Linux platforms was fixed.
  • There were various other bugfixes and improvements.

New in fio 2.0.9 (Aug 23, 2012)

  • A slew of Windows fixes, making the POSIX bits more complete.
  • A fix for premature freeing of disk utilization structures, and missing locking of the same.
  • fio dumps current progress if sent a USR1 signal.
  • Includes git version in version output.
  • A fix for a crash with more than ~500 jobs.
  • Man page updates.
  • A fix for wrap-around behavior for time-based sequential read jobs.
  • A fix for a "file hash not empty" warning on blktrace replay.
  • A fix for compilation on the MIPS architecture.
  • Improved display of commit-rate while running.
  • A fix for fallocate failing on some Linux systems.
  • Includes an end-of-run timestamp in output.

New in fio 2.0.6 (Mar 24, 2012)

  • A new offset_increment option to more easily be able to have different threads use different regions of a file/device.
  • A new buffer_compression_percentage option enabling the user to specify the compression ratio to expect from the data written by fio.
  • A fix for a segfault caused by invalid verification job files.
  • A few client/server bugfixes.
  • A fix for a bug that caused early termination of fio with verify_backlog.
  • A fix for a problem with iodepth_batch_complete=0 and accounting.
  • Enables read/write sequential offset to be a non-multiple of the block size.

New in fio 2.0.4 (Feb 25, 2012)

  • This version updates the Windows port, which is now full 64-bit using MingGW instead of Cygwin.
  • It has support for token-based flow control between jobs
  • It fixes disk slave output in terse output format.
  • It fixes attempts to switch zones without zones enabled, which caused verify failure.
  • It adds checksums to verify headers, to be able to verify those separately on load from disk.
  • Speedup pattern verification.
  • A fix for not calculating latency statistics when doing read verifies.
  • A fix for logging of IOPS and BW on mixed workloads.
  • This release merges crc32c and crc32c-intel verify formats, and will always use hardware-assisted crc32c if available.

New in fio 1.58 (Sep 16, 2011)

  • This version adds an RDMA IO engine, adds support for direct userspace reaping of completed events with libaio IO engine, ensures that bool options also work if given a parameter, adds support for "holed" IO patterns, fixes a latency reporting bug, fixes a disk utilization bug for delayed jobs, adds resolution support to fio_generate_plots, fixes summed computation of standard deviation, adds completion latency percentile support, and fixes lots of other minor bugs.

New in fio 1.57 (Jul 15, 2011)

  • This is a quick release to fix a few issues in 1.56.
  • It adds CPU process/thread affinity for Windows.
  • It fixes an AIX compile issue. Raw disk size detection is supported for OS X.
  • It fixes an infinite loop on platforms with very limited number of AIO request depth support (OS X).
  • It fixes an issue with killing of threads that haven't started yet.

New in fio 1.56 (Jul 13, 2011)

  • A performance issue with the Windows windowsaio engine was fixed.
  • IOPS overflow was fixed for high IOPS on 32-bit builds.
  • Support was added for the Linux FALLOC_FL_KEEP_SIZE flag.
  • Anonymous mmaps are used for smalloc backing.
  • A fix was made for the ramp_time option.
  • resource problem with the posixaio engine and Mac OS X is now handled.
  • Support for HP-UX was added.
  • Fixes and improvements were made to thread affinity.
  • Support was added for a given percentage in the size= option.
  • A Makefile depend issue was fixed.
  • A man page syntax error and typographical errors were fixed.
  • A fix was made for fill_device=1 and IO depths higher than 1.

New in fio 1.54 (May 13, 2011)

  • Since the introduction of the new random generator a few releases ago, 32-bit builds were buggy.
  • A 32-bit randomness problem has been fixed.
  • A crash with giving a bad --ioengine command line option has been fixed.
  • A build warning on Solaris has been fixed.
  • A race in the Windows AIO engine has been fixed.
  • All users should upgrade.

New in fio 1.53 (May 6, 2011)

  • This is a maintenance release, fixing a few important bugs.
  • The runtime option was broken due to a bad change.
  • The Windows AIO engine had a few bugs that caused problems.

New in fio 1.52 (Apr 29, 2011)

  • Some platform fixes were made for Solaris and Mac OS X.
  • The unified Makefile was reinstated.
  • An end-of-job slowdown for big random workloads was fixed.
  • Support was added for running multiple sections at the time with the --section option.
  • A parser bug with range options and size postfix was fixed.
  • An internal random generator is now used for IO offsets.

New in fio 1.50 (Jan 26, 2011)

  • Support was added for Windows.
  • Cleanup of OS support in general.
  • New features for blktrace replay.
  • A slowdown bug has been fixed in the posixaio engine.
  • A binject I/O engine has been added.
  • Support for TRIM/DISCARD operations.
  • I/O verification has been extended to dump good and bad data on failure for better post mortem analysis.
  • Various speedups and optimizations.
  • A lot of obscure bugs have been found and fixed.

New in fio 1.41 (Jun 18, 2010)

  • adds support for NetBSD and for explicit clocksources
  • speeds random buffer fills
  • improves ETA calculation for workloads using "fill_device"
  • fixes a bug with --section matching
  • adds improvements for verifying workloads
  • add support for offloading "verify" to dedicated threads
  • fixes strict non-overlap random workloads
  • fixes a bug in matching strings in the parser

New in fio 1.38 (Mar 23, 2010)

  • Jens Axboe (47):
  • Fix bug in sha256 verify
  • Use log_info() more consistently
  • Add check for OPT_LEN_MAX being too small
  • Quote profile name
  • Add support for registrering external options
  • Merge branch 'master' of ssh://router/data/git/fio
  • Add support for loadable profiles
  • Add parser support for out-of-td option storage
  • Add initial support for profile specific options
  • More progress on per-profile options support
  • Make sure profile options get added to long_options[]
  • Cleanup profile support
  • Add profile description
  • Allow holes in the option posval (possible values)
  • Allow the adding of 'posval' for dynamic options like 'profile'
  • Allow profiles to override internal io_u functions
  • Fix parse strlen() bug
  • Make profile io op overrides a dedicated structure
  • Add profile td init/exit with stored data
  • Remove debug printf()
  • Initial suppor for sync_file_range()
  • Allow OR'able option values
  • Make sure we handle multiple arguments to sync_file_range
  • Add documentation for 'sync_file_range'
  • Abstract out generic sync helper
  • Assign io_u->error directly in do_io_u_sync()
  • Update libaio/posixaio/splice for sync updates
  • Fix parser bug capping multi value options at 2
  • Fix broken FIO_OPT_STR option
  • Add __weak sync_file_range()
  • Check for syscall definitions, before declaring __weak helper
  • Fix bad type usage in parse.c for external options
  • Verify log message
  • Catch error on ->commit and ->get_events
  • Set verify_interval to minimum blocksize if not given
  • Use 'o' consistently in fixup_options()
  • Don't call getpid() in dprint() unless we are going to use it
  • Fix bad sign on td_verror()
  • Optimize __get_io_u() for better code foot print
  • Make the dprint() processing out-of-line
  • Update other OS makefiles
  • Add log_valist()
  • __dprint() fixup
  • Only define str_sfr_cb() if FIO_HAVE_SYNC_FILE_RANGE is set
  • OSX should use off_t for off64_t
  • Make ARMv7 build and work
  • Fio 1.38
  • Zhang, Yanmin (1):
  • Increase OPT_LEN_MAX

New in fio 1.24 (Feb 7, 2009)

  • This release adds support for CPU binding in Solaris, UDP support to the network IO engine, gettimeofday() optimizations, and disabling options.
  • It fixes a bug related to crashing the parser, various bugs in the shared memory allocator and /tmp file leaks, and CPU mask options on large systems.

New in fio 1.22 (Oct 11, 2008)

  • This release adds support for hardware accelerated CRC-32 calculation for verification (on supported Intel platforms w/SSE4.2).
  • It adds option priorities to get rid of manual option ordering.
  • It increases the range of the smalloc allocator, and fixes a few bugs with it as well.
  • It adds a ramp time option to allow job warm up before doing any measurements.
  • It adds support for detailing RAID/LVM component utilization.
  • It has many little bugfixes all over the map.