fio.git
12 years agoFio 2.0 fio-2.0
Jens Axboe [Thu, 8 Dec 2011 08:52:39 +0000 (09:52 +0100)]
Fio 2.0

1.9x seems to have settled, so lets tag 2.0. This also just happens
to be on the 6th year anniversary of Fio 1.1, the first officially
tagged release!

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoRemove debug/broken assert() in the IOPS logging code
Jens Axboe [Fri, 2 Dec 2011 07:45:44 +0000 (08:45 +0100)]
Remove debug/broken assert() in the IOPS logging code

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.13 fio-1.99.13
Jens Axboe [Thu, 1 Dec 2011 14:18:47 +0000 (15:18 +0100)]
Fio 1.99.13

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoOnly log the period mean if we have samples
Jens Axboe [Thu, 1 Dec 2011 14:17:24 +0000 (15:17 +0100)]
Only log the period mean if we have samples

We can't use the mean value to determine that, it could in theory
be 0.0 and still have valid samples.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd log_avg_msec option
Jens Axboe [Thu, 1 Dec 2011 08:04:31 +0000 (09:04 +0100)]
Add log_avg_msec option

By default, fio will note an entry in the bw/iops/lat logs for every
IO that is completed. This quickly eats up a lot of disk space
for long running jobs. By setting this option to eg 1000, fio will
average the results logged over 1 second instead. This reduces the
resolution of the log, but makes it more manageable.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUse the reentrant getmntent_r instead of getmntent
Zhu Yanhai [Tue, 22 Nov 2011 08:35:29 +0000 (09:35 +0100)]
Use the reentrant getmntent_r instead of getmntent

The function find_cgroup_mnt() could be called under multithread scenario, so
we should use the reentrant edition getmntent_r() instead of getmntent().

E.g, without this fix the output for below job file is wrong.

[root@localhost blkio-test]# cat small-read-file
[global]
ioengine=sync
direct=1
rw=read
bs=4k
filename=/dev/sdb
time_based
runtime=60
cgroup=small
cgroup_weight=500
numjobs=32
group_reporting
thread

[file1]

Then fio randomly says:
[cut here]
Starting 32 threads
fio: cgroup blkio does not appear to be mounted
fio: cgroup blkio does not appear to be mounted
fio: cgroup blkio does not appear to be mounted

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix initialization of lastrate when using ratemin
Josh Carter [Tue, 22 Nov 2011 08:35:29 +0000 (09:35 +0100)]
Fix initialization of lastrate when using ratemin

fio was copying td->bw_sample_time (single timeval) into td->lastrate
(array of two timevals) using the latter's size. Thus is would get one
timeval worth of good data plus who-knows-what for the second timeval.
I'm pretty sure the intent of this code was to copy bw_sample_time
into both members of lastrate.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoExpand continue_on_error to select which type of error to allow
Steven Lang [Thu, 17 Nov 2011 08:45:17 +0000 (09:45 +0100)]
Expand continue_on_error to select which type of error to allow

This expands the continue_on_error option to take a string specifying
what type of error to continue on, breaking out errors into read,
write, and verify.  (Sync, trim, and anything else not specifically a
read are considered write operations for the sake of error
continuation.)

Backwards compatibility is retained by allowing =0 and =1 values to
specify none and all, respectively.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix parsing of ioengine strings
Steven Lang [Wed, 16 Nov 2011 09:33:51 +0000 (10:33 +0100)]
Fix parsing of ioengine strings

This cleans up parsing of FIO_OPT_STR_STORE options which have defined
values (IE ioengine).  I made a few assumptions here...

1. If FIO_OPT_STR_STORE was used, that means a copy of the string is
desired, so it is always copied if the offset is non-zero.
2. If the values were the only allowed values, then FIO_OPT_STR would
have been used; therefore it is not an error to give a value not in
the list.
3. If an option callback is defined, then any values are ignored and
the callback is called to parse the string.  (Don't think this
currently applies, anywhere, but there is precendent in other options
skipping normal parsing if a callback is used.)
4. If no offsets are defined, and no callback is given, the behavior
is undefined - though this patch handles it cleanly and still calls
value callbacks; though I believe fio will still complain about a bad
options structure.

