Recent changes (master)

Jens Axboe
2016-05-25T12:00:05Z

[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1: Type: text/plain, Size: 6907 bytes --]

The following changes since commit bbcacb72ac5f81b77a96981e6d00d9134360e7c5:

parse: warn if option is missing a long option variant (2016-05-23 10:39:16 -0600)

are available in the git repository at:

git://git.kernel.dk/fio.git master

for you to fetch changes up to 97e1fe78db572a48a44c2a8511f8393a8643fc28:

Fio 2.11 (2016-05-24 18:42:04 -0600)

----------------------------------------------------------------
Jens Axboe (2):
backend: regrow logs for sync IO engines as well
Fio 2.11

Mark Nelson (1):
remove numpy and scipy dependency

Martin Steigerwald (5):
Spelling fix. Reported by Debian��s lintian.
Spelling fix. Reported by Debian��s lintian.
Spelling fix. Reported by Debian��s lintian.
Spelling fix.
Spelling fix. Reported by Debian��s lintian.

FIO-VERSION-GEN | 2 +-
backend.c | 3 +++
fio.1 | 2 +-
gettime-thread.c | 2 +-
idletime.c | 2 +-
memory.c | 2 +-
options.c | 2 +-
os/windows/install.wxs | 2 +-
tools/fiologparser.py | 35 ++++++++++++++++++++---------------
9 files changed, 30 insertions(+), 22 deletions(-)

---

Diff of recent changes:

diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN
index d1ba7ca..ea65ea8 100755
--- a/FIO-VERSION-GEN
+++ b/FIO-VERSION-GEN
@@ -1,7 +1,7 @@
#!/bin/sh

GVF=FIO-VERSION-FILE
-DEF_VER=fio-2.10
+DEF_VER=fio-2.11

LF='
'
diff --git a/backend.c b/backend.c
index 6d50360..f132222 100644
--- a/backend.c
+++ b/backend.c
@@ -524,6 +524,9 @@ sync_done:
break;
}

+ if (td->flags & TD_F_REGROW_LOGS)
+ regrow_logs(td);
+
/*
* when doing I/O (not when verifying),
* check for any errors that are to be ignored
diff --git a/fio.1 b/fio.1
index 839a359..f521c9d 100644
--- a/fio.1
+++ b/fio.1
@@ -2087,7 +2087,7 @@ This format is not supported in Fio versions => 1.20-rc3.
.B Trace file format v2
.RS
The second version of the trace file format was added in Fio version 1.17.
-It allows to access more then one file per trace and has a bigger set of
+It allows one to access more then one file per trace and has a bigger set of
possible file actions.

The first line of the trace file has to be:
diff --git a/gettime-thread.c b/gettime-thread.c
index 9bf85f0..6dc1486 100644
--- a/gettime-thread.c
+++ b/gettime-thread.c
@@ -81,7 +81,7 @@ int fio_start_gtod_thread(void)

ret = pthread_detach(gtod_thread);
if (ret) {
- log_err("Can't detatch gtod thread: %s\n", strerror(ret));
+ log_err("Can't detach gtod thread: %s\n", strerror(ret));
goto err;
}

diff --git a/idletime.c b/idletime.c
index fab43c5..4c00d80 100644
--- a/idletime.c
+++ b/idletime.c
@@ -260,7 +260,7 @@ void fio_idle_prof_init(void)

if ((ret = pthread_detach(ipt->thread))) {
/* log error and let the thread spin */
- log_err("fio: pthread_detatch %s\n", strerror(ret));
+ log_err("fio: pthread_detach %s\n", strerror(ret));
}
}

diff --git a/memory.c b/memory.c
index c04d7df..af4d5ef 100644
--- a/memory.c
+++ b/memory.c
@@ -89,7 +89,7 @@ static int alloc_mem_shm(struct thread_data *td, unsigned int total_mem)
" support huge pages.\n");
} else if (errno == ENOMEM) {
log_err("fio: no huge pages available, do you"
- " need to alocate some? See HOWTO.\n");
+ " need to allocate some? See HOWTO.\n");
}
}

