entry = new_info_entry_in_frame(box, "Minor faults");
entry_set_int_value(entry, ts->minf);
}
-
-static void gfio_show_io_depths(GtkWidget *vbox, struct thread_stat *ts)
+static void gfio_add_sc_depths_tree(GtkListStore *model,
+ struct thread_stat *ts, unsigned int len,
+ int submit)
{
double io_u_dist[FIO_IO_U_MAP_NR];
- double io_u_dist_s[FIO_IO_U_MAP_NR];
- double io_u_dist_c[FIO_IO_U_MAP_NR];
- GtkWidget *frame, *box, *tree_view;
- GtkTreeSelection *selection;
- GtkListStore *model;
GtkTreeIter iter;
- GType types[FIO_IO_U_MAP_NR + 1];
- int i;
- const char *labels[] = { "Type", "0", "4", "8", "16", "32", "64", ">= 64" };
+ /* Bits 0, and 3-8 */
+ const int add_mask = 0x1f9;
+ int i, j;
- stat_calc_dist(ts->io_u_map, ts_total_io_u(ts), io_u_dist);
- stat_calc_dist(ts->io_u_submit, ts->total_submit, io_u_dist_s);
- stat_calc_dist(ts->io_u_complete, ts->total_complete, io_u_dist_c);
+ if (submit)
+ stat_calc_dist(ts->io_u_submit, ts->total_submit, io_u_dist);
+ else
+ stat_calc_dist(ts->io_u_complete, ts->total_complete, io_u_dist);
- frame = gtk_frame_new("IO depths");
- gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);
+ gtk_list_store_append(model, &iter);
- box = gtk_hbox_new(FALSE, 3);
- gtk_container_add(GTK_CONTAINER(frame), box);
+ gtk_list_store_set(model, &iter, 0, submit ? "Submit" : "Complete", -1);
- for (i = 0; i < FIO_IO_U_MAP_NR + 1; i++)
- types[i] = G_TYPE_STRING;
+ for (i = 1, j = 0; i < len; i++) {
+ char fbuf[32];
- model = gtk_list_store_newv(FIO_IO_U_MAP_NR + 1, types);
+ if (!(add_mask & (1UL << (i - 1))))
+ sprintf(fbuf, "0.0%%");
+ else {
+ sprintf(fbuf, "%3.1f%%", io_u_dist[j]);
+ j++;
+ }
- tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
- gtk_widget_set_can_focus(tree_view, FALSE);
+ gtk_list_store_set(model, &iter, i, fbuf, -1);
+ }
- selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
- gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_BROWSE);
+}
- for (i = 0; i < FIO_IO_U_MAP_NR + 1; i++)
- tree_view_column(tree_view, i, labels[i], ALIGN_RIGHT | UNSORTABLE);
+static void gfio_add_total_depths_tree(GtkListStore *model,
+ struct thread_stat *ts, unsigned int len)
+{
+ double io_u_dist[FIO_IO_U_MAP_NR];
+ GtkTreeIter iter;
+ /* Bits 1-6, and 8 */
+ const int add_mask = 0x17e;
+ int i, j;
+
+ stat_calc_dist(ts->io_u_map, ts_total_io_u(ts), io_u_dist);
gtk_list_store_append(model, &iter);
- for (i = 0; i < FIO_IO_U_MAP_NR + 1; i++) {
+ gtk_list_store_set(model, &iter, 0, "Total", -1);
+
+ for (i = 1, j = 0; i < len; i++) {
char fbuf[32];
- if (i == 0) {
- gtk_list_store_set(model, &iter, i, "Total", -1);
- continue;
+ if (!(add_mask & (1UL << (i - 1))))
+ sprintf(fbuf, "0.0%%");
+ else {
+ sprintf(fbuf, "%3.1f%%", io_u_dist[j]);
+ j++;
}
- sprintf(fbuf, "%3.1f%%", io_u_dist[i - 1]);
gtk_list_store_set(model, &iter, i, fbuf, -1);
}
- gtk_list_store_append(model, &iter);
+}
- for (i = 0; i < FIO_IO_U_MAP_NR + 1; i++) {
- char fbuf[32];
+static void gfio_show_io_depths(GtkWidget *vbox, struct thread_stat *ts)
+{
+ GtkWidget *frame, *box, *tree_view;
+ GtkTreeSelection *selection;
+ GtkListStore *model;
+ GType types[FIO_IO_U_MAP_NR + 1];
+ int i;
+#define NR_LABELS 10
+ const char *labels[NR_LABELS] = { "Depth", "0", "1", "2", "4", "8", "16", "32", "64", ">= 64" };
- if (i == 0) {
- gtk_list_store_set(model, &iter, i, "Submit", -1);
- continue;
- }
+ frame = gtk_frame_new("IO depths");
+ gtk_box_pack_start(GTK_BOX(vbox), frame, FALSE, FALSE, 5);
- sprintf(fbuf, "%3.1f%%", io_u_dist_s[i - 1]);
- gtk_list_store_set(model, &iter, i, fbuf, -1);
- }
+ box = gtk_hbox_new(FALSE, 3);
+ gtk_container_add(GTK_CONTAINER(frame), box);
- gtk_list_store_append(model, &iter);
+ for (i = 0; i < NR_LABELS; i++)
+ types[i] = G_TYPE_STRING;
- for (i = 0; i < FIO_IO_U_MAP_NR + 1; i++) {
- char fbuf[32];
+ model = gtk_list_store_newv(NR_LABELS, types);
- if (i == 0) {
- gtk_list_store_set(model, &iter, i, "Complete", -1);
- continue;
- }
+ tree_view = gtk_tree_view_new_with_model(GTK_TREE_MODEL(model));
+ gtk_widget_set_can_focus(tree_view, FALSE);
- sprintf(fbuf, "%3.1f%%", io_u_dist_c[i - 1]);
- gtk_list_store_set(model, &iter, i, fbuf, -1);
- }
+ selection = gtk_tree_view_get_selection(GTK_TREE_VIEW(tree_view));
+ gtk_tree_selection_set_mode(GTK_TREE_SELECTION(selection), GTK_SELECTION_BROWSE);
+
+ for (i = 0; i < NR_LABELS; i++)
+ tree_view_column(tree_view, i, labels[i], ALIGN_RIGHT | UNSORTABLE);
+
+ gfio_add_total_depths_tree(model, ts, NR_LABELS);
+ gfio_add_sc_depths_tree(model, ts, NR_LABELS, 1);
+ gfio_add_sc_depths_tree(model, ts, NR_LABELS, 0);
gtk_box_pack_start(GTK_BOX(box), tree_view, TRUE, FALSE, 3);
}