From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-15.8 required=3.0 tests=BAYES_00,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_CR_TRAILER,INCLUDES_PATCH, MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS,USER_AGENT_GIT autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 3115EC433DB for ; Fri, 5 Mar 2021 06:28:26 +0000 (UTC) Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by mail.kernel.org (Postfix) with ESMTP id 0329664E74 for ; Fri, 5 Mar 2021 06:28:25 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229458AbhCEG2Z (ORCPT ); Fri, 5 Mar 2021 01:28:25 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44066 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229457AbhCEG2Z (ORCPT ); Fri, 5 Mar 2021 01:28:25 -0500 Received: from mail-wm1-x336.google.com (mail-wm1-x336.google.com [IPv6:2a00:1450:4864:20::336]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 0F64AC061574 for ; Thu, 4 Mar 2021 22:28:25 -0800 (PST) Received: by mail-wm1-x336.google.com with SMTP id h7so424480wmf.3 for ; Thu, 04 Mar 2021 22:28:24 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:mime-version :content-transfer-encoding; bh=buwzTirmXHGY2GUpwuqoHvp0Oi4UI+ukRATtGkBss0Q=; b=FR4iKs3cYTsJb0bL00ngpPKDFn+cnH2YacFDVQ0RCD6bAdAsoslbvyR8XWU86IrygD zmAN9lUi7N68nKXnngwdUe9uzzphe9DvPjyKQRRUpKQ7Kog33uG1PQ5mL+zZ5q+dHXMa wo3RhVu9nP797bKr8dbBK/BNg8N4aeYObdnb5myExtqkrX7JaC9PKYqDZkLrSwDfbxc2 PWE98wqSxMqt/80C7LYNrV66kaDOjV+Y/EQ3K+265IJtozzTejEsHRvrfvxnGM9zklBH jTJrMc3wsjX8k4A3IADsb+AFGyEaN8Zxy5p0eA3kesoGIPZUZG79NWLhjMY2Cb5KXWU0 6Ydg== 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:mime-version :content-transfer-encoding; bh=buwzTirmXHGY2GUpwuqoHvp0Oi4UI+ukRATtGkBss0Q=; b=kPMAZNDEfWuS6xf4+kSYJJnZ1iVR8Xmu63pBq9kL/jD/xCDjfCjG4dnzctk1bglnOB ClavmSmhDiJf8RWfQWO3bVisHRBJmm1ANxuY7pJfuzaCVRzoCn4Hxq1a/RuZUmJwRD6P FDqZn4p3ZgPCgzGVGvomHdYSjl8pK+pDMN/PX1peZVkR8QCt9YKvfvP6Vkfj21tP1FIl Q9samloyqNJ3RQWKc0CWo9KO86/pLvep70MaQnw/6YZu42PXMxJQXJCEIMu3i0UeWe5K bPeeDeF2WhTVKDM5YoHGthct08EswWCJKrZs3dSULd51newLjS8hVYfHMnfE+4JjB2wC qoXg== X-Gm-Message-State: AOAM533snJPJhYMnWWrzKad4EqPxfV0Ktp2AGomIPwJOz9LgS/NDOQ62 9w7GqjV0KsKkdiIfcyZv/kA= X-Google-Smtp-Source: ABdhPJw5g5+sDtYwSFXupleHcpOwfFJnOz1sidSUB9ICSe34JgvxfIkj6M+H9RyMxmxY0DNA0SUoYQ== X-Received: by 2002:a1c:c906:: with SMTP id f6mr7010098wmb.128.1614925703906; Thu, 04 Mar 2021 22:28:23 -0800 (PST) Received: from DESKTOP-140QBK5.Home ([151.32.124.136]) by smtp.gmail.com with ESMTPSA id c128sm3036155wma.37.2021.03.04.22.28.23 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 04 Mar 2021 22:28:23 -0800 (PST) From: Stefano De Venuto To: rostedt@goodmis.org Cc: linux-trace-devel@vger.kernel.org, Stefano De Venuto Subject: [RFC] Open multiple trace files and, if possible, pair them Date: Fri, 5 Mar 2021 07:28:07 +0100 Message-Id: <20210305062807.2734-1-stefano.devenuto99@gmail.com> X-Mailer: git-send-email 2.30.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit Precedence: bulk List-ID: X-Mailing-List: linux-trace-devel@vger.kernel.org The goal of this patch is to teach to trace-cmd how to open multiple files and, if they are generated by an host and some guests, pair and synchronize them. We do that by checking, for every input file, whether or not it has a corresponding peer, and if that's the case pairs them. We know that the code must be changed following the new API, but we would like to have an opinion on the work done so far. Signed-off-by: Stefano De Venuto --- tracecmd/trace-read.c | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/tracecmd/trace-read.c b/tracecmd/trace-read.c index ce07b6b..734c2e7 100644 --- a/tracecmd/trace-read.c +++ b/tracecmd/trace-read.c @@ -1191,6 +1191,39 @@ enum output_type { OUTPUT_VERSION_ONLY, }; +static void pair_host_guest(struct list_head *handle_list, + struct tracecmd_input *peer_handle) +{ + unsigned long long current_trace_id; + unsigned long long peer_trace_id; + struct handle_list *handles; + + peer_trace_id = tracecmd_get_traceid(peer_handle); + + list_for_each_entry(handles, handle_list, list) { + + current_trace_id = tracecmd_get_traceid(handles->handle); + + /* If the current handle represents a Host */ + if (tracecmd_get_guest_cpumap(handles->handle, peer_trace_id, + NULL, NULL, NULL) != -1) { + + current_trace_id = tracecmd_get_traceid(handles->handle); + if (tracecmd_get_tsync_peer(peer_handle) == current_trace_id) + tracecmd_pair_peer(peer_handle, handles->handle); + + /* If the current handle represents a Guest */ + } else if (tracecmd_get_tsync_peer(handles->handle) == peer_trace_id) { + + current_trace_id = tracecmd_get_traceid(handles->handle); + if (tracecmd_get_guest_cpumap(peer_handle, current_trace_id, + NULL, NULL, NULL) != -1) + tracecmd_pair_peer(handles->handle, peer_handle); + + } + } +} + static void read_data_info(struct list_head *handle_list, enum output_type otype, int global) { @@ -1837,6 +1870,8 @@ void trace_report (int argc, char **argv) return; } + pair_host_guest(&handle_list, handle); + if (show_funcs) { tep_print_funcs(pevent); return; -- 2.30.0