Recent changes (gfio)

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

 



The following changes since commit dbc542d442b81ddc58939be96a1c89e9953b9698:

  gfio: color code the iops/bw fields (2012-09-24 19:54:07 +0200)

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

Dmitry Monakhov (1):
      backend: fix data direction flow check

Jens Axboe (5):
      gfio: kill debug printf()
      gfio: color parse stack removal
      gfio: add and colorize graphs on main page, too
      gfio: make 'light yellow' color a little lighter
      Merge branch 'master' into gfio

 backend.c  |    2 +-
 gclient.c  |   31 +++++++++++++++++++------------
 gclient.h  |    6 +++---
 gfio.c     |   58 +++++++++++++++-------------------------------------------
 ghelpers.c |   25 +++++++++++++++++++++++++
 ghelpers.h |    2 ++
 6 files changed, 65 insertions(+), 59 deletions(-)

---

Diff of recent changes:

diff --git a/backend.c b/backend.c
index 6f40038..586eac8 100644
--- a/backend.c
+++ b/backend.c
@@ -812,7 +812,7 @@ static int init_io_u(struct thread_data *td)
 	td->orig_buffer_size = (unsigned long long) max_bs
 					* (unsigned long long) max_units;
 
-	if ((td->io_ops->flags & FIO_NOIO) || !td_rw(td))
+	if ((td->io_ops->flags & FIO_NOIO) || !(td_read(td) || td_write(td)))
 		data_xfer = 0;
 
 	if (td->o.mem_type == MEM_SHMHUGE || td->o.mem_type == MEM_MMAPHUGE) {
diff --git a/gclient.c b/gclient.c
index 6095863..b8c681a 100644
--- a/gclient.c
+++ b/gclient.c
@@ -448,7 +448,7 @@ static void gfio_update_all_eta(struct jobs_eta *je)
 	char eta_str[128];
 	char output[256];
 	double perc = 0.0;
-	int i2p = 0;
+	int i, i2p = 0;
 
 	gdk_threads_enter();
 
@@ -483,8 +483,8 @@ static void gfio_update_all_eta(struct jobs_eta *je)
 	entry_set_int_value(ui->eta.jobs, je->nr_running);
 
 	if (je->eta_sec != INT_MAX && je->nr_running) {
-		char *iops_str[2];
-		char *rate_str[2];
+		char *iops_str[3];
+		char *rate_str[3];
 
 		if ((!je->eta_sec && !eta_good) || je->nr_ramp == je->nr_running)
 			strcpy(output, "-.-% done");
@@ -496,24 +496,30 @@ static void gfio_update_all_eta(struct jobs_eta *je)
 
 		rate_str[0] = num2str(je->rate[0], 5, 10, i2p);
 		rate_str[1] = num2str(je->rate[1], 5, 10, i2p);
+		rate_str[2] = num2str(je->rate[2], 5, 10, i2p);
 
 		iops_str[0] = num2str(je->iops[0], 4, 1, 0);
 		iops_str[1] = num2str(je->iops[1], 4, 1, 0);
+		iops_str[2] = num2str(je->iops[2], 4, 1, 0);
 
 		gtk_entry_set_text(GTK_ENTRY(ui->eta.read_bw), rate_str[0]);
 		gtk_entry_set_text(GTK_ENTRY(ui->eta.read_iops), iops_str[0]);
 		gtk_entry_set_text(GTK_ENTRY(ui->eta.write_bw), rate_str[1]);
 		gtk_entry_set_text(GTK_ENTRY(ui->eta.write_iops), iops_str[1]);
+		gtk_entry_set_text(GTK_ENTRY(ui->eta.trim_bw), rate_str[2]);
+		gtk_entry_set_text(GTK_ENTRY(ui->eta.trim_iops), iops_str[2]);
 
 		graph_add_xy_data(ui->graphs.iops_graph, ui->graphs.read_iops, je->elapsed_sec, je->iops[0], iops_str[0]);
 		graph_add_xy_data(ui->graphs.iops_graph, ui->graphs.write_iops, je->elapsed_sec, je->iops[1], iops_str[1]);
+		graph_add_xy_data(ui->graphs.iops_graph, ui->graphs.trim_iops, je->elapsed_sec, je->iops[2], iops_str[2]);
 		graph_add_xy_data(ui->graphs.bandwidth_graph, ui->graphs.read_bw, je->elapsed_sec, je->rate[0], rate_str[0]);
 		graph_add_xy_data(ui->graphs.bandwidth_graph, ui->graphs.write_bw, je->elapsed_sec, je->rate[1], rate_str[1]);
+		graph_add_xy_data(ui->graphs.bandwidth_graph, ui->graphs.trim_bw, je->elapsed_sec, je->rate[2], rate_str[2]);
 
-		free(rate_str[0]);
-		free(rate_str[1]);
-		free(iops_str[0]);
-		free(iops_str[1]);
+		for (i = 0; i < DDIR_RWDIR_CNT; i++) {
+			free(rate_str[i]);
+			free(iops_str[i]);
+		}
 	}
 
 	if (eta_str[0]) {
@@ -1170,7 +1176,7 @@ static void gfio_show_ddir_status(struct gfio_client *gc, GtkWidget *mbox,
 				  struct group_run_stats *rs,
 				  struct thread_stat *ts, int ddir)
 {
-	const char *ddir_label[2] = { "Read", "Write" };
+	const char *ddir_label[3] = { "Read", "Write", "Trim" };
 	GtkWidget *frame, *label, *box, *vbox, *main_vbox;
 	unsigned long min[3], max[3], runt;
 	unsigned long long bw, iops;
@@ -1289,6 +1295,7 @@ static void __gfio_display_end_results(GtkWidget *win, struct gfio_client *gc,
 				       struct group_run_stats *rs)
 {
 	GtkWidget *box, *vbox, *entry, *scroll;
+	int i;
 
 	scroll = gtk_scrolled_window_new(NULL, NULL);
 	gtk_container_set_border_width(GTK_CONTAINER(scroll), 5);
@@ -1318,10 +1325,10 @@ static void __gfio_display_end_results(GtkWidget *win, struct gfio_client *gc,
 	entry = new_info_entry_in_frame(box, "PID");
 	entry_set_int_value(entry, ts->pid);
 
-	if (ts->io_bytes[DDIR_READ])
-		gfio_show_ddir_status(gc, vbox, rs, ts, DDIR_READ);
-	if (ts->io_bytes[DDIR_WRITE])
-		gfio_show_ddir_status(gc, vbox, rs, ts, DDIR_WRITE);
+	for (i = 0; i < DDIR_RWDIR_CNT; i++) {
+		if (ts->io_bytes[i])
+			gfio_show_ddir_status(gc, vbox, rs, ts, i);
+	}
 
 	gfio_show_latency_buckets(gc, vbox, ts);
 	gfio_show_cpu_usage(vbox, ts);
diff --git a/gclient.h b/gclient.h
index 56136be..4038365 100644
--- a/gclient.h
+++ b/gclient.h
@@ -11,8 +11,8 @@ extern void gfio_display_end_results(struct gfio_client *);
 #define GFIO_WRITE_R	1.00
 #define GFIO_WRITE_G	0.00
 #define GFIO_WRITE_B	0.00
-#define GFIO_IOPS_R	0.24
-#define GFIO_IOPS_G	0.18
-#define GFIO_IOPS_B	0.52
+#define GFIO_TRIM_R	0.24
+#define GFIO_TRIM_G	0.18
+#define GFIO_TRIM_B	0.52
 
 #endif
diff --git a/gfio.c b/gfio.c
index 89fc3bf..3138941 100644
--- a/gfio.c
+++ b/gfio.c
@@ -88,7 +88,7 @@ static void setup_iops_graph(struct gfio_graphs *gg)
 	gg->trim_iops = graph_add_label(g, "Trim IOPS");
 	graph_set_color(g, gg->read_iops, GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
 	graph_set_color(g, gg->write_iops, GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
-	graph_set_color(g, gg->trim_iops, GFIO_IOPS_R, GFIO_IOPS_G, GFIO_IOPS_B);
+	graph_set_color(g, gg->trim_iops, GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
 	line_graph_set_data_count_limit(g, gfio_graph_limit);
 	graph_add_extra_space(g, 0.0, 0.0, 0.0, 0.0);
 	graph_set_graph_all_zeroes(g, 0);
@@ -107,7 +107,7 @@ static void setup_bandwidth_graph(struct gfio_graphs *gg)
 	gg->trim_bw = graph_add_label(g, "Trim Bandwidth");
 	graph_set_color(g, gg->read_bw, GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
 	graph_set_color(g, gg->write_bw, GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
-	graph_set_color(g, gg->trim_bw, GFIO_IOPS_R, GFIO_IOPS_G, GFIO_IOPS_B);
+	graph_set_color(g, gg->trim_bw, GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
 	graph_set_base_offset(g, 1);
 	line_graph_set_data_count_limit(g, 100);
 	graph_add_extra_space(g, 0.0, 0.0, 0.0, 0.0);
@@ -1346,25 +1346,10 @@ static void combo_entry_destroy(GtkWidget *widget, gpointer data)
 	multitext_free(&ge->eta.iodepth);
 }
 
-static void fill_color_from_rgb(GdkColor *c, gfloat r, gfloat g, gfloat b)
-{
-	gint R, G, B;
-	gchar tmp[32];
-
-	memset(c, 0, sizeof(*c));
-	R = r * 255;
-	G = g * 255;
-	B = b * 255;
-	sprintf(tmp, "#%02x%02x%02x", R, G, B);
-	printf("%s\n", tmp);
-	gdk_color_parse(tmp, c);
-}
-
 static GtkWidget *new_client_page(struct gui_entry *ge)
 {
 	GtkWidget *main_vbox, *probe, *probe_frame, *probe_box;
 	GtkWidget *scrolled_window, *bottom_align, *top_align, *top_vbox;
-	GdkColor color;
 
 	main_vbox = gtk_vbox_new(FALSE, 3);
 
@@ -1400,24 +1385,12 @@ static GtkWidget *new_client_page(struct gui_entry *ge)
 
 	probe_box = gtk_hbox_new(FALSE, 3);
 	gtk_box_pack_start(GTK_BOX(probe_frame), probe_box, FALSE, FALSE, 3);
-	ge->eta.read_bw = new_info_entry_in_frame(probe_box, "Read BW");
-	ge->eta.read_iops = new_info_entry_in_frame(probe_box, "IOPS");
-	ge->eta.write_bw = new_info_entry_in_frame(probe_box, "Write BW");
-	ge->eta.write_iops = new_info_entry_in_frame(probe_box, "IOPS");
-	ge->eta.trim_bw = new_info_entry_in_frame(probe_box, "Trim BW");
-	ge->eta.trim_iops = new_info_entry_in_frame(probe_box, "IOPS");
-
-	fill_color_from_rgb(&color, GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
-	gtk_widget_modify_text(ge->eta.read_bw, GTK_STATE_NORMAL, &color);
-	gtk_widget_modify_text(ge->eta.read_iops, GTK_STATE_NORMAL, &color);
-
-	fill_color_from_rgb(&color, GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
-	gtk_widget_modify_text(ge->eta.write_bw, GTK_STATE_NORMAL, &color);
-	gtk_widget_modify_text(ge->eta.write_iops, GTK_STATE_NORMAL, &color);
-
-	fill_color_from_rgb(&color, GFIO_IOPS_R, GFIO_IOPS_G, GFIO_IOPS_B);
-	gtk_widget_modify_text(ge->eta.trim_bw, GTK_STATE_NORMAL, &color);
-	gtk_widget_modify_text(ge->eta.trim_iops, GTK_STATE_NORMAL, &color);
+	ge->eta.read_bw = new_info_entry_in_frame_rgb(probe_box, "Read BW", GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
+	ge->eta.read_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
+	ge->eta.write_bw = new_info_entry_in_frame_rgb(probe_box, "Write BW", GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
+	ge->eta.write_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
+	ge->eta.trim_bw = new_info_entry_in_frame_rgb(probe_box, "Trim BW", GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
+	ge->eta.trim_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
 
 	/*
 	 * Only add this if we have a commit rate
@@ -1500,13 +1473,12 @@ static GtkWidget *new_main_page(struct gui *ui)
 	probe_box = gtk_hbox_new(FALSE, 3);
 	gtk_box_pack_start(GTK_BOX(probe_frame), probe_box, FALSE, FALSE, 3);
 	ui->eta.jobs = new_info_entry_in_frame(probe_box, "Running");
-	ui->eta.read_bw = new_info_entry_in_frame(probe_box, "Read BW");
-	ui->eta.read_iops = new_info_entry_in_frame(probe_box, "IOPS");
-	ui->eta.write_bw = new_info_entry_in_frame(probe_box, "Write BW");
-	ui->eta.write_iops = new_info_entry_in_frame(probe_box, "IOPS");
-	ui->eta.trim_bw = new_info_entry_in_frame(probe_box, "Trim BW");
-	ui->eta.trim_iops = new_info_entry_in_frame(probe_box, "IOPS");
-
+	ui->eta.read_bw = new_info_entry_in_frame_rgb(probe_box, "Read BW", GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
+	ui->eta.read_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_READ_R, GFIO_READ_G, GFIO_READ_B);
+	ui->eta.write_bw = new_info_entry_in_frame_rgb(probe_box, "Write BW", GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
+	ui->eta.write_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_WRITE_R, GFIO_WRITE_G, GFIO_WRITE_B);
+	ui->eta.trim_bw = new_info_entry_in_frame_rgb(probe_box, "Trim BW", GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
+	ui->eta.trim_iops = new_info_entry_in_frame_rgb(probe_box, "IOPS", GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
 
 	/*
 	 * Only add this if we have a commit rate
@@ -1706,7 +1678,7 @@ static void init_ui(int *argc, char **argv[], struct gui *ui)
 	settings = gtk_settings_get_default();
 	gtk_settings_set_long_property(settings, "gtk_tooltip_timeout", 10, "gfio setting");
 	g_type_init();
-	gdk_color_parse("#ffffee", &gfio_color_lightyellow);
+	gdk_color_parse("#fffff4", &gfio_color_lightyellow);
 	gdk_color_parse("white", &gfio_color_white);
 
 	ui->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
diff --git a/ghelpers.c b/ghelpers.c
index d9380a2..7acf588 100644
--- a/ghelpers.c
+++ b/ghelpers.c
@@ -30,6 +30,31 @@ GtkWidget *new_info_entry_in_frame(GtkWidget *box, const char *label)
 	return entry;
 }
 
+static void fill_color_from_rgb(GdkColor *c, gfloat r, gfloat g, gfloat b)
+{
+	gint R, G, B;
+	gchar tmp[8];
+
+	memset(c, 0, sizeof(*c));
+	R = r * 255;
+	G = g * 255;
+	B = b * 255;
+	snprintf(tmp, sizeof(tmp), "#%02x%02x%02x", R, G, B);
+	gdk_color_parse(tmp, c);
+}
+
+GtkWidget *new_info_entry_in_frame_rgb(GtkWidget *box, const char *label,
+					gfloat r, gfloat g, gfloat b)
+{
+	GtkWidget *entry;
+	GdkColor c;
+
+	entry = new_info_entry_in_frame(box, label);
+	fill_color_from_rgb(&c, r, g, b);
+	gtk_widget_modify_text(entry, GTK_STATE_NORMAL, &c);
+	return entry;
+}
+
 GtkWidget *new_info_label_in_frame(GtkWidget *box, const char *label)
 {
 	GtkWidget *label_widget;
diff --git a/ghelpers.h b/ghelpers.h
index f5aabec..39a994b 100644
--- a/ghelpers.h
+++ b/ghelpers.h
@@ -4,6 +4,8 @@
 GtkWidget *new_combo_entry_in_frame(GtkWidget *box, const char *label);
 GtkWidget *new_info_entry_in_frame(GtkWidget *box, const char *label);
 GtkWidget *new_info_label_in_frame(GtkWidget *box, const char *label);
+GtkWidget *new_info_entry_in_frame_rgb(GtkWidget *box, const char *label,
+					gfloat r, gfloat g, gfloat b);
 GtkWidget *create_spinbutton(GtkWidget *hbox, double min, double max, double defval);
 void label_set_int_value(GtkWidget *entry, unsigned int val);
 void entry_set_int_value(GtkWidget *entry, unsigned int val);
--
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