diff --git a/options.c b/options.c
index 7f0f2c0..3360784 100644
--- a/options.c
+++ b/options.c
@@ -2023,7 +2023,7 @@ struct fio_option fio_options[FIO_MAX_OPTS] = {
},
{ .ival = "normal",
.oval = FIO_RAND_DIST_GAUSS,
- .help = "Normal (gaussian) distribution",
+ .help = "Normal (Gaussian) distribution",
},
{ .ival = "zoned",
.oval = FIO_RAND_DIST_ZONED,
diff --git a/os/windows/install.wxs b/os/windows/install.wxs
index 8ae1394..45084e6 100755
--- a/os/windows/install.wxs
+++ b/os/windows/install.wxs
@@ -10,7 +10,7 @@
<Product Id="*"
Codepage="1252" Language="1033"
Manufacturer="fio" Name="fio"
- UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.10">
+ UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.11">
<Package
Description="Flexible IO Tester"
InstallerVersion="301" Keywords="Installer,MSI,Database"
diff --git a/tools/fiologparser.py b/tools/fiologparser.py
index 00e4d30..685f419 100755
--- a/tools/fiologparser.py
+++ b/tools/fiologparser.py
@@ -14,8 +14,7 @@
# to see per-interval average completion latency.

import argparse
-import numpy
-import scipy
+import math

def parse_args():
parser = argparse.ArgumentParser()
@@ -82,7 +81,6 @@ def print_averages(ctx, series):
# to debug this routine, use
# # sort -n -t ',' -k 2 small.log
# on your input.
-# Sometimes scipy interpolates between two values to get a percentile

def my_extend( vlist, val ):
vlist.extend(val)
@@ -102,21 +100,16 @@ def print_all_stats(ctx, series):
for sample_array in sample_arrays:
samplevalue_arrays.append(
[ sample.value for sample in sample_array ] )
- #print('samplevalue_arrays len: %d' % len(samplevalue_arrays))
- #print('samplevalue_arrays elements len: ' + \
- #str(map( lambda l: len(l), samplevalue_arrays)))
# collapse list of lists of sample values into list of sample values
samplevalues = reduce( array_collapser, samplevalue_arrays, [] )
- #print('samplevalues: ' + str(sorted(samplevalues)))
# compute all stats and print them
- myarray = scipy.fromiter(samplevalues, float)
- mymin = scipy.amin(myarray)
- myavg = scipy.average(myarray)
- mymedian = scipy.median(myarray)
- my90th = scipy.percentile(myarray, 90)
- my95th = scipy.percentile(myarray, 95)
- my99th = scipy.percentile(myarray, 99)
- mymax = scipy.amax(myarray)
+ mymin = min(samplevalues)
+ myavg = sum(samplevalues) / float(len(samplevalues))
+ mymedian = median(samplevalues)
+ my90th = percentile(samplevalues, 0.90)
+ my95th = percentile(samplevalues, 0.95)
+ my99th = percentile(samplevalues, 0.99)
+ mymax = max(samplevalues)
print( '%f, %d, %f, %f, %f, %f, %f, %f, %f' % (
start, len(samplevalues),
mymin, myavg, mymedian, my90th, my95th, my99th, mymax))
@@ -125,6 +118,18 @@ def print_all_stats(ctx, series):
start += ctx.interval
end += ctx.interval

+def median(values):
+ s=sorted(values)
+ return float(s[(len(s)-1)/2]+s[(len(s)/2)])/2
+
+def percentile(values, p):
+ s = sorted(values)
+ k = (len(s)-1) * p
+ f = math.floor(k)
+ c = math.ceil(k)
+ if f == c:
+ return s[int(k)]
+ return (s[int(f)] * (c-k)) + (s[int(c)] * (k-f))

def print_default(ctx, series):
ftime = get_ftime(series)