This fixes two cases (Restores it to previous behavior without
breaking new functionality).
1. External ioengines (The patch to a .so is never in the list of
possible values, so was never matching)
2. IO engines compiled in but not in the list in options.c

This patch should be applied to the 1.5x stable branch as well, though
it doesn't apply cleanly due to one line difference from my last
options patch.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.12 fio-1.99.12
Jens Axboe [Wed, 9 Nov 2011 19:26:58 +0000 (20:26 +0100)]
Fio 1.99.12

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix crash when attempting to dupe options
Jens Axboe [Wed, 9 Nov 2011 19:25:21 +0000 (20:25 +0100)]
Fix crash when attempting to dupe options

If the engine has extended options but isn't loaded, boom.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUpdate examples/netio to new option format
Jens Axboe [Wed, 9 Nov 2011 13:31:47 +0000 (14:31 +0100)]
Update examples/netio to new option format

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.11 fio-1.99.11
Jens Axboe [Wed, 9 Nov 2011 13:04:33 +0000 (14:04 +0100)]
Fio 1.99.11

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoPrivate parameters for ioengines
Steven Lang [Wed, 9 Nov 2011 13:03:34 +0000 (14:03 +0100)]
Private parameters for ioengines

Here is the polished version of the engine private options patch.  As
discussed, the global section only ever tracks the private options for
the globally defined ioengine.  For command line parameters, the
ioengine must be selected before any private options are used.  (IE
--ioengine=libaio --userspace_reap will work, but --userspace_reap
--ioengine=libaio will not.)

The userspace_reap option from libaio has been moved over to this new
option method, usage should be identical to before.
The net ioengine has been modified to use parameters, with hostname,
port, protocol and listen defined as ioengine private parameters.  The
old style of hostname=host,port,protocol no longer works, so usage
will need to be updated.  (It will spit out an error that should be
clear enough that it changed if this is tried.)  Also, with the new
way for specifying parameters, the net IO engine now allows data to
flow in either direction on TCP connections, regardless of which end
initiates the connection.

There's also a new command line argument --enghelp which can be used
to get help on ioengine private parameters, similar to --cmdhelp.
With no argument, it lists all built-in ioengine.  The argument is an
ioengine name (Or path to .so) and optionally a comma followed by a
command name, which behaves identically to --cmdhelp.

For ioengine authorship, if options are supplied, both the options
structure and the size of the storage needed must be supplied, and the
storage must be large enough to hold a pointer to struct thread_data;
that is because the options callback doesn't explicitly have a pointer
to the thread data (Normally it relies on the fact that the options
struct is the start of the thread data), so the offset 0 of the struct
must point to the thread data, and is filled in automatically.  (This
also neatly provides a guarantee that offset 0 is reserved in the
options data, so it can be safely used as a test of undefined.)

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoImprove accuracy of rate= option
Steven Lang [Wed, 9 Nov 2011 12:48:01 +0000 (13:48 +0100)]
Improve accuracy of rate= option

I noticed that the rate= option is not terribly precise in some cases.
 It gets worse the higher the selected rate.  For example:
$ fio -name=load -size=100g -ioengine=null -runtime=10 -rate=30m
One would expect that to read 300MB (307200KB) at close to 30MB/s
(30720KB/s).  However it writes 315024KB at 31499KB/s.  Further
experimentation shows that even higher rates can show bigger
discrepancies.  At the extreme end...
$ fio -name=load -size=100g -ioengine=null -runtime=10 -rate=500m
One would expect this to write 5000MB at a rate of 500MB/s
(512000KB/s).  However it writes close to double that (9536.8MB) at a
rate of over 953MB/s.  At a rate of 1GB/s and higher, the rate
limiting is effectively ignored.

This patch improves the accuracy of the rate= option across the whole
range of rates, at the cost of being very slightly more
computationally expensive.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUsage typo
Jens Axboe [Mon, 7 Nov 2011 21:07:36 +0000 (22:07 +0100)]
Usage typo

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix big endian build
Anton Blanchard [Mon, 7 Nov 2011 13:16:26 +0000 (14:16 +0100)]
Fix big endian build

