Recent changes (master)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



The following changes since commit d5e16441bd7727f3e1b90708f957d42a7e47121d:

  gettime: cleanup for FIO_DEBUG_TIME (2014-12-16 23:03:54 -0700)

are available in the git repository at:

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

for you to fetch changes up to 1d31d1bcffe0b282aaadca12dc83d2dd671b84f2:

  parse: remove the arithmetic parser checking (2014-12-17 13:27:32 -0700)

----------------------------------------------------------------
Jens Axboe (5):
      stat: always show disk util in terse v3/v4
      gettime: offset CPU cycle counter by initial value
      gettime: fix compile warning for !ARCH_HAVE_CPU_CLOCK
      Fio 2.2.0
      parse: remove the arithmetic parser checking

 FIO-VERSION-GEN        |    2 +-
 gettime.c              |   28 +++++++++++++++----------
 os/windows/install.wxs |    2 +-
 parse.c                |   53 +-----------------------------------------------
 stat.c                 |    3 +--
 5 files changed, 21 insertions(+), 67 deletions(-)

---

Diff of recent changes:

diff --git a/FIO-VERSION-GEN b/FIO-VERSION-GEN
index e2052c4..f0a0a45 100755
--- a/FIO-VERSION-GEN
+++ b/FIO-VERSION-GEN
@@ -1,7 +1,7 @@
 #!/bin/sh
 
 GVF=FIO-VERSION-FILE
-DEF_VER=fio-2.1.14
+DEF_VER=fio-2.2.0
 
 LF='
 '
diff --git a/gettime.c b/gettime.c
index 7e3e2e5..172b478 100644
--- a/gettime.c
+++ b/gettime.c
@@ -17,6 +17,7 @@
 static unsigned long cycles_per_usec;
 static unsigned long inv_cycles_per_usec;
 static uint64_t max_cycles_for_mult;
+static unsigned long long cycles_start, cycles_wrap;
 #endif
 int tsc_reliable = 0;
 
@@ -25,11 +26,13 @@ struct tv_valid {
 	int last_tv_valid;
 	int warned;
 };
+#ifdef ARCH_HAVE_CPU_CLOCK
 #ifdef CONFIG_TLS_THREAD
 static __thread struct tv_valid static_tv_valid;
 #else
 static pthread_key_t tv_tls_key;
 #endif
+#endif
 
 enum fio_cs fio_clock_source = FIO_PREFERRED_CLOCK_SOURCE;
 int fio_clock_source_set = 0;
