Received: by 2002:a05:7412:5112:b0:fa:6e18:a558 with SMTP id fm18csp352225rdb; Tue, 23 Jan 2024 01:22:31 -0800 (PST) X-Google-Smtp-Source: AGHT+IEm8bHzuOun5zCGSbxA6YOITwpZ93oixeFnduHy5DJ/vEy8PVs9y4afA9dFePZ252kHndNo X-Received: by 2002:a05:622a:1103:b0:42a:33ad:4415 with SMTP id e3-20020a05622a110300b0042a33ad4415mr557490qty.111.1706001751533; Tue, 23 Jan 2024 01:22:31 -0800 (PST) ARC-Seal: i=2; a=rsa-sha256; t=1706001751; cv=pass; d=google.com; s=arc-20160816; b=tqJ/nh9vtKhTwUgEUz5X5DmW9jNM0pQJXBF43TBSjOmDjR/XoT3nZd31gib0AC0U7z amfHrVt9DN4HnXWxfY52cH5rsBkALTr1Ayc2D0jSBGMbc24ncJ40TJWJeChDtOls8qee 71oMeLQ5Bq1IevnyJU0aalg6c44w1HptGAaBT6PaqxfFnlyJpbsSnMtK0PfJCDQ7uvZV kI8l9lD+zyN4CiZj/hJ4EEAR6ecYRbQjcWZeASPAyrg+vq0KP5xBYgUtAWbrhd6FUMn5 htvEeKBBP7txaT8lTY8i06nrZ0rpJ8GDjv/Oab84Ns5mAaUGun1oYVTCUmuMR7HPLxEg lxmA== ARC-Message-Signature: i=2; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=content-transfer-encoding:mime-version:list-unsubscribe :list-subscribe:list-id:precedence:message-id:date:subject:cc:to :from:dkim-signature; bh=F8mS8d8vBcR03ufqO/xF4nBQTf7/wmjAomjX8LcNRSg=; fh=evP20v0Z2agBF6766Fg4f0yypEL+LBR7IJvWx8Uqu9c=; b=R37/2j7mG/AKgq1aHjD9bg7P9MJZY/jEbIOP++GRRx+NJyzMNdt4b+P9yYzpmAnaLs 5RVibx3kZ47R2Za7qU3P09W7jU7tYJVloK+aImrDMFR8ecKAUGE+0XeJQ6biVNNBQRJE AcgZBML9lqP220cH+iH4R5r5rZQIumUUvmNo/clux6sLp5Hjj4TQMq0BUnUx0FQwhofp 3hr5RXSZYR3wJjrBdo4+jmhkNO/hn1XKLudABLE/oUoRlG1ZBUgmyxXgZt/Rf+s7c30u EmlzSo4n/rfvJwZCcUbxUJrnvb9X48UufrDdS5TJL/ZzLce8DAmj7GMHTedCx63RQ/7I ooUg== ARC-Authentication-Results: i=2; mx.google.com; dkim=pass header.i=@shopee.com header.s=shopee.com header.b=cBRGXvP2; arc=pass (i=1 spf=pass spfdomain=shopee.com dkim=pass dkdomain=shopee.com dmarc=pass fromdomain=shopee.com); spf=pass (google.com: domain of linux-kernel+bounces-34989-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-34989-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=shopee.com Return-Path: Received: from ny.mirrors.kernel.org (ny.mirrors.kernel.org. [147.75.199.223]) by mx.google.com with ESMTPS id r9-20020ac85c89000000b00429b94a7090si7449473qta.596.2024.01.23.01.22.31 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 01:22:31 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel+bounces-34989-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) client-ip=147.75.199.223; Authentication-Results: mx.google.com; dkim=pass header.i=@shopee.com header.s=shopee.com header.b=cBRGXvP2; arc=pass (i=1 spf=pass spfdomain=shopee.com dkim=pass dkdomain=shopee.com dmarc=pass fromdomain=shopee.com); spf=pass (google.com: domain of linux-kernel+bounces-34989-linux.lists.archive=gmail.com@vger.kernel.org designates 147.75.199.223 as permitted sender) smtp.mailfrom="linux-kernel+bounces-34989-linux.lists.archive=gmail.com@vger.kernel.org"; dmarc=pass (p=REJECT sp=REJECT dis=NONE) header.from=shopee.com Received: from smtp.subspace.kernel.org (wormhole.subspace.kernel.org [52.25.139.140]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by ny.mirrors.kernel.org (Postfix) with ESMTPS id 3F8391C22D76 for ; Tue, 23 Jan 2024 09:22:31 +0000 (UTC) Received: from localhost.localdomain (localhost.localdomain [127.0.0.1]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 9C4445A0EB; Tue, 23 Jan 2024 09:21:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=shopee.com header.i=@shopee.com header.b="cBRGXvP2" Received: from mail-pf1-f177.google.com (mail-pf1-f177.google.com [209.85.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 5E5045A0E6 for ; Tue, 23 Jan 2024 09:21:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.177 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706001692; cv=none; b=MRiu8OHY4AjyYc4gajZfvTahpSlqWsMFPxfv1IUTvd7OcXoWVvlBZLpVlKfIw5yItqX6NTJrSLkTAw9h2xgqHsL8UuzTSu3GL4WtXiyMw0WTCFpteTzxlX3WDJtzJkUHFKMxWIUlKHhSgwAcEovt5AFzNVO5DhD0T29qG3R2Qnw= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1706001692; c=relaxed/simple; bh=kdjTVDnt3T5rMo3cn2OSR3tL1n1pa7btbCx55IWmczM=; h=From:To:Cc:Subject:Date:Message-Id:MIME-Version; b=U9IUWW8JY5kCb42r2BfwpZYvlkdthl+qBtovmy6RMSkIehCAc4PjDDOatsoqYNXGF4l65jawS8Pe7W5OnkGRHxGqknmTmaXEIHf3ncNgbeeWoqQ0e9tR5eycX/q2oKsTt9K4lF8td5+EzwXUPg404AHMHDK+8ZXG5SR9yaLCrXQ= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=shopee.com; spf=pass smtp.mailfrom=shopee.com; dkim=pass (2048-bit key) header.d=shopee.com header.i=@shopee.com header.b=cBRGXvP2; arc=none smtp.client-ip=209.85.210.177 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=shopee.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=shopee.com Received: by mail-pf1-f177.google.com with SMTP id d2e1a72fcca58-6dd6c9cb6a8so254273b3a.1 for ; Tue, 23 Jan 2024 01:21:30 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=shopee.com; s=shopee.com; t=1706001690; x=1706606490; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=F8mS8d8vBcR03ufqO/xF4nBQTf7/wmjAomjX8LcNRSg=; b=cBRGXvP2X0oPEjeR6Psmi0aaMHXROkwDez6uRSjNTkxdN3P7pR4KrmsJuThkflFXw4 sdOwUp31IAKrMO82MxiYeqFCcV2AOGSh7xm/XM7jMc75d2B67IW+Asr5zwykuZh7mwtj EsB8En1Tkh+tJfHpyHIyltItXD0EDrcVnDDGVM8q62/nGddISw0ZvD8bYaTlvSl1IbN3 6YwX8RDWLN9oax6nKzrraqjFMOFtgIcv/Kl/cHFuyleFdC3NTQiWMCJf3p0ANwsFFGPM ENCG8O4a1HGPPJvkKG5JYPXpaleVqlivOL6L2T9k/3TczseX7MyEt6hV/ugGPgD3WW7A R4kg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1706001690; x=1706606490; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=F8mS8d8vBcR03ufqO/xF4nBQTf7/wmjAomjX8LcNRSg=; b=pRAr1omnYxLmxrrv1EKT6lbk0louYV3xbALnZgWE/s3gfRXVUKuCh1JVvtnxxR6Ti2 8P1Ik3C/3jGAS+MJL4cuT52tAP0RijM9MIX4S2X6s6k4bGz2lotxHmpElRtMhH94cjdi GFCMLN9z4NY/3C0/+ENHH5nvbOcZbEEWa+xzX/6MUNHZhA1Scp+rzKP8WCHRWl/GJQDG b1heg85Op+kk+bb8mzA8LwkO6bN36iseJlj7zyf+o5RfVXjrxMPAseo19LQEibm1xkmK I/CSxFXrr71Tupo51kaUhOa4IIuJ+ZzDzCt8OYYd1I6eIpShFhE6v3jwcppv82kzmmJu eTIQ== X-Gm-Message-State: AOJu0Ywg0japA6CqQ01YLEdbrEmzpeYRk86l5/dBbVzBcs44dLoxGVOc gbJt+jT7/OOAony6N6qMxmUUZ/9Kpt98kRaRwOWfxGbsu0Y6xuLyos6FHPXX1Tg= X-Received: by 2002:a05:6a00:2d95:b0:6d9:ac71:3b52 with SMTP id fb21-20020a056a002d9500b006d9ac713b52mr3796848pfb.54.1706001690073; Tue, 23 Jan 2024 01:21:30 -0800 (PST) Received: from ubuntu-haifeng.default.svc.cluster.local ([101.127.248.173]) by smtp.gmail.com with ESMTPSA id i15-20020aa787cf000000b006dbddea71e2sm3650707pfo.79.2024.01.23.01.21.28 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 23 Jan 2024 01:21:29 -0800 (PST) From: Haifeng Xu To: reinette.chatre@intel.com Cc: fenghua.yu@intel.com, babu.moger@amd.com, peternewman@google.com, x86@kernel.org, linux-kernel@vger.kernel.org, Haifeng Xu Subject: [PATCH 3/3] x86/resctrl: Display cache occupancy of busy RMIDs Date: Tue, 23 Jan 2024 09:20:24 +0000 Message-Id: <20240123092024.1271882-3-haifeng.xu@shopee.com> X-Mailer: git-send-email 2.25.1 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit If llc_occupany is enabled, the RMID may not be freed immediately unless its llc_occupany is less than the resctrl_rmid_realloc_threshold. In our production environment, those unused RMIDs get stuck in the limbo list forever because their llc_occupancy are larger than the threshold. After turning it up , we can successfully free unused RMIDs and create new monitor groups. In order to accquire the llc_occupancy of RMIDs in each rdt domain, we use perf tool to track and filter the log manually. It's not efficient enough. Therefore, we can add a RFTYPE_TOP_INFO file 'busy_rmids_info' that tells users the llc_occupancy of busy RMIDs. It can also help to guide users how much the resctrl_rmid_realloc_threshold should be. Signed-off-by: Haifeng Xu --- arch/x86/kernel/cpu/resctrl/rdtgroup.c | 70 ++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/arch/x86/kernel/cpu/resctrl/rdtgroup.c b/arch/x86/kernel/cpu/resctrl/rdtgroup.c index 1eac0ca97b81..88dadb87f4e1 100644 --- a/arch/x86/kernel/cpu/resctrl/rdtgroup.c +++ b/arch/x86/kernel/cpu/resctrl/rdtgroup.c @@ -32,6 +32,12 @@ #include #include "internal.h" +struct busy_rmids_info { + struct rdt_resource *r; + struct rdt_domain *d; + struct seq_file *seq; +}; + DEFINE_STATIC_KEY_FALSE(rdt_enable_key); DEFINE_STATIC_KEY_FALSE(rdt_mon_enable_key); DEFINE_STATIC_KEY_FALSE(rdt_alloc_enable_key); @@ -934,6 +940,63 @@ static int rdt_free_rmids_show(struct kernfs_open_file *of, return 0; } +void rdt_domain_busy_rmids_show(void *info) +{ + + struct rdt_resource *r; + struct rdt_domain *d; + struct seq_file *seq; + struct busy_rmids_info *rmids_info = info; + u32 crmid = 1, nrmid; + u64 val; + int ret; + + r = rmids_info->r; + d = rmids_info->d; + seq = rmids_info->seq; + + seq_printf(seq, "domain-%d busy rmids.\n", d->id); + + for (;;) { + nrmid = find_next_bit(d->rmid_busy_llc, r->num_rmid, crmid); + if (nrmid >= r->num_rmid) + break; + + ret = resctrl_arch_rmid_read(r, d, nrmid, QOS_L3_OCCUP_EVENT_ID, &val); + switch (ret) { + case -EIO: + seq_printf(seq, "I/O Error\n"); + return; + case -EINVAL: + seq_printf(seq, "Invalid Argument\n"); + return; + default: + seq_printf(seq, "rmid:%d llc_occupancy:%llu\n", nrmid, val); + } + crmid = nrmid + 1; + } +} + +static int rdt_busy_rmids_info_show(struct kernfs_open_file *of, + struct seq_file *seq, void *v) +{ + + struct rdt_domain *d; + struct rdt_resource *r; + struct busy_rmids_info info; + + mutex_lock(&rdtgroup_mutex); + r = &rdt_resources_all[RDT_RESOURCE_L3].r_resctrl; + info.r = r; + info.seq = seq; + list_for_each_entry(d, &r->domains, list) { + info.d = d; + smp_call_function_any(&d->cpu_mask, rdt_domain_busy_rmids_show, &info, 1); + } + mutex_unlock(&rdtgroup_mutex); + return 0; +} + static int rdt_num_closids_show(struct kernfs_open_file *of, struct seq_file *seq, void *v) { @@ -1791,6 +1854,13 @@ static struct rftype res_common_files[] = { .seq_show = rdt_free_rmids_show, .fflags = RFTYPE_TOP_INFO, }, + { + .name = "busy_rmids_info", + .mode = 0444, + .kf_ops = &rdtgroup_kf_single_ops, + .seq_show = rdt_busy_rmids_info_show, + .fflags = RFTYPE_TOP_INFO, + }, { .name = "num_closids", .mode = 0444, -- 2.25.1