diff options
author | Gerd Hoffmann <kraxel@redhat.com> | 2012-09-14 13:59:54 +0200 |
---|---|---|
committer | Gerd Hoffmann <kraxel@redhat.com> | 2012-09-14 13:59:54 +0200 |
commit | dd5b27b164ffd16756218795b4f6c1892ad795d2 (patch) | |
tree | 2f06af87f49bf3f382055a97f137a1d229b2f5bf | |
parent | 72a7b882581d685b84d3cde0704029af710fc15e (diff) | |
download | vconsole-dd5b27b164ffd16756218795b4f6c1892ad795d2.tar.gz |
visualize cpu load
-rw-r--r-- | domain.c | 19 | ||||
-rw-r--r-- | vconsole.c | 34 | ||||
-rw-r--r-- | vconsole.h | 7 |
3 files changed, 42 insertions, 18 deletions
@@ -280,18 +280,12 @@ static void domain_connect(struct vconsole_domain *dom, virDomainPtr d) static void domain_update_info(struct vconsole_domain *dom, virDomainPtr d) { - int id; - dom->last_info = dom->info; dom->last_ts = dom->ts; gettimeofday(&dom->ts, NULL); dom->name = virDomainGetName(d); - id = virDomainGetID(d); - if (id < 0) - strcpy(dom->idstr, "-"); - else - snprintf(dom->idstr, sizeof(dom->idstr), "%d", id); + dom->id = virDomainGetID(d); virDomainGetInfo(d, &dom->info); dom->saved = virDomainHasManagedSaveImage(d, 0); @@ -317,19 +311,22 @@ static void domain_update_tree_store(struct vconsole_domain *dom, case VIR_DOMAIN_RUNNING: foreground = "darkgreen"; weight = PANGO_WEIGHT_BOLD; - snprintf(load, sizeof(load), "%d%%", dom->load); break; default: foreground = "black"; weight = PANGO_WEIGHT_NORMAL; - strcpy(load, ""); break; } + snprintf(load, sizeof(load), "%d%%", dom->load); + gtk_tree_store_set(dom->conn->win->store, guest, NAME_COL, dom->name, - ID_COL, dom->idstr, + ID_COL, dom->id, + RUNNING_COL, dom->info.state == VIR_DOMAIN_RUNNING, STATE_COL, domain_state_name(dom), - LOAD_COL, load, + NR_CPUS_COL, dom->info.nrVirtCpu, + LOAD_STR_COL, load, + LOAD_INT_COL, MIN(dom->load / dom->info.nrVirtCpu, 100), FOREGROUND_COL, foreground, WEIGHT_COL, weight, -1); @@ -765,9 +765,12 @@ static void vconsole_tab_list_create(struct vconsole_window *win) G_TYPE_POINTER, // CPTR_COL G_TYPE_STRING, // URI_COL G_TYPE_POINTER, // DPTR_COL - G_TYPE_STRING, // ID_COL + G_TYPE_INT, // ID_COL + G_TYPE_BOOLEAN, // RUNNING_COL G_TYPE_STRING, // STATE_COL - G_TYPE_STRING, // LOAD_COL + G_TYPE_INT, // NR_CPUS_COL + G_TYPE_STRING, // LOAD_STR_COL + G_TYPE_INT, // LOAD_INT_COL G_TYPE_STRING, // FOREGROUND_COL G_TYPE_INT); // WEIGHT_COL sortable = GTK_TREE_SORTABLE(win->store); @@ -793,9 +796,11 @@ static void vconsole_tab_list_create(struct vconsole_window *win) /* id */ renderer = gtk_cell_renderer_text_new(); + g_object_set(renderer, "xalign", 0.5, NULL); column = gtk_tree_view_column_new_with_attributes("ID", renderer, "text", ID_COL, + "visible", RUNNING_COL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(win->tree), column); @@ -807,14 +812,33 @@ static void vconsole_tab_list_create(struct vconsole_window *win) NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(win->tree), column); - /* cpu load */ + /* cpu count */ renderer = gtk_cell_renderer_text_new(); - column = gtk_tree_view_column_new_with_attributes("CPU", + g_object_set(renderer, "xalign", 0.5, NULL); + column = gtk_tree_view_column_new_with_attributes("vcpus", renderer, - "text", LOAD_COL, + "text", NR_CPUS_COL, + "visible", RUNNING_COL, NULL); gtk_tree_view_append_column(GTK_TREE_VIEW(win->tree), column); + /* cpu load */ + renderer = gtk_cell_renderer_progress_new(); + g_object_set(renderer, "width", 100, NULL); + column = gtk_tree_view_column_new_with_attributes("Load", + renderer, + "text", LOAD_STR_COL, + "value", LOAD_INT_COL, + "visible", RUNNING_COL, + NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(win->tree), column); + + /* padding */ + renderer = gtk_cell_renderer_text_new(); + g_object_set(renderer, "visible", FALSE, NULL); + column = gtk_tree_view_column_new_with_attributes("", renderer, NULL); + gtk_tree_view_append_column(GTK_TREE_VIEW(win->tree), column); + /* sort store */ gtk_tree_sortable_set_sort_column_id(sortable, NAME_COL, GTK_SORT_ASCENDING); @@ -28,8 +28,11 @@ enum vconsole_cols { /* guests only */ DPTR_COL, // vconsole_domain ID_COL, + RUNNING_COL, STATE_COL, - LOAD_COL, + NR_CPUS_COL, + LOAD_STR_COL, + LOAD_INT_COL, /* beautify */ FOREGROUND_COL, @@ -81,7 +84,7 @@ struct vconsole_connect *connect_init(struct vconsole_window *win, struct vconsole_domain { struct vconsole_connect *conn; char uuid[VIR_UUID_STRING_BUFLEN]; - char idstr[16]; + int id; const char *name; GtkWidget *vbox, *vte, *status; |