I get the following error when building fio on PowerPC:

client.c: In function ‘convert_agg’:
client.c:641:22: error: invalid operands to binary & (have ‘long double’ and ‘long long unsigned int’)

It looks like we have things backwards, we should byteswap the
integer value before we convert it to a double.

Signed-off-by: Anton Blanchard <anton@samba.org>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoCleanup option keyword/environment substitution
Steven Lang [Fri, 28 Oct 2011 06:37:13 +0000 (08:37 +0200)]
Cleanup option keyword/environment substitution

Right now the substitution for options seems quite fragile.  Among the
issues...

- If bc had an error and returned no output, it caused a NULL reference
- Multiple variable substitutions (For example $ncpus * $pagesize)
caused an error as it tried to run bc after the first, with the second
still text
- Memory leak for every keyword substituted
- Multiplication caused shell wildcard expansion (*) of the current
directory when passing the input to bc
- Shell escape sequences would be parsed on the command line when bc is called
- Potential buffer overrun due to unchecked lengths on the input line

So I did a little cleanup to get rid of the issues.  This patch also
moves the environment variable substitution to run before the keyword
substitution, so an environment variable can now indirectly perform a
keyword substitution.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.10 fio-1.99.10
Jens Axboe [Wed, 26 Oct 2011 07:51:03 +0000 (09:51 +0200)]
Fio 1.99.10

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix segfault with verify_async
Steven Lang [Wed, 26 Oct 2011 07:46:50 +0000 (09:46 +0200)]
Fix segfault with verify_async

At some point the filename was added to the report on verify failures,
however this broke verify_async, as the file pointer on the io_u is
set to NULL before the verify thread sees the io_u.  The result is a
segfault when there is a verify mismatch.

This patch changes the semantics of a deferred free (IO_U_F_FREE_DEF)
to have already called put_file, but not set the file pointer to NULL.
 This is safe to do as the file list is only freed after all the
verify threads have been terminated.

FYI - this is the minimal config to cause the error this patch fixes,
and is what I used to test the fix.  (Not using thread still causes a
segfault, but it is reported more subtly since just a sub-process hits
it.)

[segv]
ioengine=null
size=4k
verify=meta
rw=read
thread
verify_async=1

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoMake verify_dump off by default
Jens Axboe [Tue, 25 Oct 2011 20:43:36 +0000 (22:43 +0200)]
Make verify_dump off by default

It's a change of behaviour, so it should be off by default.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd core for verify_dump option
Steven Lang [Tue, 25 Oct 2011 20:41:05 +0000 (22:41 +0200)]
Add core for verify_dump option

The verify_dump option is defined and documented, but does nothing.
This one-liner enables the option.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: cleanup fio_server_parse_string()
Jens Axboe [Tue, 25 Oct 2011 07:52:51 +0000 (09:52 +0200)]
server: cleanup fio_server_parse_string()

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: document fio_server_parse_string()
Jens Axboe [Mon, 24 Oct 2011 07:35:06 +0000 (09:35 +0200)]
server: document fio_server_parse_string()

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: IPv6 support
Jens Axboe [Mon, 24 Oct 2011 07:11:50 +0000 (09:11 +0200)]
client/server: IPv6 support

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix io_u->buf calculation overflow
Jens Axboe [Sat, 22 Oct 2011 16:47:21 +0000 (18:47 +0200)]
Fix io_u->buf calculation overflow

Jagadish reports:

----

following are the details of the bug in fio.

This bug in fio can show up as corruption of data when performing verify.

Description:
----------------

if  the product of block size and queudepth is greater than 4GB, io_u
buffer will not
be assigned properly due to overflow.

fio --bsrange=256k-4m --ioengine=libaio --iodepth=2064 --direct=1
--name=job3 --offset=2GB --size=14GB --rw=write
--verify_pattern=0xdeadbeef --filename=/dev/sdb

can show false corruption.

Version:
-----------
1.58

Explanation:
-----------------

in a loop fio tries to assign the data buffer to each i/o request.

static int init_io_u(struct thread_data *td)
{
        struct io_u *io_u;
        unsigned int max_bs;
        int cl_align, i, max_units;
        char *p;
...
         p = td->orig_buffer;
...
         for (i = 0; i < max_units; i++) {
...
                    io_u->buf = p + max_bs * i;
         }
}

