From nobody Wed Nov 5 14:27:33 2025 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org; dmarc=fail(p=none dis=none) header.from=redhat.com Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1534872251211297.5817874242073; Tue, 21 Aug 2018 10:24:11 -0700 (PDT) Received: from localhost ([::1]:55046 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fsANx-00053X-RJ for importer@patchew.org; Tue, 21 Aug 2018 13:24:05 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:33195) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1fsA4P-0001jX-2I for qemu-devel@nongnu.org; Tue, 21 Aug 2018 13:03:54 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1fsA4E-0006NS-PG for qemu-devel@nongnu.org; Tue, 21 Aug 2018 13:03:46 -0400 Received: from mail-wr1-x442.google.com ([2a00:1450:4864:20::442]:45267) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1fsA47-0005uV-S4 for qemu-devel@nongnu.org; Tue, 21 Aug 2018 13:03:37 -0400 Received: by mail-wr1-x442.google.com with SMTP id 20-v6so10506583wrb.12 for ; Tue, 21 Aug 2018 10:03:25 -0700 (PDT) Received: from 640k.lan (dynamic-adsl-78-12-184-244.clienti.tiscali.it. [78.12.184.244]) by smtp.gmail.com with ESMTPSA id v6-v6sm2608955wmc.43.2018.08.21.10.03.23 (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Tue, 21 Aug 2018 10:03:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=sender:from:to:cc:subject:date:message-id:in-reply-to:references; bh=ZFAkLSAeNumaaH5nOgvVyBsq4ocBKO5IfEbwaiKNGJ4=; b=p4ZUtQD87TtSUy/8oePvTNey28htYSShAQrmIvDVIGZOmJjOZhtmWURmn8XjCcxGQq cTNZsw4RkHYJaJ+qeOqazHvCbe4YDg2ur5Ye4sS8inv0J3ENto7Fy1xOCNzXSjYfiOjm BDibno1QPmbPe/NSi/RrTCXo0C9dc7xz0dNNez1I+Zu59n1lsjl+BDIEXkJglPNdBdxi jCBRkIPBBd6uo+XFwRmwDKS1PhUajwQZO/9oszyXK3jEmbKgZmEkLpwLp1NOCOKNU7U+ sf2bJERZ+0sxNpGwst6YhhaU7qXuq0T5SOBfIl9LZJMDCuc/KAEyGKkkM39lifHdzhw3 cc8Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:sender:from:to:cc:subject:date:message-id :in-reply-to:references; bh=ZFAkLSAeNumaaH5nOgvVyBsq4ocBKO5IfEbwaiKNGJ4=; b=XVkiruSnbnKqykQqBk4yfdhtzA3ZPBpLzVbJtro+Dzmzi++Zhy3rk4a0v4BaMBnMBb CJ5/ggvcRXpFpxM467KvEbrvLbqJXphq8wVW1cvYiq/kI1QJiN/GYh4HsWCrA2LIG1tZ RVZPcxZUjg5fJ+JsyBwx4hwLqjnGsJy5oJiLfgDDokVmujbP0LNCZfNfX6knu26UPt6U kRDD412caf96x67p9IsgQCovq8iUVkUpSkNmgJFxK1XMQrIxzx3zkkjSmVSl0P0j1Xm4 cOblU43SeBWr59/Yz5wVD0R1qRUntKCoNrRveBei7WaN/yRHAx7UaUkPm/N3xZGW8IXW LdPA== X-Gm-Message-State: AOUpUlGSkvUKHclyK9iUPSM5SKXbr0aT5fCIgq9UUOXwenxVms8DP2YX 3ZWLxz38+9c5yLEQRtpm9OvfA5Yz X-Google-Smtp-Source: AA+uWPzUjjH3sQVljuklU0ZPS5roh1u3nhBQG6J7nGUbFCLUMxcXqD0PBKGxFdKbablrwtEoP6neFw== X-Received: by 2002:adf:81a3:: with SMTP id 32-v6mr34285608wra.9.1534871004008; Tue, 21 Aug 2018 10:03:24 -0700 (PDT) From: Paolo Bonzini To: qemu-devel@nongnu.org Date: Tue, 21 Aug 2018 19:01:51 +0200 Message-Id: <1534870966-9287-20-git-send-email-pbonzini@redhat.com> X-Mailer: git-send-email 1.8.3.1 In-Reply-To: <1534870966-9287-1-git-send-email-pbonzini@redhat.com> References: <1534870966-9287-1-git-send-email-pbonzini@redhat.com> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::442 Subject: [Qemu-devel] [PULL 19/74] qsp: add sort_by option to qsp_report X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: "Emilio G. Cota" Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) X-ZohoMail: RDMRC_1 RDKM_2 RSF_0 Z_629925259 SPT_0 Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" From: "Emilio G. Cota" Signed-off-by: Emilio G. Cota Signed-off-by: Paolo Bonzini --- 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 @@ =20 #include "qemu/fprintf-fn.h" =20 -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); =20 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, gconstpoin= ter bp, gpointer up) { const QSPEntry *a =3D ap; const QSPEntry *b =3D bp; + enum QSPSortBy sort_by =3D *(enum QSPSortBy *)up; const QSPCallSite *ca; const QSPCallSite *cb; =20 - 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 =3D a->n_acqs ? a->ns / a->n_acqs : 0; + double avg_b =3D 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 =3D a->callsite; cb =3D b->callsite; /* Break the tie with the object's address */ @@ -613,9 +633,10 @@ static void report_destroy(QSPReport *rep) g_free(rep->entries); } =20 -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 =3D g_tree_new_full(qsp_tree_cmp, NULL, g_free, NULL); + GTree *tree =3D g_tree_new_full(qsp_tree_cmp, &sort_by, g_free, NULL); QSPReport rep; =20 qsp_init(); --=20 1.8.3.1