spdk_top: Add data window scaling.
Signed-off-by: Maciej Szwed <maciej.szwed@intel.com> Change-Id: Id108e187bbd15aac5f8d07d7774757b6cd3ee694 Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/1151 Community-CI: Mellanox Build Bot Tested-by: SPDK CI Jenkins <sys_sgci@intel.com> Reviewed-by: Shuhei Matsumoto <shuhei.matsumoto.xt@hitachi.com> Reviewed-by: Jim Harris <james.r.harris@intel.com> Reviewed-by: Ben Walker <benjamin.walker@intel.com>
This commit is contained in:
parent
18ffb47903
commit
8ab62ba6d0
@ -46,12 +46,7 @@
|
||||
#define RPC_MAX_THREADS 1024
|
||||
#define RPC_MAX_POLLERS 1024
|
||||
#define MAX_THREAD_NAME 128
|
||||
#define MAX_THREAD_NAME_DISP 30
|
||||
#define MAX_POLLER_NAME 128
|
||||
#define MAX_POLLER_NAME_DISP 33
|
||||
#define MAX_POLLER_TYPE_DISP 15
|
||||
#define MAX_POLLER_COUNT_STR 4
|
||||
#define MAX_POLLER_COUNT_DISP 25
|
||||
|
||||
#define MAX_STRING_LEN 12289 /* 3x 4k monitors + 1 */
|
||||
#define TAB_WIN_HEIGHT 3
|
||||
@ -60,11 +55,16 @@
|
||||
#define TABS_LOCATION_ROW 4
|
||||
#define TABS_LOCATION_COL 0
|
||||
#define TABS_DATA_START_ROW 3
|
||||
#define TABS_DATA_START_COL 3
|
||||
#define TABS_DATA_START_COL 2
|
||||
#define TABS_COL_COUNT 10
|
||||
#define MENU_WIN_HEIGHT 3
|
||||
#define MENU_WIN_SPACING 4
|
||||
#define MENU_WIN_LOCATION_COL 0
|
||||
#define MAX_THREAD_NAME_LEN 26
|
||||
#define MAX_POLLER_NAME_LEN 36
|
||||
#define MAX_POLLER_COUNT_STR_LEN 16
|
||||
#define MAX_POLLER_TYPE_STR_LEN 8
|
||||
#define MAX_CORE_MASK_STR_LEN 12
|
||||
|
||||
enum tabs {
|
||||
THREADS_TAB,
|
||||
@ -83,6 +83,7 @@ enum spdk_poller_type {
|
||||
struct col_desc {
|
||||
const char *name;
|
||||
uint8_t name_len;
|
||||
uint8_t max_data_string;
|
||||
bool disabled;
|
||||
};
|
||||
|
||||
@ -96,18 +97,18 @@ uint16_t g_data_win_size;
|
||||
uint32_t g_last_threads_count, g_last_pollers_count, g_last_cores_count;
|
||||
uint8_t g_current_sort_col[NUMBER_OF_TABS] = {0, 0, 0};
|
||||
static struct col_desc g_col_desc[NUMBER_OF_TABS][TABS_COL_COUNT] = {
|
||||
{ {.name = " Thread name "},
|
||||
{.name = " Active pollers "},
|
||||
{.name = " Timed pollers "},
|
||||
{.name = " Paused pollers "},
|
||||
{ {.name = "Thread name", .max_data_string = MAX_THREAD_NAME_LEN},
|
||||
{.name = "Active pollers", .max_data_string = MAX_POLLER_COUNT_STR_LEN},
|
||||
{.name = "Timed pollers", .max_data_string = MAX_POLLER_COUNT_STR_LEN},
|
||||
{.name = "Paused pollers", .max_data_string = MAX_POLLER_COUNT_STR_LEN},
|
||||
{.name = (char *)NULL}
|
||||
},
|
||||
{ {.name = " Poller name "},
|
||||
{.name = " Type "},
|
||||
{.name = " On thread "},
|
||||
{ {.name = "Poller name", .max_data_string = MAX_POLLER_NAME_LEN},
|
||||
{.name = "Type", .max_data_string = MAX_POLLER_TYPE_STR_LEN},
|
||||
{.name = "On thread", .max_data_string = MAX_THREAD_NAME_LEN},
|
||||
{.name = (char *)NULL}
|
||||
},
|
||||
{ {.name = " Core "},
|
||||
{ {.name = "Core", .max_data_string = MAX_CORE_MASK_STR_LEN},
|
||||
{.name = (char *)NULL}
|
||||
}
|
||||
};
|
||||
@ -478,7 +479,7 @@ draw_tabs(enum tabs tab_index, uint8_t sort_col)
|
||||
struct col_desc *col_desc = g_col_desc[tab_index];
|
||||
WINDOW *tab = g_tabs[tab_index];
|
||||
int i, j;
|
||||
uint16_t offset;
|
||||
uint16_t offset, draw_offset;
|
||||
|
||||
for (i = 0; col_desc[i].name != NULL; i++) {
|
||||
if (col_desc[i].disabled) {
|
||||
@ -487,19 +488,24 @@ draw_tabs(enum tabs tab_index, uint8_t sort_col)
|
||||
|
||||
offset = 1;
|
||||
for (j = i; j != 0; j--) {
|
||||
offset += col_desc[j - 1].name_len + 1;
|
||||
if (!col_desc[j - 1].disabled) {
|
||||
offset += col_desc[j - 1].max_data_string;
|
||||
offset += col_desc[j - 1].name_len % 2 + 1;
|
||||
}
|
||||
}
|
||||
|
||||
draw_offset = offset + (col_desc[i].max_data_string / 2) - (col_desc[i].name_len / 2);
|
||||
|
||||
if (i == sort_col) {
|
||||
wattron(tab, COLOR_PAIR(3));
|
||||
print_max_len(tab, 1, offset, 0, col_desc[i].name);
|
||||
print_max_len(tab, 1, draw_offset, 0, col_desc[i].name);
|
||||
wattroff(tab, COLOR_PAIR(3));
|
||||
} else {
|
||||
print_max_len(tab, 1, offset, 0, col_desc[i].name);
|
||||
print_max_len(tab, 1, draw_offset, 0, col_desc[i].name);
|
||||
}
|
||||
|
||||
if (col_desc[i + 1].name != NULL) {
|
||||
print_max_len(tab, 1, offset + col_desc[i].name_len, 0, "|");
|
||||
if (offset != 1) {
|
||||
print_max_len(tab, 1, offset - 1, 0, "|");
|
||||
}
|
||||
}
|
||||
|
||||
@ -591,7 +597,7 @@ refresh_threads_tab(void)
|
||||
uint64_t i, threads_count;
|
||||
uint16_t j;
|
||||
uint16_t col;
|
||||
char pollers_number[MAX_POLLER_COUNT_STR];
|
||||
char pollers_number[MAX_POLLER_COUNT_STR_LEN];
|
||||
struct rpc_thread_info *thread_info[g_threads_stats.threads.threads_count];
|
||||
|
||||
threads_count = g_threads_stats.threads.threads_count;
|
||||
@ -615,26 +621,29 @@ refresh_threads_tab(void)
|
||||
|
||||
for (i = 0; i < threads_count; i++) {
|
||||
col = TABS_DATA_START_COL;
|
||||
|
||||
if (!col_desc[0].disabled) {
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col, 0, thread_info[i]->name);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col, col_desc[0].max_data_string,
|
||||
thread_info[i]->name);
|
||||
col += col_desc[0].max_data_string + 2;
|
||||
}
|
||||
|
||||
col += MAX_THREAD_NAME_DISP;
|
||||
if (!col_desc[1].disabled) {
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR, "%ld", thread_info[i]->active_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col, 0, pollers_number);
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR_LEN, "%ld", thread_info[i]->active_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col + (col_desc[1].name_len / 2),
|
||||
col_desc[1].max_data_string, pollers_number);
|
||||
col += col_desc[1].max_data_string + 1;
|
||||
}
|
||||
|
||||
col += MAX_POLLER_COUNT_DISP;
|
||||
if (!col_desc[2].disabled) {
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR, "%ld", thread_info[i]->timed_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col, 0, pollers_number);
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR_LEN, "%ld", thread_info[i]->timed_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col + (col_desc[2].name_len / 2),
|
||||
col_desc[2].max_data_string, pollers_number);
|
||||
col += col_desc[2].max_data_string + 1;
|
||||
}
|
||||
|
||||
col += MAX_POLLER_COUNT_DISP;
|
||||
if (!col_desc[3].disabled) {
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR, "%ld", thread_info[i]->paused_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col, 0, pollers_number);
|
||||
snprintf(pollers_number, MAX_POLLER_COUNT_STR_LEN, "%ld", thread_info[i]->paused_pollers_count);
|
||||
print_max_len(g_tabs[THREADS_TAB], TABS_DATA_START_ROW + i, col + (col_desc[3].name_len / 2),
|
||||
col_desc[3].max_data_string, pollers_number);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -738,20 +747,20 @@ refresh_pollers_tab(void)
|
||||
col = TABS_DATA_START_COL;
|
||||
|
||||
if (!col_desc[0].disabled) {
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col, 0, pollers[i]->name);
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col + 1, col_desc[0].max_data_string,
|
||||
pollers[i]->name);
|
||||
col += col_desc[0].max_data_string + 2;
|
||||
}
|
||||
|
||||
col += MAX_POLLER_NAME_DISP;
|
||||
|
||||
if (!col_desc[1].disabled) {
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col, 0,
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col, col_desc[1].max_data_string,
|
||||
poller_type_str[pollers[i]->type]);
|
||||
col += col_desc[1].max_data_string + 2;
|
||||
}
|
||||
|
||||
col += MAX_POLLER_TYPE_DISP;
|
||||
|
||||
if (!col_desc[2].disabled) {
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col, 0, pollers[i]->thread_name);
|
||||
print_max_len(g_tabs[POLLERS_TAB], TABS_DATA_START_ROW + i, col, col_desc[2].max_data_string,
|
||||
pollers[i]->thread_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -831,7 +840,7 @@ draw_filtering_menu(uint8_t position, WINDOW *filter_win, uint8_t tab, MENU **my
|
||||
my_items[i] = new_item(col_desc[i / WINDOW_COLUMNS].disabled ? "[ ]" : "[*]", NULL);
|
||||
}
|
||||
|
||||
my_items[i] = new_item("CLOSE", NULL);
|
||||
my_items[i] = new_item(" CLOSE", NULL);
|
||||
set_item_userptr(my_items[i], apply_filters);
|
||||
|
||||
menu = new_menu((ITEM **)my_items);
|
||||
|
Loading…
Reference in New Issue
Block a user