From nobody Fri Nov 7 12:58:04 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=linaro.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1538756013384208.23392168163605; Fri, 5 Oct 2018 09:13:33 -0700 (PDT) Received: from localhost ([::1]:35929 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g8SjM-0005hn-6f for importer@patchew.org; Fri, 05 Oct 2018 12:13:32 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:60114) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1g8SSH-0005zs-86 for qemu-devel@nongnu.org; Fri, 05 Oct 2018 11:55:55 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1g8SSE-0004fY-BW for qemu-devel@nongnu.org; Fri, 05 Oct 2018 11:55:53 -0400 Received: from mail-wr1-x435.google.com ([2a00:1450:4864:20::435]:34059) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1g8SSE-0004er-4c for qemu-devel@nongnu.org; Fri, 05 Oct 2018 11:55:50 -0400 Received: by mail-wr1-x435.google.com with SMTP id z4-v6so14074890wrb.1 for ; Fri, 05 Oct 2018 08:55:50 -0700 (PDT) Received: from zen.linaro.local ([81.128.185.34]) by smtp.gmail.com with ESMTPSA id i15-v6sm4943516wro.58.2018.10.05.08.55.45 (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Fri, 05 Oct 2018 08:55:46 -0700 (PDT) Received: from zen.linaroharston (localhost [127.0.0.1]) by zen.linaro.local (Postfix) with ESMTP id 55E5D3E0893; Fri, 5 Oct 2018 16:49:12 +0100 (BST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references :mime-version:content-transfer-encoding; bh=niBrZfxJaKwm3OTekaz9i84MMz3w9A8+1X4ToD1jQC0=; b=g1cDv6ywi8TZkmeFL4aIMJMCHyLOJgi0/zdkIID0Xoes/8HN1QiFaStiCVVuXVffUc NpafP7JFp5p7Ra6gYQmwj67JgZFdlfcqy49CEgRh72bhuBrHbgBMNAlR7hFgGzcyBph+ hB/SzcFX7b6pGune6TnqGMGYXQr2SIsl3mlNY= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:mime-version:content-transfer-encoding; bh=niBrZfxJaKwm3OTekaz9i84MMz3w9A8+1X4ToD1jQC0=; b=hqyPlZmt7f+h9aWZ06icgWSsYkkw4TDr+vA3f8JAGi1qRn3VkAyjhYYt9oSG2CZiGu wunnJ2S2L9XAubdL/2qbmGSSi9K02Ry7SsI4pBxb9w4/9Q8FZK4rMqn1lHnsR0mrV+CW wFAUXpmkus/564ShTKCHxmdfiZOH8UFgXMEgFPhRRho06y7r8alztBiJS2ljiNaMNU7W uxLGQyZzQQAvG1CrqY57J+mIiwPyQHXTLG8CnwDT8L7zj4xVbbXzc4B8QOWudqsupj+c BB0wcTq2oZElNvbLN4st6AHnYATAOvgMngEAvzFlyJg+0BHpk60Y/z9vVpchJvPdOA2m EVNg== X-Gm-Message-State: ABuFfoiIFXB5YTfrcnKJ143BPUlY9/cOFCfQM2Nj/8WfXziK8NvXvUqE fV+Ft06KXR/EVk87Cimhl1jItwd0870= X-Google-Smtp-Source: ACcGV60j6AqXFpBeLY4N+gGfAvsSKg62VbYjHGPclJljjzrzk/MwsrHd8PIqsKVphs99QLhbBvpzVg== X-Received: by 2002:adf:ba06:: with SMTP id o6-v6mr8241430wrg.249.1538754948937; Fri, 05 Oct 2018 08:55:48 -0700 (PDT) From: =?UTF-8?q?Alex=20Benn=C3=A9e?= To: qemu-devel@nongnu.org Date: Fri, 5 Oct 2018 16:49:09 +0100 Message-Id: <20181005154910.3099-21-alex.bennee@linaro.org> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181005154910.3099-1-alex.bennee@linaro.org> References: <20181005154910.3099-1-alex.bennee@linaro.org> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-Received-From: 2a00:1450:4864:20::435 Subject: [Qemu-devel] [RFC PATCH 20/21] plugins: add hotness summary to hotblocks 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: Stefan Hajnoczi , cota@braap.org, =?UTF-8?q?Alex=20Benn=C3=A9e?= , vilanova@ac.upc.edu, Pavel.Dovgaluk@ispras.ru 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 Signed-off-by: Alex Benn=C3=A9e --- trace/plugins/hotblocks/hotblocks.c | 33 ++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/trace/plugins/hotblocks/hotblocks.c b/trace/plugins/hotblocks/= hotblocks.c index e9166ad1a5..d2333ad866 100644 --- a/trace/plugins/hotblocks/hotblocks.c +++ b/trace/plugins/hotblocks/hotblocks.c @@ -11,11 +11,13 @@ #include #include #include +#include #include "plugins.h" =20 /* Plugins need to take care of their own locking */ GMutex lock; GHashTable *hotblocks; +guint64 limit =3D 20; =20 typedef struct { uintptr_t pc; @@ -24,20 +26,49 @@ typedef struct { unsigned long total_time; } ExecCount; =20 +static gint cmp_hits(gconstpointer a, gconstpointer b) +{ + ExecCount *ea =3D (ExecCount *) a; + ExecCount *eb =3D (ExecCount *) b; + return ea->hits > eb->hits ? -1 : 1; +} + bool plugin_init(const char *args) { + guint64 count =3D g_ascii_strtoull(args, NULL, 10); + if (count > 0) { + limit =3D count; + } + hotblocks =3D g_hash_table_new(NULL, g_direct_equal); return true; } =20 char *plugin_status(void) { - GString *report =3D g_string_new("We have "); + GString *report =3D g_string_new("collected "); + GList *counts, *it; char *r; + int i; + g_mutex_lock(&lock); g_string_append_printf(report, "%ud entries in the hash table\n", g_hash_table_size(hotblocks)); + counts =3D g_hash_table_get_values(hotblocks); + it =3D g_list_sort(counts, cmp_hits); + + for (i =3D 0; i < limit && it->next; i++, it =3D it->next) { + ExecCount *rec =3D (ExecCount *) it->data; + g_string_append_printf(report, + " pc: %#016" PRIxPTR + " (%d hits)" + " %lu ns between returns\n", + rec->pc, rec->hits, + rec->total_time / rec->hits); + } + g_mutex_unlock(&lock); + g_list_free(it); r =3D report->str; g_string_free(report, FALSE); return r; --=20 2.17.1