X-Git-Url: https://git.kernel.dk/?p=fio.git;a=blobdiff_plain;f=gfio.c;h=936e41db2117c22d16a68ea09eb1770b7ddd74f9;hp=1dfe3a23ef73d9a54c658334a070ec0b9023ab63;hb=57f9d28e010b52fea5f41245e8fcb998367d3bcd;hpb=a31d9fa466bfeefb30ff56a3e697779c5079771b diff --git a/gfio.c b/gfio.c index 1dfe3a23..936e41db 100644 --- a/gfio.c +++ b/gfio.c @@ -89,9 +89,6 @@ struct gfio_graphs { #define DRAWING_AREA_XDIM 1000 #define DRAWING_AREA_YDIM 400 GtkWidget *drawing_area; - int drawing_area_xdim; - int drawing_area_ydim; - struct graph *iops_graph; struct graph *bandwidth_graph; }; @@ -174,6 +171,21 @@ static void gfio_update_thread_status(struct gui_entry *ge, char *status_message static void gfio_update_thread_status_all(char *status_message, double perc); void report_error(GError *error); +static void iops_graph_y_axis_unit_change(struct graph *g, int power_of_ten) +{ + switch (power_of_ten) { + case 9: graph_y_title(g, "Billions of IOs / sec"); + break; + case 6: graph_y_title(g, "Millions of IOs / sec"); + break; + case 3: graph_y_title(g, "Thousands of IOs / sec"); + break; + case 0: + default: graph_y_title(g, "IOs / sec"); + break; + } +} + static struct graph *setup_iops_graph(void) { struct graph *g; @@ -187,9 +199,25 @@ static struct graph *setup_iops_graph(void) graph_set_color(g, "Read IOPS", 0.13, 0.54, 0.13); graph_set_color(g, "Write IOPS", 1.0, 0.0, 0.0); line_graph_set_data_count_limit(g, gfio_graph_limit); + graph_y_axis_unit_change_notify(g, iops_graph_y_axis_unit_change); return g; } +static void bandwidth_graph_y_axis_unit_change(struct graph *g, int power_of_ten) +{ + switch (power_of_ten) { + case 9: graph_y_title(g, "Petabytes / sec"); + break; + case 6: graph_y_title(g, "Gigabytes / sec"); + break; + case 3: graph_y_title(g, "Megabytes / sec"); + break; + case 0: + default: graph_y_title(g, "Kilobytes / sec"); + break; + } +} + static struct graph *setup_bandwidth_graph(void) { struct graph *g; @@ -203,6 +231,7 @@ static struct graph *setup_bandwidth_graph(void) graph_set_color(g, "Read Bandwidth", 0.13, 0.54, 0.13); graph_set_color(g, "Write Bandwidth", 1.0, 0.0, 0.0); line_graph_set_data_count_limit(g, 100); + graph_y_axis_unit_change_notify(g, bandwidth_graph_y_axis_unit_change); return g; } @@ -1098,35 +1127,28 @@ static gint on_config_drawing_area(GtkWidget *w, GdkEventConfigure *event, { struct gfio_graphs *g = data; - g->drawing_area_xdim = w->allocation.width; - g->drawing_area_ydim = w->allocation.height; + graph_set_size(g->iops_graph, w->allocation.width / 2.0, w->allocation.height); + graph_set_position(g->iops_graph, w->allocation.width / 2.0, 0.0); + graph_set_size(g->bandwidth_graph, w->allocation.width / 2.0, w->allocation.height); + graph_set_position(g->bandwidth_graph, 0, 0); return TRUE; } +static void draw_graph(struct graph *g, cairo_t *cr) +{ + line_graph_draw(g, cr); + cairo_stroke(cr); +} + static int on_expose_drawing_area(GtkWidget *w, GdkEvent *event, gpointer p) { struct gfio_graphs *g = p; cairo_t *cr; - graph_set_size(g->iops_graph, g->drawing_area_xdim / 2.0, - g->drawing_area_ydim); - graph_set_size(g->bandwidth_graph, g->drawing_area_xdim / 2.0, - g->drawing_area_ydim); cr = gdk_cairo_create(w->window); - cairo_set_source_rgb(cr, 0, 0, 0); - - cairo_save(cr); - cairo_translate(cr, 0, 0); - line_graph_draw(g->bandwidth_graph, cr); - cairo_stroke(cr); - cairo_restore(cr); - - cairo_save(cr); - cairo_translate(cr, g->drawing_area_xdim / 2.0, 0); - line_graph_draw(g->iops_graph, cr); - cairo_stroke(cr); - cairo_restore(cr); + draw_graph(g->iops_graph, cr); + draw_graph(g->bandwidth_graph, cr); cairo_destroy(cr); return FALSE; @@ -2292,10 +2314,8 @@ static GtkWidget *new_client_page(struct gui_entry *ge) */ gdk_color_parse("white", &white); ge->graphs.drawing_area = gtk_drawing_area_new(); - ge->graphs.drawing_area_xdim = DRAWING_AREA_XDIM; - ge->graphs.drawing_area_ydim = DRAWING_AREA_YDIM; gtk_widget_set_size_request(GTK_WIDGET(ge->graphs.drawing_area), - ge->graphs.drawing_area_xdim, ge->graphs.drawing_area_ydim); + DRAWING_AREA_XDIM, DRAWING_AREA_YDIM); gtk_widget_modify_bg(ge->graphs.drawing_area, GTK_STATE_NORMAL, &white); g_signal_connect(G_OBJECT(ge->graphs.drawing_area), "expose_event", G_CALLBACK(on_expose_drawing_area), &ge->graphs); @@ -2383,10 +2403,8 @@ static GtkWidget *new_main_page(struct gui *ui) */ gdk_color_parse("white", &white); ui->graphs.drawing_area = gtk_drawing_area_new(); - ui->graphs.drawing_area_xdim = DRAWING_AREA_XDIM; - ui->graphs.drawing_area_ydim = DRAWING_AREA_YDIM; gtk_widget_set_size_request(GTK_WIDGET(ui->graphs.drawing_area), - ui->graphs.drawing_area_xdim, ui->graphs.drawing_area_ydim); + DRAWING_AREA_XDIM, DRAWING_AREA_YDIM); gtk_widget_modify_bg(ui->graphs.drawing_area, GTK_STATE_NORMAL, &white); g_signal_connect(G_OBJECT(ui->graphs.drawing_area), "expose_event", G_CALLBACK(on_expose_drawing_area), &ui->graphs);