From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from firstgate.proxmox.com (firstgate.proxmox.com [IPv6:2a01:7e0:0:424::9]) by lore.proxmox.com (Postfix) with ESMTPS id 824A71FF15D for ; Thu, 19 Sep 2024 08:56:36 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id A86EEE84C; Thu, 19 Sep 2024 08:56:22 +0200 (CEST) To: pve-devel@lists.proxmox.com Date: Tue, 17 Sep 2024 07:50:19 +0200 In-Reply-To: <20240917055020.10507-1-sascha.westermann@hl-services.de> References: <20240917055020.10507-1-sascha.westermann@hl-services.de> X-Mailman-Approved-At: Thu, 19 Sep 2024 08:56:19 +0200 MIME-Version: 1.0 Message-ID: List-Id: Proxmox VE development discussion List-Post: From: Sascha Westermann via pve-devel Precedence: list Cc: Sascha Westermann X-Mailman-Version: 2.1.29 X-BeenThere: pve-devel@lists.proxmox.com List-Subscribe: , List-Unsubscribe: , List-Archive: Reply-To: Proxmox VE development discussion List-Help: Subject: [pve-devel] [PATCH pve-manager 2/3] Fix #5708: Add CPU raw counters Content-Type: multipart/mixed; boundary="===============3198042199320840545==" Errors-To: pve-devel-bounces@lists.proxmox.com Sender: "pve-devel" --===============3198042199320840545== Content-Type: message/rfc822 Content-Disposition: inline Return-Path: X-Original-To: pve-devel@lists.proxmox.com Delivered-To: pve-devel@lists.proxmox.com Received: from firstgate.proxmox.com (firstgate.proxmox.com [212.224.123.68]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits)) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 85570C36EA for ; Tue, 17 Sep 2024 08:06:45 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 6FB7C10CD9 for ; Tue, 17 Sep 2024 08:06:45 +0200 (CEST) Received: from EUR03-VI1-obe.outbound.protection.outlook.com (mail-vi1eur03on2072e.outbound.protection.outlook.com [IPv6:2a01:111:f403:260c::72e]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Tue, 17 Sep 2024 08:06:44 +0200 (CEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=nLBvGNFh3W9W8GlgbTEkA5R9k1BUphaJZFCaebhKuj8S5Zx2bU9rFZex5g1QE/VF4tY+9QUVV0ZtrCGr8UZDnCyMG9MeIYUc6jQMUpiqNQSbrTvR33OJ1AB9ZW2A6jFQt6dzztRjHm0KamzrIY5labW9Iv/sK0WxsUXYSDwnc1Cvmmx5C7zVGbE0I9OIPKVmfR8iSR+JRva9uoXrmyDLQmNcXuk8AMN/RlSNJb2WsaPo4OYfUVMYhvQZ3L7DVDiTw6aoJCzfbmArk5Tz5Y6OkCrF0Yj8svoycX65Zxy9LzneDzz13yUlui/FiA9pf39STA5dLiFy93GpHsykFLRcyA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=p1QD195JKaSa093uD9pkmEnDa7sVNIuMuYBH+FDPmGg=; b=jMDbmhBWulBq5uu8vIVCagw7z1XTWQA3OoeqwUGOBG1EzZUCtFdFJGJHNER2wJP9jfNwQDJMwM6tZ3HI4XGypnWcuKz8kfn0f8Y7h5AziBumi+5aWIa1iKWVXJkPkkEQ/a/N/odziu/DEFYhapxU+S65f5VfsJC9Q5ptyF2koukzCkWsgE/iyce23RxZQuekeCwG/5Bg+qptDt0KVcVkfxcWuPkRbfTYslXdw7xd9ZsUeldxlgycPMr7DdhV3HHyh0SwonDRdPbY+xsIVZ1zUenuuiw692w3bW22pQhXQhlMtX6NvhTNmHuMILsSqnGXJSs4ntItgZ0Wf6s0C5g24A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=hl-services.de; dmarc=pass action=none header.from=hl-services.de; dkim=pass header.d=hl-services.de; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hl-services.de; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=p1QD195JKaSa093uD9pkmEnDa7sVNIuMuYBH+FDPmGg=; b=qYzCS1nRdDdkUCB0tRUETvALIW+UWMwDj97nsYeUOLVCvgUKC+itkCWLrWA8h6BSxpoxmn2aZlgVI5nkYwbAzRxEbTGFyVy3vV4xPLVnoVCo7+bu+frnCtgt6OWIXqXvdSGlPrepeHp8Tu2iAIScxw3Sv2+UtdS4ESYSpG4hKnXECflBcESp1vqVS1B/WiA4N1jqGWO/YrK6kbjczAcsa08IcZlABXacNhqBTh4VspHPf9DoJSqF+JGfT3TtZHwhko/oe/RL6ezL3dTXdO7tGT+NaqyltCDpyqbvZ1KlcijPXXYH+nLXTQro0FcACvw4gFT62doDFx4l9nYfcKCa8A== Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=hl-services.de; Received: from AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:419::5) by GV2PR10MB7031.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:d3::21) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7962.24; Tue, 17 Sep 2024 05:50:32 +0000 Received: from AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM ([fe80::69f0:b468:92e7:7210]) by AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM ([fe80::69f0:b468:92e7:7210%6]) with mapi id 15.20.7962.022; Tue, 17 Sep 2024 05:50:32 +0000 From: Sascha Westermann To: pve-devel@lists.proxmox.com Cc: Sascha Westermann Subject: [PATCH pve-manager 2/3] Fix #5708: Add CPU raw counters Date: Tue, 17 Sep 2024 07:50:19 +0200 Message-ID: <20240917055020.10507-3-sascha.westermann@hl-services.de> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240917055020.10507-1-sascha.westermann@hl-services.de> References: <20240917055020.10507-1-sascha.westermann@hl-services.de> Content-Transfer-Encoding: 8bit Content-Type: text/plain X-ClientProxiedBy: AM0PR03CA0045.eurprd03.prod.outlook.com (2603:10a6:208::22) To AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:419::5) MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AM9PR10MB4885:EE_|GV2PR10MB7031:EE_ X-MS-Office365-Filtering-Correlation-Id: 13f15ef5-2be2-4dcf-72b7-08dcd6dca4b0 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|10070799003|376014|1800799024|366016; X-Microsoft-Antispam-Message-Info: =?us-ascii?Q?QMeuKb7w3HH9MV7l1FXg/J/W/76JCrmXnDijbv4WDcxQ/BlznwTPhJOtnidM?= =?us-ascii?Q?YNdYnz5MHgok5LPgXSsFKl8PscG1S1EgU98PbTEdhL5Agtue+uQ6pl0EcXAL?= =?us-ascii?Q?3rzKbXTcYZLAzj+flXdRjwJLt0oYAuekfTEjUoNqmvrHqypp6G09W0QuZou9?= =?us-ascii?Q?irJ6uYqUFkbDUeOBo1jwYOCxHCQcBTEPA1gsHyRB2+l+Juhj+tqbY/JlYijc?= =?us-ascii?Q?dmL2sqkp7hpz6AXck1L9GIGIImhCb6Xi3BhisQWLOkj+AvJCGEOSIKxeT5gy?= =?us-ascii?Q?7Yl9HxvZWmVgQIbDCjJGWfSGRnDnSVq6q3MC9avThi5pT7vMoZbJMDufupcD?= =?us-ascii?Q?zXTvj6meVbcnoKrEeCLTS0EFcJSpRALZ8EFp50KM+p/zV3XahxdjqYlPx9p9?= =?us-ascii?Q?RaLG/qicO/8BFe4IEZ8oee559/A41SFtyJ1qtgCV37/O9bqUohIgy1zHs9Vb?= =?us-ascii?Q?r5+N/JDpTiaE1N8d6w8WpwHJFo+KRsevtemmkA+2ivxwWAbqBSbf+1TDh3O/?= =?us-ascii?Q?r4Rm+rK62qGt/wB2T3QJ4j4JoEg9LUN0+cc61quOlxW+/5P73DGbId/tAbfm?= =?us-ascii?Q?1ZkXo/D8CqoVDZva9cayXx9h3Y1yhxvf/kQ3VooStxsl7zN+VhGeqRaBAojO?= =?us-ascii?Q?d0Qu7oHegdkgoGUN5f1fNHFM5SpL3XVcPXrZDdjsVJ7h9dHgorKMK9k3zpuU?= =?us-ascii?Q?1v3wh4/Y7Z4xbgHI7RVKqp6nBZPapZkUbZeh/3lLCeJEbrDoqKHqi0ilAtd/?= =?us-ascii?Q?u9SENjcbFIYiqaYA3BlhQCTSgYlCW2Xiq+o4zjCSUM9lTh5+pCMlQk13CDOb?= =?us-ascii?Q?d4n6bnjFPp/GEICxabh0JWrZda8Hnfz39jCuDzCvXwqOrnn87fIdJW/HanRQ?= =?us-ascii?Q?vutEAihzyyX1pvyolaQeaYYEke0SQ13HkuQUW1ntF3300GKMlKuPgCksHPI1?= =?us-ascii?Q?OkzvTfoVvu9qgxGu3xcCM4CQ8Pov86RJi3g2fo6Ouh9KYSYVqbq9NH3Ujci2?= =?us-ascii?Q?JwZqtY/+fTdw539tqsKcy0z05KQVau6I1BILsVT5BNsS4aWmZ3f8WXRwOPQp?= =?us-ascii?Q?DIuJ3a1T4hE0QqPduODW7Q8XNsxz6zUBzFN0ztTEYmkNdTUTbv0/riE/YLa3?= =?us-ascii?Q?9rwNrPLXOK0F3P5WAHYZw00jxelySODxLKEC2Z0JKShsLrJJ13a90atO69zn?= =?us-ascii?Q?UwzMiR3v78RK9PVl/eKEL2Tx0HvHe9RbHQxlaHd64sdRfxwkMM/mi4PwziMO?= =?us-ascii?Q?FygQrk+J1yHFnSylYJd7FSGXODr7l91MPfPS89IVxE9LLU5zT+IYE1wHYTh5?= =?us-ascii?Q?bZMU4UZFGGOngcNZgZntzlquR25MADBimWZAlJj5XYk/8A=3D=3D?= X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM;PTR:;CAT:NONE;SFS:(13230040)(10070799003)(376014)(1800799024)(366016);DIR:OUT;SFP:1102; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?EWYIQ1IHuF3/XE/FGwcbJlT4FKY1GMEEiJ8svJJ17rq3Y+29WVRgFZWJBJHL?= =?us-ascii?Q?AxBVLXpP12qSb6wvI8S68KT+tjS1M5Rn9ShoKxrKmxaiwDeDP2r2dx+AfsyZ?= =?us-ascii?Q?p3uggIM3mCxaOYeTSR+iifOzAnKDK7J4idM9pLBHT5PMyOQsa0T/NM8dLZxT?= =?us-ascii?Q?Mg+dKeZTzYYlRYJEjmHyQgznFxGxaVVNUpGdWuanLs3Cln7ufxnK3FoJ79Ab?= =?us-ascii?Q?IjD++XojPEojS1IjJaISMghY+MDTNetJR5zKedwDOItE6IPogSzgD1mOA9zH?= =?us-ascii?Q?ACYz1V8Cvfz2bpfOKi5+WT3mPSRnZC4xN5nLm+RdHpgom8lNUbZYOr7ExmMY?= =?us-ascii?Q?sUxdOQwjRt/UHqhdJ+InrQfNNpUBthD+sQkvGRN8g+2ma7cL6PTvutZI/Aaj?= =?us-ascii?Q?+BxtS6VRVQXrYNqZuTiCdyNHxg7kgoP+f78YvVm+4XFx+dx4ZNokLx8rLtdK?= =?us-ascii?Q?j4a4t7Nj5Z0sqHDejc+fZGhmx4+9dbPko+zWsZ+M3HvQiUcNhdbAGr2G3ddQ?= =?us-ascii?Q?awSH8BaLsqZwG/M7EOBqMDq5ZOYUUHEo7f+hUmhPH/lHMF9g7yX+ky5W37Cq?= =?us-ascii?Q?jEVBm8AH3qBiG8Ot4o9i3dbQO4W8Nydf6y8dD6fy2ORDVkr1/lTyqLxEg33d?= =?us-ascii?Q?P+ZVRAbNvE2NDU22JePfLvzrKrvSv8tdy/LJCW3Yih6eArRutPXir3wZntAg?= =?us-ascii?Q?06WEinLXV9E6eY0sqXGM0Fq8GwpBgSeGhcrpQjj2Y75Im6tyX1dC2azwjTsS?= =?us-ascii?Q?Oko6l3PM+QVGZNvMMo543QywUitaQYMjOLk+cploBfFRwN72YLlULcC0LdYn?= =?us-ascii?Q?gXDi8+SLUEeghOgKYyuca5ddsR2JaIdlOBTCobJKnMyQbh4IFwZ8WEnyOiPq?= =?us-ascii?Q?WLP+TkOaaNvCUf9H4ZQh7LQTw2a1A+x5R3F5uL3NO4ponxfq3v0WpUW/LCHx?= =?us-ascii?Q?lvFshJVw1Ef5BAiIHL6ZgEIVp8vh34GEbnsaX+ADtXAUFxitt5wCYHXc5VuT?= =?us-ascii?Q?leLp0paPfsWTOUbMkV2pOtassUuso3F00FVw0sv7B9wHDUozLA3MZQvputhu?= =?us-ascii?Q?jijdN0EsA57rzKsdBB0bY8uUnap+dMlXrHFeEgAdjWLqQmN7FSsZXNVOUyoQ?= =?us-ascii?Q?JfKnlNRYqnyg33SdlgTjYvv5NvV/2jYplDVzZjsCCsR6Y5EC0O4GyOmq61oD?= =?us-ascii?Q?vGdZnwqYsm/JYC0AFMdiMNPJ5NUW+pceZIUv/JgpgAjZuzkfMsNbeKszHoVe?= =?us-ascii?Q?uUmddq4vhrjoLpo9wVzjZVLiKsebSJJLklHbCHNPh7ooyJORuEgUYXQKvdQ7?= =?us-ascii?Q?0YMZgSbtL5CxUlkNncjwWd6GEkzLQ1fpYwtakmZs2Otr4RlNSP9DmgJUHLNR?= =?us-ascii?Q?IrbCk1wzVOMRIJDgUJfHl30wAhPbeRavXaHs7U+WYjK9TB0m1aBpau0iCIi/?= =?us-ascii?Q?KNYHAedavCdJ7sm8InaVG0JnEJvapAmMx8WZEHVhNzM9Brh/QFka6S76dcsP?= =?us-ascii?Q?3sIJKoqmMV1uSGUVDjrMCzWBkHZOXZtB747eZyUcW9UK6oMRYFjm8nnfciIB?= =?us-ascii?Q?uBY0Glpzze9mMviJ0lBELEmYFEE4OX2leU6ixyJ2tLYKC8PvkISJpwrsGJcp?= =?us-ascii?Q?N21A2qBlUhWpaqCtsR2V68ZYWRZXqfJpRJBIMfxNCgij20i77R+CWj8BzO2Z?= =?us-ascii?Q?YznGIASTHJWeTr8Xv8WXaZI75H8=3D?= X-OriginatorOrg: hl-services.de X-MS-Exchange-CrossTenant-Network-Message-Id: 13f15ef5-2be2-4dcf-72b7-08dcd6dca4b0 X-MS-Exchange-CrossTenant-AuthSource: AM9PR10MB4885.EURPRD10.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Sep 2024 05:50:32.5177 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 996ee4f0-343c-4038-abc8-fd1e1094eeb5 X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Ve3X5RZIRTYT7/DXHGfGVhin1X7jOY/2as7kG3rVWEGKTTuJ8edE3R9kkN38cZil00qtcum0Wi1WFH+xZKGcxkA/ibrqojm7BQLr1xDpnVBFJAea5VXdZgYyQlxpvtc+ X-MS-Exchange-Transport-CrossTenantHeadersStamped: GV2PR10MB7031 X-SPAM-LEVEL: Spam detection results: 0 ARC_SIGNED 0.001 Message has a ARC signature ARC_VALID 0.001 Message has a valid ARC signature AWL 0.000 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DKIM_SIGNED 0.1 Message has a DKIM or DK signature, not necessarily valid DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's domain DKIM_VALID_EF -0.1 Message has a valid DKIM or DK signature from envelope-from domain DMARC_PASS -0.1 DMARC pass policy RCVD_IN_DNSWL_NONE -0.0001 Sender listed at https://www.dnswl.org/, no trust SPF_HELO_PASS -0.001 SPF: HELO matches SPF record SPF_PASS -0.001 SPF: sender matches SPF record X-Mailman-Approved-At: Thu, 19 Sep 2024 08:56:19 +0200 Add a map containing raw values from /proc/stat and "uptime_ticks" which can be used in combination with cpuinfo.user_hz to calculate CPU usage from two samples. "uptime_ticks" is only defined at the top level, as /proc/stat is read once, so that core-specific raw values match this value. Signed-off-by: Sascha Westermann --- PVE/API2/Nodes.pm | 32 ++++++++++++++++++++++++++++++++ 1 file changed, 32 insertions(+) diff --git a/PVE/API2/Nodes.pm b/PVE/API2/Nodes.pm index 9920e977..1943ec56 100644 --- a/PVE/API2/Nodes.pm +++ b/PVE/API2/Nodes.pm @@ -5,6 +5,7 @@ use warnings; use Digest::MD5; use Digest::SHA; +use IO::File; use Filesys::Df; use HTTP::Status qw(:constants); use JSON; @@ -466,6 +467,37 @@ __PACKAGE__->register_method({ $res->{cpu} = $stat->{cpu}; $res->{wait} = $stat->{wait}; + if (my $fh = IO::File->new ("/proc/stat", "r")) { + my ($uptime_ticks) = PVE::ProcFSTools::read_proc_uptime(1); + while (defined (my $line = <$fh>)) { + if ($line =~ m|^cpu\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)(?:\s+(\d+)\s+(\d+))?|) { + $res->{cpustat}->{user} = int($1); + $res->{cpustat}->{nice} = int($2); + $res->{cpustat}->{system} = int($3); + $res->{cpustat}->{idle} = int($4); + $res->{cpustat}->{iowait} = int($5); + $res->{cpustat}->{irq} = int($6); + $res->{cpustat}->{softirq} = int($7); + $res->{cpustat}->{steal} = int($8); + $res->{cpustat}->{guest} = int($9); + $res->{cpustat}->{guest_nice} = int($10); + $res->{cpustat}->{uptime_ticks} = $uptime_ticks; + } elsif ($line =~ m|^cpu(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)\s+(\d+)(?:\s+(\d+)\s+(\d+))?|) { + $res->{cpustat}->{"cpu" . $1}->{user} = int($2); + $res->{cpustat}->{"cpu" . $1}->{nice} = int($3); + $res->{cpustat}->{"cpu" . $1}->{system} = int($4); + $res->{cpustat}->{"cpu" . $1}->{idle} = int($5); + $res->{cpustat}->{"cpu" . $1}->{iowait} = int($6); + $res->{cpustat}->{"cpu" . $1}->{irq} = int($7); + $res->{cpustat}->{"cpu" . $1}->{softirq} = int($8); + $res->{cpustat}->{"cpu" . $1}->{steal} = int($9); + $res->{cpustat}->{"cpu" . $1}->{guest} = int($10); + $res->{cpustat}->{"cpu" . $1}->{guest_nice} = int($11); + } + } + $fh->close; + } + my $meminfo = PVE::ProcFSTools::read_meminfo(); $res->{memory} = { free => $meminfo->{memfree}, -- 2.46.0 --===============3198042199320840545== Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ pve-devel mailing list pve-devel@lists.proxmox.com https://lists.proxmox.com/cgi-bin/mailman/listinfo/pve-devel --===============3198042199320840545==--