The following changes since commit e382e661f6a67a24d8042b9e4b8f812b7126bdc4: Add --eta-newline option (2013-02-22 20:48:56 +0100) are available in the git repository at: git://git.kernel.dk/fio.git master Bruce Cran (2): Add section 9 to HOWTO table of contents. Add LICENSE to Windows installer, fix filename extensions and update URL. Jens Axboe (2): Merge branch 'master' of ssh://brick.kernel.dk/data/git/fio gettime: add some sanity checks to platform clock HOWTO | 3 ++- gettime.c | 24 +++++++++++++++++++++--- os/windows/install.wxs | 14 +++++++++----- 3 files changed, 32 insertions(+), 9 deletions(-) --- Diff of recent changes: diff --git a/HOWTO b/HOWTO index ea8730c..fbe8f79 100644 --- a/HOWTO +++ b/HOWTO @@ -9,6 +9,7 @@ Table of contents 6. Normal output 7. Terse output 8. Trace file format +9. CPU idleness profiling 1.0 Overview and history ------------------------ @@ -775,7 +776,7 @@ random_generator=str Fio supports the following engines for generating block sizes, not with workloads that use multiple block sizes. If used with such a workload, fio may read or write some blocks multiple times. - + nice=int Run the job with the given nice value. See man nice(2). prio=int Set the io priority value of this job. Linux limits us to diff --git a/gettime.c b/gettime.c index 5b85a23..d56045c 100644 --- a/gettime.c +++ b/gettime.c @@ -262,7 +262,7 @@ static unsigned long get_cycles_per_usec(void) #define NR_TIME_ITERS 50 -static void calibrate_cpu_clock(void) +static int calibrate_cpu_clock(void) { double delta, mean, S; uint64_t avg, cycles[NR_TIME_ITERS]; @@ -279,6 +279,13 @@ static void calibrate_cpu_clock(void) } } + /* + * The most common platform clock breakage is returning zero + * indefinitely. Check for that and return failure. + */ + if (!cycles[0] && !cycles[NR_TIME_ITERS - 1]) + return 1; + S = sqrt(S / (NR_TIME_ITERS - 1.0)); samples = avg = 0; @@ -305,10 +312,12 @@ static void calibrate_cpu_clock(void) cycles_per_usec = avg; inv_cycles_per_usec = 16777216UL / cycles_per_usec; dprint(FD_TIME, "inv_cycles_per_usec=%lu\n", inv_cycles_per_usec); + return 0; } #else -static void calibrate_cpu_clock(void) +static int calibrate_cpu_clock(void) { + return 1; } #endif @@ -343,7 +352,9 @@ void fio_clock_init(void) #endif fio_clock_source_inited = fio_clock_source; - calibrate_cpu_clock(); + + if (calibrate_cpu_clock()) + tsc_reliable = 0; /* * If the arch sets tsc_reliable != 0, then it must be good enough @@ -481,6 +492,13 @@ static void *clock_thread_fn(void *data) } log_info("cs: cpu%3d: %lu clocks seen\n", t->cpu, t->entries[CLOCK_ENTRIES - 1].tsc - t->entries[0].tsc); + /* + * The most common platform clock breakage is returning zero + * indefinitely. Check for that and return failure. + */ + if (!t->entries[CLOCK_ENTRIES - 1].tsc && !t->entries[0].tsc) + return (void *) 1; + return NULL; } diff --git a/os/windows/install.wxs b/os/windows/install.wxs index 5b4b939..37216b4 100755 --- a/os/windows/install.wxs +++ b/os/windows/install.wxs @@ -30,16 +30,19 @@ <File KeyPath="yes" Source="..\..\pthreadGC2.dll"/> </Component> <Component> - <File Id="README" Name="README.rtf" Source="..\..\README"/> + <File Id="README" Name="README.txt" Source="..\..\README"/> </Component> <Component> - <File Id="REPORTING_BUGS" Name="REPORTING-BUGS.rtf" Source="..\..\REPORTING-BUGS"/> + <File Id="REPORTING_BUGS" Name="REPORTING-BUGS.txt" Source="..\..\REPORTING-BUGS"/> </Component> <Component> - <File Id="HOWTO" Name="HOWTO.rtf" Source="..\..\HOWTO"/> + <File Id="HOWTO" Name="HOWTO.txt" Source="..\..\HOWTO"/> </Component> <Component> - <File Id="COPYING" Name="COPYING.rtf" Source="..\..\COPYING"/> + <File Id="COPYING" Name="COPYING.txt" Source="..\..\COPYING"/> + </Component> + <Component> + <File Id="LICENSE" Name="LICENSE.txt" Source="..\..\LICENSE"/> </Component> <Directory Id="examples" Name="examples"/> </Directory> @@ -54,13 +57,14 @@ <ComponentRef Id="README"/> <ComponentRef Id="REPORTING_BUGS"/> <ComponentRef Id="COPYING"/> + <ComponentRef Id="LICENSE"/> <ComponentGroupRef Id="examples"/> </Feature> <Property Id="ARPURLINFOABOUT" Value="http://git.kernel.dk/?p=fio.git" /> <Property Id='ARPCONTACT'>fio@xxxxxxxxxxxxxxx</Property> <Property Id='ARPHELPLINK'>http://www.spinics.net/lists/fio/</Property> - <Property Id='ARPURLUPDATEINFO'>http://git.kernel.dk/?p=fio.git</Property> + <Property Id='ARPURLUPDATEINFO'>http://bluestop.org/fio/</Property> <WixVariable Id="WixUILicenseRtf" Value="eula.rtf" /> -- To unsubscribe from this list: send the line "unsubscribe fio" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html