#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;
};
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;
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;
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;
}
{
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;
GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,
NULL);
- frame = gtk_frame_new("Debug logging");
- gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, FALSE, FALSE, 5);
-
- vbox = gtk_vbox_new(FALSE, 6);
- gtk_container_add(GTK_CONTAINER(frame), vbox);
-
- box = gtk_hbox_new(FALSE, 6);
- gtk_container_add(GTK_CONTAINER(vbox), box);
-
- buttons = malloc(sizeof(GtkWidget *) * FD_DEBUG_MAX);
-
- for (i = 0; i < FD_DEBUG_MAX; i++) {
- if (i == 7) {
- box = gtk_hbox_new(FALSE, 6);
- gtk_container_add(GTK_CONTAINER(vbox), box);
- }
-
-
- buttons[i] = gtk_check_button_new_with_label(debug_levels[i].name);
- gtk_widget_set_tooltip_text(buttons[i], debug_levels[i].help);
- gtk_box_pack_start(GTK_BOX(box), buttons[i], FALSE, FALSE, 6);
- }
-
frame = gtk_frame_new("Graphing");
gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, FALSE, FALSE, 5);
vbox = gtk_vbox_new(FALSE, 6);
gtk_box_pack_start(GTK_BOX(hbox), entry, FALSE, FALSE, 5);
spin_int = create_spinbutton(hbox, 100, 100000, gfio_client_ops.eta_msec);
+ frame = gtk_frame_new("Debug logging");
+ gtk_box_pack_start(GTK_BOX(GTK_DIALOG(dialog)->vbox), frame, FALSE, FALSE, 5);
+ vbox = gtk_vbox_new(FALSE, 6);
+ gtk_container_add(GTK_CONTAINER(frame), vbox);
+
+ box = gtk_hbox_new(FALSE, 6);
+ gtk_container_add(GTK_CONTAINER(vbox), box);
+
+ buttons = malloc(sizeof(GtkWidget *) * FD_DEBUG_MAX);
+
+ for (i = 0; i < FD_DEBUG_MAX; i++) {
+ if (i == 7) {
+ box = gtk_hbox_new(FALSE, 6);
+ gtk_container_add(GTK_CONTAINER(vbox), box);
+ }
+
+
+ buttons[i] = gtk_check_button_new_with_label(debug_levels[i].name);
+ gtk_widget_set_tooltip_text(buttons[i], debug_levels[i].help);
+ gtk_box_pack_start(GTK_BOX(box), buttons[i], FALSE, FALSE, 6);
+ }
+
gtk_widget_show_all(dialog);
if (gtk_dialog_run(GTK_DIALOG(dialog)) != GTK_RESPONSE_ACCEPT) {
*/
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);
*/
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);