at max_bs=4M i=1024, the integer overflows and the addresses are being
used again.
i,e i/o request 1024 will have the same data buffer as that of i/o request 0.

This is seen from fio debug log.

mem 11164 io_u alloc 0x219f530, index 0
mem 11164 io_u 0x219f530, mem 0x7f09bb62d000
mem 11164 io_u alloc 0x219f820, index 1
mem 11164 io_u 0x219f820, mem 0x7f09bba2d000

mem 11164 io_u alloc 0x225b530, index 1024
mem 11164 io_u 0x225b530, mem 0x7f09bb62d000
mem 11164 io_u alloc 0x225b820, index 1025
mem 11164 io_u 0x225b820, mem 0x7f09bba2d000

the fix is as follows:

                        io_u->buf = p + (unsigned long long)max_bs * i;

----

Fix this by continually incrementing 'p' instead, avoiding
the overflow as well.

Reported-by: Jagadish Kumar <jagadish.mukku@gmail.com>
Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix clat latency terse output
Keplar kramer [Wed, 19 Oct 2011 19:31:27 +0000 (21:31 +0200)]
Fix clat latency terse output

The fio HOWTO shows Completion latency percentiles as coming after
Completion latency stats and before total latency stats.

Completion latency percentiles are actually after total latency stats
and before BW stats.

Patch moves completion percentiles to before total latency stats.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.9 fio-1.99.9
Jens Axboe [Tue, 18 Oct 2011 18:42:04 +0000 (20:42 +0200)]
Fio 1.99.9

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoTurn old debug printf() into a proper log_err()
Jens Axboe [Tue, 18 Oct 2011 12:39:30 +0000 (14:39 +0200)]
Turn old debug printf() into a proper log_err()

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix klibc getopt_long_only() for optional arguments
Jens Axboe [Tue, 18 Oct 2011 11:26:01 +0000 (13:26 +0200)]
Fix klibc getopt_long_only() for optional arguments

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix OSX build
Bruce Cran [Tue, 18 Oct 2011 10:20:56 +0000 (12:20 +0200)]
Fix OSX build

os.h needs to include sys/socket.h.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix printf() being used instead of log_info()
Bruce Cran [Tue, 18 Oct 2011 10:20:31 +0000 (12:20 +0200)]
Fix printf() being used instead of log_info()

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix error in disk util stats for terse output
Jens Axboe [Tue, 18 Oct 2011 06:31:01 +0000 (08:31 +0200)]
Fix error in disk util stats for terse output

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUpdate command line usage help
Jens Axboe [Mon, 17 Oct 2011 17:58:51 +0000 (19:58 +0200)]
Update command line usage help

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd terse version 2 output format
Jens Axboe [Mon, 17 Oct 2011 13:05:47 +0000 (15:05 +0200)]
Add terse version 2 output format

Default is the new format, but allow a user to set version 2 for
easier backwards compatability with older scripts.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.8 fio-1.99.8
Jens Axboe [Mon, 17 Oct 2011 11:31:51 +0000 (13:31 +0200)]
Fio 1.99.8

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix possible use-after-free on client disconnect
Jens Axboe [Mon, 17 Oct 2011 11:31:33 +0000 (13:31 +0200)]
Fix possible use-after-free on client disconnect

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: pass back server side error to client exit value
Jens Axboe [Mon, 17 Oct 2011 07:14:42 +0000 (09:14 +0200)]
client: pass back server side error to client exit value

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: send back nr_jobs and error exit code
Jens Axboe [Sun, 16 Oct 2011 19:34:14 +0000 (21:34 +0200)]
client/server: send back nr_jobs and error exit code

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix problem with mixing is_backend and terse_output
Jens Axboe [Sun, 16 Oct 2011 09:50:31 +0000 (11:50 +0200)]
Fix problem with mixing is_backend and terse_output