@@ -136,14 +139,6 @@ static int fill_clock_gettime(struct timespec *ts)
 
 static void __fio_gettime(struct timeval *tp)
 {
-	struct tv_valid *tv;
-
-#ifdef CONFIG_TLS_THREAD
-	tv = &static_tv_valid;
-#else
-	tv = pthread_getspecific(tv_tls_key);
-#endif
-
 	switch (fio_clock_source) {
 #ifdef CONFIG_GETTIMEOFDAY
 	case CS_GTOD:
@@ -167,14 +162,23 @@ static void __fio_gettime(struct timeval *tp)
 #ifdef ARCH_HAVE_CPU_CLOCK
 	case CS_CPUCLOCK: {
 		uint64_t usecs, t;
+		struct tv_valid *tv;
+
+#ifdef CONFIG_TLS_THREAD
+		tv = &static_tv_valid;
+#else
+		tv = pthread_getspecific(tv_tls_key);
+#endif
 
 		t = get_cpu_clock();
-		if (t < tv->last_cycles && tv->last_tv_valid &&
-		    !tv->warned) {
-			log_err("fio: CPU clock going back in time\n");
+		if (t < cycles_start && !cycles_wrap)
+			cycles_wrap = 1;
+		else if (cycles_wrap && t >= cycles_start && !tv->warned) {
+			log_err("fio: double CPU clock wrap\n");
 			tv->warned = 1;
 		}
 
+		t -= cycles_start;
 		tv->last_cycles = t;
 		tv->last_tv_valid = 1;
 #ifdef ARCH_CPU_CLOCK_CYCLES_PER_USEC
@@ -299,6 +303,8 @@ static int calibrate_cpu_clock(void)
 	inv_cycles_per_usec = 16777216UL / cycles_per_usec;
 	max_cycles_for_mult = ~0ULL / inv_cycles_per_usec;
 	dprint(FD_TIME, "inv_cycles_per_usec=%lu\n", inv_cycles_per_usec);
+	cycles_start = get_cpu_clock();
+	dprint(FD_TIME, "cycles_start=%llu\n", cycles_start);
 	return 0;
 }
 #else
diff --git a/os/windows/install.wxs b/os/windows/install.wxs
index 3e15676..26be597 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.1.14">
+	  UpgradeCode="2338A332-5511-43CF-B9BD-5C60496CCFCC" Version="2.2.0">
 		<Package
 		  Description="Flexible IO Tester"
 		  InstallerVersion="301" Keywords="Installer,MSI,Database"
diff --git a/parse.c b/parse.c
index ae87b1e..e70ed20 100644
--- a/parse.c
+++ b/parse.c
@@ -272,53 +272,6 @@ extern int evaluate_arithmetic_expression(const char *buffer, long long *ival,
 					  double *dval, double implied_units,
 					  int is_time);
 
-#ifdef CONFIG_ARITHMETIC
-/*
- * These two verification functions are just to gain confidence that
- * the arithmetic processing code is always getting the same answer as the
- * original number parsing code.  Once sufficiently sure that the arithmetic
- * code is always getting the right answers, these can be removed.
- */
-static void verify_exp_parser_float(const char *str, double implied_units, int is_time)
-{
-	long long ival;
-	double dval, tmpval;
-
-	if (sscanf(str, "%lf", &tmpval) != 1)
-		return;
-
-	if (evaluate_arithmetic_expression(str, &ival, &dval, implied_units, is_time) != 0) {
-		log_info("Arithmetic failed on '%s'\n", str);
-		return;
-	}
-	if (dval != tmpval) {
-		log_info("Arithmetic failed on: '%s' got %lf, expected %lf\n",
-				str, dval, tmpval);
-	}
-}
-
-static void verify_exp_parser_decimal(const char *str, long long val, int kilo, int is_seconds,
-				      int is_time)
-{
-	int rc;
-	long long ival;
-	double dval;
-	double implied_units = 1.0;
-
-	if (is_seconds)
-		implied_units = 1000000.0;
-
-	rc = evaluate_arithmetic_expression(str, &ival, &dval, implied_units, is_time);
-	if (!rc) {
-		if (ival != val)
-			log_info("Arithmetic failed on '%s', expected %lld, got %lld\n",
-				str, val, ival);
-	} else {
-		log_info("Arithmetic failed on '%s'\n", str);
-	}
-}
-#endif
-
 /*
  * Convert string into a floating number. Return 1 for success and 0 otherwise.
  */
@@ -335,8 +288,6 @@ int str_to_float(const char *str, double *val, int is_time)
 			*val = dval;
 			return 1;
 		}
-	} else {
-		verify_exp_parser_float(str, 1.0, is_time);
 	}
 #endif
 	return 1 == sscanf(str, "%lf", val);
@@ -395,9 +346,7 @@ int str_to_decimal(const char *str, long long *val, int kilo, void *data,
 			*val *= mult;
 	} else
 		*val *= get_mult_time(str, len, is_seconds);
-#ifdef CONFIG_ARITHMETIC
-	verify_exp_parser_decimal(str, *val, kilo, is_seconds, is_time);
-#endif
+
 	return 0;
 }
 
diff --git a/stat.c b/stat.c
index 9d816d4..bae3338 100644
--- a/stat.c
+++ b/stat.c
@@ -896,8 +896,7 @@ static void show_thread_status_terse_v3_v4(struct thread_stat *ts,
 		log_info(";%3.2f%%", io_u_lat_m[i]);
 
 	/* disk util stats, if any */
-	if (is_backend)
-		show_disk_util(1, NULL);
+	show_disk_util(1, NULL);
 
 	/* Additional output if continue_on_error set - default off*/
 	if (ts->continue_on_error)
--
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




[Index of Archives]     [Linux Kernel]     [Linux SCSI]     [Linux IDE]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux SCSI]

  Powered by Linux