From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: 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 44E8A9AB43 for ; Mon, 22 May 2023 12:25:40 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 299962FC41 for ; Mon, 22 May 2023 12:25:40 +0200 (CEST) Received: from bastionodiso.odiso.net (bastionodiso.odiso.net [IPv6:2a0a:1580:2000::2d]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (2048 bits) server-digest SHA256) (No client certificate requested) by firstgate.proxmox.com (Proxmox) with ESMTPS for ; Mon, 22 May 2023 12:25:37 +0200 (CEST) Received: from kvmformation3.odiso.net (formationkvm3.odiso.net [10.3.94.12]) by bastionodiso.odiso.net (Postfix) with ESMTP id E4BEB8B61; Mon, 22 May 2023 12:25:29 +0200 (CEST) Received: by kvmformation3.odiso.net (Postfix, from userid 0) id DE7E72E807A; Mon, 22 May 2023 12:25:29 +0200 (CEST) From: Alexandre Derumier To: pve-devel@lists.proxmox.com Date: Mon, 22 May 2023 12:25:19 +0200 Message-Id: <20230522102528.186955-1-aderumier@odiso.com> X-Mailer: git-send-email 2.30.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.015 Adjusted score from AWL reputation of From: address BAYES_00 -1.9 Bayes spam probability is 0 to 1% DMARC_MISSING 0.1 Missing DMARC policy HEADER_FROM_DIFFERENT_DOMAINS 0.25 From and EnvelopeFrom 2nd level mail domains are different KAM_DMARC_STATUS 0.01 Test Rule for DKIM or SPF Failure with Strict Alignment KAM_LAZY_DOMAIN_SECURITY 1 Sending domain does not have any anti-forgery methods SPF_HELO_NONE 0.001 SPF: HELO does not publish an SPF Record SPF_NONE 0.001 SPF: sender does not publish an SPF Record T_SCC_BODY_TEXT_LINE -0.01 - Subject: [pve-devel] [PATCH-SERIES v3 qemu-server/manager/common] add and set x86-64-v2 as default model for new vms and detect best cpumodel X-BeenThere: pve-devel@lists.proxmox.com X-Mailman-Version: 2.1.29 Precedence: list List-Id: Proxmox VE development discussion List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 May 2023 10:25:40 -0000 Hi, we used kvm64 as default cpumodel since the begin of proxmox. (basically, it's like a pentium4 cpu flags). New distros like rhel9 are compiled to use more modern cpu flags. (and windows already use new flags since year, and we already add some extra cpu flags) " In 2020, AMD, Intel, Red Hat, and SUSE worked together to define three microarchitecture levels on top of the historical x86-64 baseline: * x86-64-v1: original x86_64 baseline instruction set * x86-64-v2: vector instructions up to Streaming SIMD Extensions 4.2 (SSE4.2) and Supplemental Streaming SIMD Extensions 3 (SSSE3), the POPCNT instruction, and CMPXCHG16B * x86-64-v3: vector instructions up to AVX2, MOVBE, and additional bit-manipulation instructions. * x86-64-v4: vector instructions from some of the AVX-512 variants. " This patch series add new models inspired from a patch was found on qemu mailing, but never appplied https://lore.kernel.org/all/20210526144038.278899-1-berrange@redhat.com/T/ In addition to theses model, I have enabled aes too. I think it's really important, because a lot of users use default values and have bad performance with ssl and other crypto stuffs. This was discussed on the qemu mailing " Crypto accelerator caveats ========================== Similarly I'm not a huge fan of leaving out the "aes" instruction for accelerated crypto, as missing "aes" is also one of the key factors in making qemu64 a bad choice. If we include 'aes' in x86-64-v2, then we loose support for Nehalem hosts. If we include 'aes' in x86-64-v3 then we further loose support for Dhyana hosts (an EPYC derived CPU). " Nahelemn is a 2008 cpu, so I think it's ok, we are in 2013 ;) (and user can disable aes flag in gui too) That mean than the minimum compatible cpu for v2 is Intel Westmere (2010) and Amd Bulldozer (2011). This patch series add new models, and set x86-64-abi2 model as default in pve-manager wizard only. (to not break current vm, where kvm64 is the default when cputype is not defined in configuration) Additionnaly, it could be great to use a real cpu model when we don't have mixed intel/amd cluster, to have spectre/meltdown/.... mitigations enabled. I have added initial code for best model detection based on host cpuflags vs qemu models flags. Not yet plugged, I'm not sure what is the best way, only at vm create, or at vm start to auto upgrade vm cpu to last version ? I'm not sure with cluster, if user add a new older node. (vmware have a feature called EVC, compute the best model when node join/leave) changelog v2: - remove qemu patch and implement new models in qemu-server - use x86-64-vX instead x86-64-abiX (less confusing for user) - don't expose v4 model for now (need epyc v4 for testing) - use add and set x86-64-v2 as default model for new vms changelog v3: - add best cpu model detection from cpu flags && msr - pve-common : add optionnal parsing of msr in read_cpuinfo qemu-server : Alexandre Derumier (7): cpuconfig: add new x86-64-vX models cpumodel: add cpu models with flags cpumodel: compute qemu supported flags cpuconfig: add get_host_cpu_flags cpuconfig: add find_best_cpumodel cpuconfig: add find_hosts_common_flags add best cpu model detection tests PVE/QemuServer/CPUConfig.pm | 253 ++- PVE/QemuServer/CPUModels.pm | 4221 +++++++++++++++++++++++++++++++++++ PVE/QemuServer/Makefile | 1 + test/Makefile | 5 +- test/run_cpumodel_tests.pl | 272 +++ 5 files changed, 4682 insertions(+), 70 deletions(-) create mode 100644 PVE/QemuServer/CPUModels.pm create mode 100755 test/run_cpumodel_tests.pl pve-common: Alexandre Derumier (1): read_cpuinfo: add msr support src/PVE/ProcFSTools.pm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) pve-manager: Alexandre Derumier (1): qemu: processor : set x86-64-v2 as default cputype for create wizard www/manager6/qemu/OSDefaults.js | 1 + www/manager6/qemu/ProcessorEdit.js | 13 +++++++++++++ 2 files changed, 14 insertions(+) -- 2.30.2