Received: by 2002:a25:7ec1:0:0:0:0:0 with SMTP id z184csp7849065ybc; Fri, 29 Nov 2019 02:03:15 -0800 (PST) X-Google-Smtp-Source: APXvYqz1SP7LKn+XeRNfgOcpq+rtMLC4TU2Yk510xtPyLhs4py/8MsQ8YSe8coMPy1b/2eC2j54P X-Received: by 2002:a17:907:42d3:: with SMTP id ng3mr34517309ejb.9.1575021794876; Fri, 29 Nov 2019 02:03:14 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1575021794; cv=none; d=google.com; s=arc-20160816; b=M/3MCdBBcmuYNNq1So/6FKl+CLr5ZgPLWuRxlYCCBUKFRDcVUaKZ6DzhXv/h+tbl4j GAy9Ljd1Qgou6WT6HIsqFCVj0OvlMGXv20wlogRas59b7Ag3uah2oqG4EtXIQ7NleMxC ufq+bmI61J1UNOg7pgE4zoIiEafjwaAq46VgdlNJcs3X1+fcsn/zvBGQrXMc6xi9pG8H ZwW7JsMhaScHUrtHgOqwqOHSSEBAce0zirRmTDF1z2rcZex0c/18axkf7pGmd93+rbPd msUDrcaagLMEKJFRo5uFyyl1IrFvMMlLXtvKvxdiJhirpfG0PUHJ6pRkbSWaMJlBa5l6 XSpg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding :content-language:mime-version:user-agent:date:message-id :organization:subject:from:cc:to; bh=WAV37AHCl7Xd6J18hCUldqJyGwq2Mj8Onj8RMWK+io4=; b=pTIAmeueh1HBmUogC28+VN2KqvTjfDEoLQ2UrK65kTawlHfc/l6fDK1LDWWG20k7OA WYBw3ooa/DuB03BwO2lVO3n0hYO62zB+S9491xEjVKOyo3RGm48vlbi7hy/0G0jX6srM Dj0NX02kUnKB6lXnd7AjBCeASSRW/FTq2DE2RgOj/cIEH7PvW+W76kPDAJO2/L5NQf/M Gl8V+G52L0PRk1jJmiz9hsc593VOTgCIlIrJXN+77jvO3+Y21jf0RtfBORlA6dV849Ba STIMMyg5ovdoSFvaGnFyINWS3iIqCN2XoQKxQuzQrrRGhC856udR2dKlnj9PAhFxU9Du EN3A== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id t9si2553922ejx.141.2019.11.29.02.02.49; Fri, 29 Nov 2019 02:03:14 -0800 (PST) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=intel.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726845AbfK2KBH (ORCPT + 99 others); Fri, 29 Nov 2019 05:01:07 -0500 Received: from mga02.intel.com ([134.134.136.20]:36373 "EHLO mga02.intel.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726360AbfK2KBH (ORCPT ); Fri, 29 Nov 2019 05:01:07 -0500 X-Amp-Result: SKIPPED(no attachment in message) X-Amp-File-Uploaded: False Received: from fmsmga007.fm.intel.com ([10.253.24.52]) by orsmga101.jf.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384; 29 Nov 2019 02:01:06 -0800 X-ExtLoop1: 1 X-IronPort-AV: E=Sophos;i="5.69,257,1571727600"; d="scan'208";a="207386122" Received: from linux.intel.com ([10.54.29.200]) by fmsmga007.fm.intel.com with ESMTP; 29 Nov 2019 02:01:06 -0800 Received: from [10.125.252.110] (abudanko-mobl.ccr.corp.intel.com [10.125.252.110]) by linux.intel.com (Postfix) with ESMTP id 3AB955802B9; Fri, 29 Nov 2019 02:01:04 -0800 (PST) To: Arnaldo Carvalho de Melo Cc: Jiri Olsa , Namhyung Kim , Alexander Shishkin , Peter Zijlstra , Ingo Molnar , Andi Kleen , linux-kernel From: Alexey Budankov Subject: [PATCH v3 0/3] perf record: adapt NUMA awareness to machines with #CPUs > 1K Organization: Intel Corp. Message-ID: <908dbe98-7d8d-0ec1-d4ae-242f3e104979@linux.intel.com> Date: Fri, 29 Nov 2019 13:01:03 +0300 User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64; rv:60.0) Gecko/20100101 Thunderbird/60.9.1 MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Language: en-US Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Current implementation of cpu_set_t type by glibc has internal cpu mask size limitation of no more than 1024 CPUs. This limitation confines NUMA awareness of Perf tool in record mode, thru --affinity option, to the first 1024 CPUs on machines with larger amount of CPUs. This patch set enables Perf tool to overcome 1024 CPUs limitation by using a dedicated struct mmap_cpu_mask type and applying tool's bitmap API operations to manipulate affinity masks of the tool's thread and the mmaped data buffers. tools bitmap API has been extended with bitmap_free() function and bitmap_equal() operation whose implementation is derived from the kernel one. --- Alexey Budankov (3): tools bitmap: implement bitmap_equal() operation at bitmap API perf mmap: declare type for cpu mask of arbitrary length perf record: adapt affinity to machines with #CPUs > 1K tools/include/linux/bitmap.h | 30 +++++++++++++++++++++++++++ tools/lib/bitmap.c | 15 ++++++++++++++ tools/perf/builtin-record.c | 27 ++++++++++++++++++------ tools/perf/util/mmap.c | 40 ++++++++++++++++++++++++++++++------ tools/perf/util/mmap.h | 13 +++++++++++- 5 files changed, 112 insertions(+), 13 deletions(-) --- Changes in v3: - implemented perf_mmap__print_cpu_mask() function - use perf_mmap__print_cpu_mask() to log thread and mmap cpus masks when verbose level is equal to 2 Changes in v2: - implemented bitmap_free() for symmetry with bitmap_alloc() - capitalized MMAP_CPU_MASK_BYTES() macro - returned -1 from perf_mmap__setup_affinity_mask() - implemented releasing of masks using bitmap_free() - moved debug printing under -vv option --- Testing: tools/perf/perf record -vv --affinity=cpu -- ls thread mask[8]: empty ... ------------------------------------------------------------ perf_event_attr: ... mmap size 528384B 0x7fddecf760b8: mmap mask[8]: 0 0x7fddecf86180: mmap mask[8]: 1 0x7fddecf96248: mmap mask[8]: 2 0x7fddecfa6310: mmap mask[8]: 3 0x7fddecfb63d8: mmap mask[8]: 4 0x7fddecfc64a0: mmap mask[8]: 5 0x7fddecfd6568: mmap mask[8]: 6 0x7fddecfe6630: mmap mask[8]: 7 ------------------------------------------------------------ perf_event_attr: ... Synthesizing TSC conversion information 0x7fddecf760b8: thread mask[8]: 0 0x7fddecf86180: thread mask[8]: 1 0x7fddecf96248: thread mask[8]: 2 arch copy Documentation init kernel MAINTAINERS modules.builtin.modinfo perf.data scripts System.map vmlinux block COPYING drivers ipc lbuild Makefile modules.order perf.data.old security tools vmlinux.o certs CREDITS fs Kbuild lib mm Module.symvers README sound usr config-5.2.7-100.fc29.x86_64 crypto include Kconfig LICENSES modules.builtin net samples stdio virt 0x7fddecfa6310: thread mask[8]: 3 0x7fddecfb63d8: thread mask[8]: 4 0x7fddecfc64a0: thread mask[8]: 5 0x7fddecfd6568: thread mask[8]: 6 0x7fddecfe6630: thread mask[8]: 7 0x7fddecf760b8: thread mask[8]: 0 0x7fddecf86180: thread mask[8]: 1 0x7fddecf96248: thread mask[8]: 2 0x7fddecfa6310: thread mask[8]: 3 0x7fddecfb63d8: thread mask[8]: 4 0x7fddecfc64a0: thread mask[8]: 5 0x7fddecfd6568: thread mask[8]: 6 0x7fddecfe6630: thread mask[8]: 7 [ perf record: Woken up 0 times to write data ] 0x7fddecf760b8: thread mask[8]: 0 0x7fddecf86180: thread mask[8]: 1 0x7fddecf96248: thread mask[8]: 2 0x7fddecfa6310: thread mask[8]: 3 0x7fddecfb63d8: thread mask[8]: 4 0x7fddecfc64a0: thread mask[8]: 5 0x7fddecfd6568: thread mask[8]: 6 0x7fddecfe6630: thread mask[8]: 7 Looking at the vmlinux_path (8 entries long) Using vmlinux for symbols [ perf record: Captured and wrote 0.014 MB perf.data (8 samples) ] -- 2.20.1