Recent changes

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

 



The following changes since commit e01e9745a693f08172105ec0b677e0c1187eb123:

  Fix hyphen as minus sign errors by escaping minus signs. (2012-05-07 17:06:54 +0200)

are available in the git repository at:
  git://git.kernel.dk/fio.git master

Jens Axboe (1):
      eta: ETA bandwidth was off by 1.024

 client.c |    1 +
 eta.c    |   24 ++++++++++++++----------
 server.c |    1 +
 server.h |    2 +-
 stat.h   |    1 +
 5 files changed, 18 insertions(+), 11 deletions(-)

---

Diff of recent changes:

diff --git a/client.c b/client.c
index 0ce7a6e..7c99109 100644
--- a/client.c
+++ b/client.c
@@ -725,6 +725,7 @@ static void convert_jobs_eta(struct jobs_eta *je)
 
 	je->elapsed_sec		= le64_to_cpu(je->elapsed_sec);
 	je->eta_sec		= le64_to_cpu(je->eta_sec);
+	je->is_pow2		= le32_to_cpu(je->is_pow2);
 }
 
 static void sum_jobs_eta(struct jobs_eta *dst, struct jobs_eta *je)
diff --git a/eta.c b/eta.c
index 4679a21..9114595 100644
--- a/eta.c
+++ b/eta.c
@@ -216,8 +216,14 @@ static int thread_eta(struct thread_data *td)
 static void calc_rate(unsigned long mtime, unsigned long long *io_bytes,
 		      unsigned long long *prev_io_bytes, unsigned int *rate)
 {
-	rate[0] = (io_bytes[0] - prev_io_bytes[0]) / mtime;
-	rate[1] = (io_bytes[1] - prev_io_bytes[1]) / mtime;
+	int i;
+
+	for (i = 0; i <= DDIR_WRITE; i++) {
+		unsigned long long diff;
+
+		diff = io_bytes[i] - prev_io_bytes[i];
+		rate[i] = ((1000 * diff) / mtime) / 1024;
+	}
 	prev_io_bytes[0] = io_bytes[0];
 	prev_io_bytes[1] = io_bytes[1];
 }
@@ -248,7 +254,6 @@ int calc_thread_status(struct jobs_eta *je, int force)
 	static unsigned long long disp_io_bytes[2];
 	static unsigned long long disp_io_iops[2];
 	static struct timeval rate_prev_time, disp_prev_time;
-	int i2p = 0;
 
 	if (!force) {
 		if (temp_stall_ts || terse_output || eta_print == FIO_ETA_NEVER)
@@ -272,6 +277,8 @@ int calc_thread_status(struct jobs_eta *je, int force)
 	io_iops[0] = io_iops[1] = 0;
 	bw_avg_time = ULONG_MAX;
 	for_each_td(td, i) {
+		if (is_power_of_2(td->o.kb_base))
+			je->is_pow2 = 1;
 		if (td->o.bw_avg_time < bw_avg_time)
 			bw_avg_time = td->o.bw_avg_time;
 		if (td->runstate == TD_RUNNING || td->runstate == TD_VERIFYING
@@ -311,8 +318,6 @@ int calc_thread_status(struct jobs_eta *je, int force)
 		je->eta_sec = 0;
 
 	for_each_td(td, i) {
-		if (!i2p && is_power_of_2(td->o.kb_base))
-			i2p = 1;
 		if (exitall_on_terminate) {
 			if (eta_secs[i] < je->eta_sec)
 				je->eta_sec = eta_secs[i];
@@ -363,7 +368,6 @@ void display_thread_status(struct jobs_eta *je)
 	char output[REAL_MAX_JOBS + 512], *p = output;
 	char eta_str[128];
 	double perc = 0.0;
-	int i2p = 0;
 
 	if (je->eta_sec != INT_MAX && je->elapsed_sec) {
 		perc = (double) je->elapsed_sec / (double) (je->elapsed_sec + je->eta_sec);
@@ -374,8 +378,8 @@ void display_thread_status(struct jobs_eta *je)
 	if (je->m_rate || je->t_rate) {
 		char *tr, *mr;
 
-		mr = num2str(je->m_rate, 4, 0, i2p);
-		tr = num2str(je->t_rate, 4, 0, i2p);
+		mr = num2str(je->m_rate, 4, 0, je->is_pow2);
+		tr = num2str(je->t_rate, 4, 0, je->is_pow2);
 		p += sprintf(p, ", CR=%s/%s KB/s", tr, mr);
 		free(tr);
 		free(mr);
@@ -396,8 +400,8 @@ void display_thread_status(struct jobs_eta *je)
 			sprintf(perc_str, "%3.1f%% done", perc);
 		}
 
-		rate_str[0] = num2str(je->rate[0], 5, 10, i2p);
-		rate_str[1] = num2str(je->rate[1], 5, 10, i2p);
+		rate_str[0] = num2str(je->rate[0], 5, 1024, je->is_pow2);
+		rate_str[1] = num2str(je->rate[1], 5, 1024, je->is_pow2);
 
 		iops_str[0] = num2str(je->iops[0], 4, 1, 0);
 		iops_str[1] = num2str(je->iops[1], 4, 1, 0);
diff --git a/server.c b/server.c
index 169f50a..72def7e 100644
--- a/server.c
+++ b/server.c
@@ -451,6 +451,7 @@ static int handle_send_eta_cmd(struct fio_net_cmd *cmd)
 
 	je->elapsed_sec		= cpu_to_le64(je->elapsed_sec);
 	je->eta_sec		= cpu_to_le64(je->eta_sec);
+	je->is_pow2		= cpu_to_le32(je->is_pow2);
 
 	fio_net_send_cmd(server_fd, FIO_NET_CMD_ETA, je, size, cmd->tag);
 	free(je);
diff --git a/server.h b/server.h
index 494a40a..6d5a83d 100644
--- a/server.h
+++ b/server.h
@@ -36,7 +36,7 @@ struct fio_net_int_cmd {
 };
 
 enum {
-	FIO_SERVER_VER		= 7,
+	FIO_SERVER_VER		= 8,
 
 	FIO_SERVER_MAX_PDU	= 1024,
 
diff --git a/stat.h b/stat.h
index be27c72..c15f26e 100644
--- a/stat.h
+++ b/stat.h
@@ -180,6 +180,7 @@ struct jobs_eta {
 	uint32_t iops[2];
 	uint64_t elapsed_sec;
 	uint64_t eta_sec;
+	uint32_t is_pow2;
 
 	/*
 	 * Network 'copy' of run_str[]
--
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