[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL 19/74] qsp: add sort_by option to qsp_report
From: |
Paolo Bonzini |
Subject: |
[Qemu-devel] [PULL 19/74] qsp: add sort_by option to qsp_report |
Date: |
Tue, 21 Aug 2018 19:01:51 +0200 |
From: "Emilio G. Cota" <address@hidden>
Signed-off-by: Emilio G. Cota <address@hidden>
Signed-off-by: Paolo Bonzini <address@hidden>
---
include/qemu/qsp.h | 8 +++++++-
util/qsp.c | 33 +++++++++++++++++++++++++++------
2 files changed, 34 insertions(+), 7 deletions(-)
diff --git a/include/qemu/qsp.h b/include/qemu/qsp.h
index 9c2bb60..209480b 100644
--- a/include/qemu/qsp.h
+++ b/include/qemu/qsp.h
@@ -13,7 +13,13 @@
#include "qemu/fprintf-fn.h"
-void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max);
+enum QSPSortBy {
+ QSP_SORT_BY_TOTAL_WAIT_TIME,
+ QSP_SORT_BY_AVG_WAIT_TIME,
+};
+
+void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max,
+ enum QSPSortBy sort_by);
bool qsp_is_enabled(void);
void qsp_enable(void);
diff --git a/util/qsp.c b/util/qsp.c
index c5fce4b..80dbd4c 100644
--- a/util/qsp.c
+++ b/util/qsp.c
@@ -429,14 +429,34 @@ static gint qsp_tree_cmp(gconstpointer ap, gconstpointer
bp, gpointer up)
{
const QSPEntry *a = ap;
const QSPEntry *b = bp;
+ enum QSPSortBy sort_by = *(enum QSPSortBy *)up;
const QSPCallSite *ca;
const QSPCallSite *cb;
- if (a->ns > b->ns) {
- return -1;
- } else if (a->ns < b->ns) {
- return 1;
+ switch (sort_by) {
+ case QSP_SORT_BY_TOTAL_WAIT_TIME:
+ if (a->ns > b->ns) {
+ return -1;
+ } else if (a->ns < b->ns) {
+ return 1;
+ }
+ break;
+ case QSP_SORT_BY_AVG_WAIT_TIME:
+ {
+ double avg_a = a->n_acqs ? a->ns / a->n_acqs : 0;
+ double avg_b = b->n_acqs ? b->ns / b->n_acqs : 0;
+
+ if (avg_a > avg_b) {
+ return -1;
+ } else if (avg_a < avg_b) {
+ return 1;
+ }
+ break;
}
+ default:
+ g_assert_not_reached();
+ }
+
ca = a->callsite;
cb = b->callsite;
/* Break the tie with the object's address */
@@ -613,9 +633,10 @@ static void report_destroy(QSPReport *rep)
g_free(rep->entries);
}
-void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max)
+void qsp_report(FILE *f, fprintf_function cpu_fprintf, size_t max,
+ enum QSPSortBy sort_by)
{
- GTree *tree = g_tree_new_full(qsp_tree_cmp, NULL, g_free, NULL);
+ GTree *tree = g_tree_new_full(qsp_tree_cmp, &sort_by, g_free, NULL);
QSPReport rep;
qsp_init();
--
1.8.3.1
- [Qemu-devel] [PULL 08/74] megasas: fix sglist leak, (continued)
- [Qemu-devel] [PULL 08/74] megasas: fix sglist leak, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 12/74] hw/timer/mc146818rtc: White space clean-up, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 07/74] chardev/char-fe: Fix typos, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 13/74] hw/timer/mc146818rtc: Fix introspection problem, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 15/74] tests/device-introspection: Check that the qom-tree and qtree do not change, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 14/74] tests: Skip old versioned machine types in quick testing mode, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 24/74] vl: add -enable-sync-profile, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 20/74] qsp: add qsp_reset, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 16/74] tests/device-introspect: Test with all machines, not only with "none", Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 22/74] qsp: track BQL callers explicitly, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 19/74] qsp: add sort_by option to qsp_report,
Paolo Bonzini <=
- [Qemu-devel] [PULL 31/74] lsi_scsi: add support for PPR Extended Message, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 27/74] checkpatch: allow space in more places before a bracket, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 36/74] rcu_queue: use atomic_set in QLIST_REMOVE_RCU, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 33/74] build-sys: remove glib_subprocess check, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 18/74] qsp: QEMU's Synchronization Profiler, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 48/74] qemu-guest-agent: freeze-hook to ignore dpkg files as well, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 21/74] qsp: support call site coalescing, Paolo Bonzini, 2018/08/21
- [Qemu-devel] [PULL 32/74] kvm: add call to qemu_add_opts() for -overcommit option, Paolo Bonzini, 2018/08/21