Commit 313f364a authored by Krzysztof Karas's avatar Krzysztof Karas Committed by Tomasz Zawadzki
Browse files

spdk_top: fill cores pop-up window with data.



Populates previously implemented core details window with data.

Signed-off-by: default avatarKrzysztof Karas <krzysztof.karas@intel.com>
Change-Id: If1a44a1990b1bc7190254a711c13a6e45a4770ab
Reviewed-on: https://review.spdk.io/gerrit/c/spdk/spdk/+/5412


Reviewed-by: default avatarTomasz Zawadzki <tomasz.zawadzki@intel.com>
Reviewed-by: default avatarMaciej Szwed <maciej.szwed@intel.com>
Reviewed-by: default avatarJim Harris <james.r.harris@intel.com>
Tested-by: default avatarSPDK CI Jenkins <sys_sgci@intel.com>
parent b05d03d8
Loading
Loading
Loading
Loading
+40 −5
Original line number Diff line number Diff line
@@ -91,9 +91,9 @@
#define THREAD_WIN_HEIGHT 9
#define THREAD_WIN_HOR_POS 75
#define THREAD_WIN_FIRST_COL 2
#define CORE_WIN_FIRST_COL 7
#define CORE_WIN_WIDTH 60
#define CORE_WIN_HEIGHT 6
#define CORE_WIN_FIRST_COL 16
#define CORE_WIN_WIDTH 46
#define CORE_WIN_HEIGHT 9
#define CORE_WIN_HOR_POS 60
#define POLLER_WIN_HEIGHT 6
#define POLLER_WIN_WIDTH 60
@@ -1277,6 +1277,15 @@ get_core_last_stats(uint32_t core, uint64_t *idle, uint64_t *busy)
	*busy = g_cores_history[core].last_busy;
}

static void
store_core_stats(uint32_t core, uint64_t threads, uint64_t pollers, uint64_t idle, uint64_t busy)
{
	g_cores_history[core].threads_count = threads;
	g_cores_history[core].pollers_count = pollers;
	g_cores_history[core].idle = idle;
	g_cores_history[core].busy = busy;
}

static uint8_t
refresh_cores_tab(uint8_t current_page)
{
@@ -1368,6 +1377,8 @@ refresh_cores_tab(uint8_t current_page)
		}

		store_core_last_stats(cores[core_num].core, cores[core_num].idle, cores[core_num].busy);
		store_core_stats(cores[core_num].core, cores[core_num].threads_count, cores[core_num].pollers_count,
				 cores[core_num].idle - cores[core_num].last_idle, cores[core_num].busy - cores[core_num].last_busy);

		if (item_index == g_selected_row) {
			wattroff(g_tabs[CORES_TAB], COLOR_PAIR(2));
@@ -1962,13 +1973,19 @@ show_core(uint8_t current_page)
	PANEL *core_panel;
	WINDOW *core_win;
	uint64_t core_number = current_page * g_max_data_rows + g_selected_row;
	uint64_t threads_count;
	struct rpc_core_info *core_info[g_cores_stats.cores.cores_count];
	uint64_t threads_count, i, j;
	int c;
	char core_win_title[25];
	bool stop_loop = false;
	char idle_time[MAX_TIME_STR_LEN], busy_time[MAX_TIME_STR_LEN];

	get_data();

	for (i = 0; i < g_cores_stats.cores.cores_count; i++) {
		core_info[i] = &g_cores_stats.cores.core[i];
	}

	threads_count = g_cores_stats.cores.core->threads.threads_count;
	core_win = newwin(threads_count + CORE_WIN_HEIGHT, CORE_WIN_WIDTH,
			  (g_max_row - threads_count) / 2, (g_max_col - CORE_WIN_HOR_POS) / 2);
@@ -1987,8 +2004,26 @@ show_core(uint8_t current_page)
	mvwaddch(core_win, -1, 0, ACS_LTEE);
	mvwhline(core_win, 2, 1, ACS_HLINE, CORE_WIN_WIDTH - 2);
	mvwaddch(core_win, 2, CORE_WIN_WIDTH, ACS_RTEE);
	mvwprintw(core_win, 3, 1, "Thread count      Poller count     Idle time     Busy time");
	print_left(core_win, 3, 1, CORE_WIN_WIDTH, "Thread count:          Idle time:", COLOR_PAIR(5));

	mvwprintw(core_win, 3, CORE_WIN_FIRST_COL, "%" PRIu64,
		  g_cores_history[core_number].threads_count);
	get_time_str(g_cores_history[core_number].idle, idle_time);
	mvwprintw(core_win, 3, CORE_WIN_FIRST_COL + 20, idle_time);

	print_left(core_win, 5, 1, CORE_WIN_WIDTH, "Poller count:          Busy time:", COLOR_PAIR(5));
	mvwprintw(core_win, 5, CORE_WIN_FIRST_COL, "%" PRIu64,
		  g_cores_history[core_number].pollers_count);
	get_time_str(g_cores_history[core_number].busy, busy_time);
	mvwprintw(core_win, 5, CORE_WIN_FIRST_COL + 20, busy_time);

	mvwhline(core_win, 4, 1, ACS_HLINE, CORE_WIN_WIDTH - 2);
	mvwhline(core_win, 6, 1, ACS_HLINE, CORE_WIN_WIDTH - 2);
	print_left(core_win, 7, 1, CORE_WIN_WIDTH, "Threads on this core", COLOR_PAIR(5));

	for (j = 0; j < core_info[core_number]->threads.threads_count; j++) {
		mvwprintw(core_win, j + 8, 1, core_info[core_number]->threads.thread[j].name);
	}

	refresh();
	wrefresh(core_win);