Always send disk util and group_run_stats, even if terse
output got set in the server. Also fixes a disk util leak
for !terse_output.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix fragmented package opcode mismatch
Jens Axboe [Sat, 15 Oct 2011 14:07:40 +0000 (16:07 +0200)]
Fix fragmented package opcode mismatch

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoDon't request ETA until server has started jobs
Jens Axboe [Sat, 15 Oct 2011 12:43:41 +0000 (14:43 +0200)]
Don't request ETA until server has started jobs

Otherwise we time out when file layout takes >= 5 seconds.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix strip blank space for empty string
Jens Axboe [Sat, 15 Oct 2011 12:37:38 +0000 (14:37 +0200)]
Fix strip blank space for empty string

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix off-by-one in fgets() size
Jens Axboe [Sat, 15 Oct 2011 12:37:26 +0000 (14:37 +0200)]
Fix off-by-one in fgets() size

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.7 fio-1.99.7
Jens Axboe [Fri, 14 Oct 2011 12:31:06 +0000 (14:31 +0200)]
Fio 1.99.7

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoPretty up output a bit
Jens Axboe [Fri, 14 Oct 2011 10:47:56 +0000 (12:47 +0200)]
Pretty up output a bit

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoMemory leak fixes
Jens Axboe [Fri, 14 Oct 2011 08:55:16 +0000 (10:55 +0200)]
Memory leak fixes

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoScale bw output to MB/sec if larger than 99999 KB/sec
Jens Axboe [Fri, 14 Oct 2011 07:30:01 +0000 (09:30 +0200)]
Scale bw output to MB/sec if larger than 99999 KB/sec

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd fio version to terse output
Jens Axboe [Fri, 14 Oct 2011 06:08:10 +0000 (08:08 +0200)]
Add fio version to terse output

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoOnly print ts->description if set for non-terse output
Jens Axboe [Thu, 13 Oct 2011 19:05:59 +0000 (21:05 +0200)]
Only print ts->description if set for non-terse output

Identical to commit 4b0f2258, but for non-terse output.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoMan page typo
Jens Axboe [Thu, 13 Oct 2011 18:51:05 +0000 (20:51 +0200)]
Man page typo

.B -> .BI

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUpdate man page
Jens Axboe [Thu, 13 Oct 2011 18:17:02 +0000 (20:17 +0200)]
Update man page

Include all command line options.

Add section on client/server. It needs to be formatted properly,
though.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.6 fio-1.99.6
Jens Axboe [Thu, 13 Oct 2011 14:33:51 +0000 (16:33 +0200)]
Fio 1.99.6

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoCheck string length of ts->description, not value
Jens Axboe [Thu, 13 Oct 2011 13:03:25 +0000 (15:03 +0200)]
Check string length of ts->description, not value

It's no longer a pointer. Fix a buglet in the terse output
printing.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoMove IEEE754 support code to lib/
Jens Axboe [Thu, 13 Oct 2011 12:12:40 +0000 (14:12 +0200)]
Move IEEE754 support code to lib/

It's not strictly core code.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd disk utilization to terse format output
Jens Axboe [Thu, 13 Oct 2011 12:03:52 +0000 (14:03 +0200)]
Add disk utilization to terse format output

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd completion latency percentiles to terse output format
Jens Axboe [Thu, 13 Oct 2011 11:43:36 +0000 (13:43 +0200)]
Add completion latency percentiles to terse output format

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoDon't output version for terse output
Jens Axboe [Thu, 13 Oct 2011 11:37:07 +0000 (13:37 +0200)]
Don't output version for terse output

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd IOPS to terse output
Jens Axboe [Thu, 13 Oct 2011 11:11:42 +0000 (13:11 +0200)]
Add IOPS to terse output

Bump the terse version format. There will be a few more changes
until version 3 is final, but since it's already changed now,
flag it as a different version. Consider this terse version 3 alpha.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUpdate TODO
Jens Axboe [Thu, 13 Oct 2011 11:04:56 +0000 (13:04 +0200)]
Update TODO

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoSilence uninitialized mem warning on disk_util send
Jens Axboe [Thu, 13 Oct 2011 10:02:08 +0000 (12:02 +0200)]
Silence uninitialized mem warning on disk_util send

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoBreak double loop on end-of-clat percentiles
Jens Axboe [Thu, 13 Oct 2011 10:00:24 +0000 (12:00 +0200)]
Break double loop on end-of-clat percentiles

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: add support for passing disk_util structures
Jens Axboe [Thu, 13 Oct 2011 09:38:56 +0000 (11:38 +0200)]
client/server: add support for passing disk_util structures

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdapt clat percentiles for min/max values
Jens Axboe [Thu, 13 Oct 2011 07:28:21 +0000 (09:28 +0200)]
Adapt clat percentiles for min/max values

