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);
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);
while (!flist_empty(&gc->o_list)) {
struct gfio_client_options *gco;
- gco = flist_entry(gc->o_list.next, struct gfio_client_options, list);
+ gco = flist_first_entry(&gc->o_list, struct gfio_client_options, list);
flist_del(&gco->list);
free(gco);
}
- ret = fio_client_send_ini(gc->client, ge->job_file);
+ ret = fio_client_send_ini(gc->client, ge->job_file, false);
if (!ret)
return 0;
static void *server_thread(void *arg)
{
+ fio_server_create_sk_key();
is_backend = 1;
gfio_server_running = 1;
fio_start_server(NULL);
gfio_server_running = 0;
+ fio_server_destroy_sk_key();
return NULL;
}
gc->o_list_nr++;
}
+static void gfio_clear_graph_data(struct gfio_graphs *g)
+{
+ graph_clear_values(g->iops_graph);
+ graph_clear_values(g->bandwidth_graph);
+}
+
static void connect_clicked(GtkWidget *widget, gpointer data)
{
struct gui_entry *ge = data;
if (!ge->ui->handler_running)
pthread_create(&ge->ui->t, NULL, job_thread, ge->ui);
gfio_set_state(ge, GE_STATE_CONNECTED);
+ gfio_clear_graph_data(&ge->graphs);
} else {
gfio_report_error(ge, "Failed to connect to %s: %s\n", ge->client->client->hostname, strerror(-ret));
}
{
const char *authors[] = {
"Jens Axboe <axboe@kernel.dk>",
- "Stephen Carmeron <stephenmcameron@gmail.com>",
+ "Stephen Cameron <stephenmcameron@gmail.com>",
NULL
};
const char *license[] = {
"program-name", "gfio",
"comments", "Gtk2 UI for fio",
"license", license_trans,
- "website", "http://git.kernel.dk/?p=fio.git;a=summary",
+ "website", "http://git.kernel.dk/cgit/fio/",
"authors", authors,
"version", fio_version_string,
"copyright", "© 2012 Jens Axboe <axboe@kernel.dk>",
{ "Quit", GTK_STOCK_QUIT, NULL, "<Control>Q", NULL, G_CALLBACK(quit_clicked) },
{ "About", GTK_STOCK_ABOUT, NULL, NULL, NULL, G_CALLBACK(about_dialog) },
};
-static gint nmenu_items = sizeof(menu_items) / sizeof(menu_items[0]);
+static gint nmenu_items = ARRAY_SIZE(menu_items);
static const gchar *ui_string = " \
<ui> \
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);
- 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);
g_signal_connect(ge->eta.names, "changed", G_CALLBACK(combo_entry_changed), ge);
g_signal_connect(ge->eta.names, "destroy", G_CALLBACK(combo_entry_destroy), ge);
ge->eta.iotype.entry = new_info_entry_in_frame(probe_box, "IO");
- ge->eta.bs.entry = new_info_entry_in_frame(probe_box, "Blocksize (Read/Write)");
+ ge->eta.bs.entry = new_info_entry_in_frame(probe_box, "Blocksize (Read/Write/Trim)");
ge->eta.ioengine.entry = new_info_entry_in_frame(probe_box, "IO Engine");
ge->eta.iodepth.entry = new_info_entry_in_frame(probe_box, "IO Depth");
ge->eta.jobs = new_info_entry_in_frame(probe_box, "Jobs");
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, "Read 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, "Write 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, "Trim IOPS", GFIO_TRIM_R, GFIO_TRIM_G, GFIO_TRIM_B);
/*
* Only add this if we have a commit rate
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
* Without it, the update that happens in gfio_update_thread_status
* doesn't really happen in a timely fashion, you need expose events
*/
+#if !GLIB_CHECK_VERSION(2, 31, 0)
if (!g_thread_supported())
g_thread_init(NULL);
+#endif
+
gdk_threads_init();
gtk_init(argc, argv);
settings = gtk_settings_get_default();
gtk_settings_set_long_property(settings, "gtk_tooltip_timeout", 10, "gfio setting");
+#if !GLIB_CHECK_VERSION(2, 36, 0)
g_type_init();
- gdk_color_parse("#ffffee", &gfio_color_lightyellow);
+#endif
+ gdk_color_parse("#fffff4", &gfio_color_lightyellow);
gdk_color_parse("white", &gfio_color_white);
ui->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);