diff --git a/fio.c b/fio.c
index c93cbe2..44c8b38 100644
--- a/fio.c
+++ b/fio.c
@@ -51,6 +51,7 @@
 int shm_id = 0;
 static LIST_HEAD(disk_list);
 static struct itimerval itimer;
+static struct timeval genesis;
 
 static void update_io_ticks(void);
 static void disk_util_timer_arm(void);
@@ -158,6 +159,11 @@
 	return s->tv_sec * 1000 + s->tv_usec / 1000;
 }
 
+static unsigned long time_since_now(struct timeval *s)
+{
+	return mtime_since_now(s) / 1000;
+}
+
 static int random_map_free(struct thread_data *td, unsigned long long block)
 {
 	unsigned int idx = RAND_MAP_IDX(td, block);
@@ -1866,10 +1872,39 @@
 	td->old_runstate = td->runstate;
 }
 
+static void eta_to_str(char *str, int eta_sec)
+{
+	unsigned int d, h, m, s;
+	static int always_d, always_h;
+
+	d = h = m = s = 0;
+
+	s = eta_sec % 60;
+	eta_sec /= 60;
+	m = eta_sec % 60;
+	eta_sec /= 60;
+	h = eta_sec % 24;
+	eta_sec /= 24;
+	d = eta_sec;
+
+	if (d || always_d) {
+		always_d = 1;
+		str += sprintf(str, "%02dd:", d);
+	}
+	if (h || always_h) {
+		always_h = 1;
+		str += sprintf(str, "%02dh:", h);
+	}
+
+	str += sprintf(str, "%02dm:", m);
+	str += sprintf(str, "%02ds", s);
+}
+
 static void print_thread_status(void)
 {
 	unsigned long long bytes_done, bytes_total;
-	int i, nr_running, t_rate, m_rate;
+	int i, nr_running, t_rate, m_rate, eta_sec;
+	char eta_str[32];
 	double perc;
 
 	bytes_done = bytes_total = 0;
@@ -1893,16 +1928,31 @@
 	}
 
 	perc = 0;
+	eta_sec = 0;
 	if (bytes_total && bytes_done) {
-		perc = (double) 100 * bytes_done / (double) bytes_total;
-		if (perc > 100.0)
-			perc = 100.0;
+		unsigned long runtime;
+
+		perc = (double) bytes_done / (double) bytes_total;
+		if (perc > 1.0)
+			perc = 1.0;
+
+		runtime = time_since_now(&genesis);
+		if (runtime >= 5) {
+			memset(eta_str, 0, sizeof(eta_str));
+			eta_sec = (runtime * (1.0 / perc)) - runtime;
+			eta_to_str(eta_str, eta_sec);
+		}
+
+		perc *= 100.0;
 	}
 
-	printf("Threads now running: %d", nr_running);
+	printf("Threads now running (%d)", nr_running);
 	if (m_rate || t_rate)
 		printf(", commitrate %d/%dKiB/sec", t_rate, m_rate);
-	printf(" : [%s] [%3.2f%% done]\r", run_str, perc);
+	printf(": [%s] [%3.2f%% done]", run_str, perc);
+	if (eta_sec)
+		printf(" [eta %s]", eta_str);
+	printf("\r");
 	fflush(stdout);
 }
 
@@ -1937,7 +1987,6 @@
 
 static void run_threads(void)
 {
-	struct timeval genesis;
 	struct thread_data *td;
 	unsigned long spent;
 	int i, todo, nr_running, m_rate, t_rate, nr_started;