Decide between using msec or usec based on the calculated values.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoDisable clat percentiles if gtod_reduce=1 is set
Jens Axboe [Thu, 13 Oct 2011 06:55:29 +0000 (08:55 +0200)]
Disable clat percentiles if gtod_reduce=1 is set

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoEnable completion latency percentiles by default
Jens Axboe [Thu, 13 Oct 2011 06:53:24 +0000 (08:53 +0200)]
Enable completion latency percentiles by default

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoRemove extra \n before printing run status
Jens Axboe [Thu, 13 Oct 2011 06:50:46 +0000 (08:50 +0200)]
Remove extra \n before printing run status

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.5 fio-1.99.5
Jens Axboe [Wed, 12 Oct 2011 19:33:26 +0000 (21:33 +0200)]
Fio 1.99.5

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: fix bug in converting/storing clat percentiles
Jens Axboe [Wed, 12 Oct 2011 19:20:42 +0000 (21:20 +0200)]
server: fix bug in converting/storing clat percentiles

It helps when you read the source values, instead of storing and
converting the destinations values only.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoBe a bit more defensive in clat percentile calc and display
Jens Axboe [Wed, 12 Oct 2011 19:03:45 +0000 (21:03 +0200)]
Be a bit more defensive in clat percentile calc and display

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoPretty up clat percentile display so it's actually readable
Jens Axboe [Wed, 12 Oct 2011 18:32:22 +0000 (20:32 +0200)]
Pretty up clat percentile display so it's actually readable

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix clat percentile display
Jens Axboe [Wed, 12 Oct 2011 14:07:30 +0000 (16:07 +0200)]
Fix clat percentile display

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoCorrect Windows fio version
Jens Axboe [Wed, 12 Oct 2011 11:48:44 +0000 (13:48 +0200)]
Correct Windows fio version

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoMerge branch 'master' into client-server
Jens Axboe [Wed, 12 Oct 2011 07:47:25 +0000 (09:47 +0200)]
Merge branch 'master' into client-server

Conflicts:
init.c
io_u.c
os/windows/install.wxs
os/windows/version.h

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix bad random offset generation for file map
Jens Axboe [Wed, 12 Oct 2011 07:42:33 +0000 (09:42 +0200)]
Fix bad random offset generation for file map

If OS_RAND_MAX and FRAND_MAX are different, then ensure that
we use the right one. If not, our lookup cache could be outside
the allowed range, thus causing a segfault by indexing
f->file_map beyond end of the array.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix off-by-one in jobs_eta allocation
Jens Axboe [Wed, 12 Oct 2011 07:20:34 +0000 (09:20 +0200)]
Fix off-by-one in jobs_eta allocation

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: cleanup bit printing
Jens Axboe [Tue, 11 Oct 2011 13:07:23 +0000 (15:07 +0200)]
client: cleanup bit printing

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: include 32/64-bit in probe
Jens Axboe [Tue, 11 Oct 2011 12:30:06 +0000 (14:30 +0200)]
server: include 32/64-bit in probe

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: fix ptr <-> uint64_t casting warnings on 32-bit builds
Jens Axboe [Tue, 11 Oct 2011 12:25:08 +0000 (14:25 +0200)]
client/server: fix ptr <-> uint64_t casting warnings on 32-bit builds

Not actually a bug, but gcc complains.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: dec sum_stat_clients if one a client is disconnected
Jens Axboe [Tue, 11 Oct 2011 12:20:22 +0000 (14:20 +0200)]
client: dec sum_stat_clients if one a client is disconnected

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: display summed total of all clients when all stats have been received
Jens Axboe [Tue, 11 Oct 2011 12:08:33 +0000 (14:08 +0200)]
client: display summed total of all clients when all stats have been received

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: error handling fixes
Jens Axboe [Tue, 11 Oct 2011 10:16:32 +0000 (12:16 +0200)]
server: error handling fixes

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: assume PID is dead on ESRCH
Jens Axboe [Tue, 11 Oct 2011 09:45:35 +0000 (11:45 +0200)]
server: assume PID is dead on ESRCH

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: track and handle command timeouts
Jens Axboe [Tue, 11 Oct 2011 08:15:51 +0000 (10:15 +0200)]
client/server: track and handle command timeouts

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFio 1.99.4 fio-1.99.4
Jens Axboe [Mon, 10 Oct 2011 19:30:42 +0000 (21:30 +0200)]
Fio 1.99.4

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: fread() - check <= 0 return value
Jens Axboe [Mon, 10 Oct 2011 19:16:55 +0000 (21:16 +0200)]
server: fread() - check <= 0 return value

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: duplicate arguments to "empty" clients
Jens Axboe [Mon, 10 Oct 2011 19:11:09 +0000 (21:11 +0200)]
client: duplicate arguments to "empty" clients

Now you can do:

fio --client=host1 --client=host2 --arg1 --arg2 --arg3

and arg1,2,3 are passed to both clients. If you do:

fio --client=host1 --arg1 --client=host2 --arg2 --arg3

then arg1 is passed to host1, while arg2,3 are passed to host2.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: improve pidfile and log handling
Jens Axboe [Mon, 10 Oct 2011 17:51:26 +0000 (19:51 +0200)]
server: improve pidfile and log handling

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoserver: write pid file for backgrounded server to specified file
Jens Axboe [Mon, 10 Oct 2011 13:28:58 +0000 (15:28 +0200)]
server: write pid file for backgrounded server to specified file

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: properly assign client eta in flight
Jens Axboe [Mon, 10 Oct 2011 12:36:07 +0000 (14:36 +0200)]
client: properly assign client eta in flight

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAbstract out and export summation of thread_stats
Jens Axboe [Mon, 10 Oct 2011 10:14:30 +0000 (12:14 +0200)]
Abstract out and export summation of thread_stats

Client side will need it.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: few select speedups
Jens Axboe [Mon, 10 Oct 2011 07:55:21 +0000 (09:55 +0200)]
client/server: few select speedups

Don't alloc/free when we can reuse, and don't calculate string
lengths twice.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: track pending ETA requests
Jens Axboe [Mon, 10 Oct 2011 06:56:18 +0000 (08:56 +0200)]
client: track pending ETA requests

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoinit: typo, remove -> remote.
Jens Axboe [Mon, 10 Oct 2011 06:33:18 +0000 (08:33 +0200)]
init: typo, remove -> remote.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient/server: request ETA instead of having the server send it automatically
Jens Axboe [Sun, 9 Oct 2011 19:54:10 +0000 (21:54 +0200)]
client/server: request ETA instead of having the server send it automatically

Also changes the 'serial' of the command to a tag, that's passed
back and forth for commands that need to use it.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: sum running ETA of jobs
Jens Axboe [Sun, 9 Oct 2011 10:19:08 +0000 (12:19 +0200)]
client: sum running ETA of jobs

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoclient: fix jobs_eta conversion typo
Jens Axboe [Sun, 9 Oct 2011 10:13:39 +0000 (12:13 +0200)]
client: fix jobs_eta conversion typo

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoUpdate TODO
Jens Axboe [Sat, 8 Oct 2011 19:50:01 +0000 (21:50 +0200)]
Update TODO

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoAdd protocol support for an arbitrary number of command line arguments
Jens Axboe [Sat, 8 Oct 2011 19:07:29 +0000 (21:07 +0200)]
Add protocol support for an arbitrary number of command line arguments

Make it more efficient as well, don't pass a lot of potentially
padded space, pass only the exact amount required.

Signed-off-by: Jens Axboe <axboe@kernel.dk>
12 years agoFix Windows issue with socklen_t
Bruce Cran [Sat, 8 Oct 2011 16:51:22 +0000 (18:51 +0200)]
Fix Windows issue with socklen_t

Signed-off-by: Jens Axboe <axboe@kernel.dk>