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) server-digest SHA256) (No client certificate requested) by lists.proxmox.com (Postfix) with ESMTPS id 28435CBBA for ; Mon, 18 Sep 2023 17:47:02 +0200 (CEST) Received: from firstgate.proxmox.com (localhost [127.0.0.1]) by firstgate.proxmox.com (Proxmox) with ESMTP id 0715226F9 for ; Mon, 18 Sep 2023 17:47:02 +0200 (CEST) Received: from lana.proxmox.com (unknown [94.136.29.99]) by firstgate.proxmox.com (Proxmox) with ESMTP for ; Mon, 18 Sep 2023 17:46:58 +0200 (CEST) Received: by lana.proxmox.com (Postfix, from userid 10043) id 7A8252C1653; Mon, 18 Sep 2023 17:46:57 +0200 (CEST) From: Stefan Hanreich To: pve-devel@lists.proxmox.com Date: Mon, 18 Sep 2023 17:46:56 +0200 Message-Id: <20230918154656.2717366-1-s.hanreich@proxmox.com> X-Mailer: git-send-email 2.39.2 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-SPAM-LEVEL: Spam detection results: 0 AWL -0.471 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 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 RDNS_NONE 0.793 Delivered to internal network by a host with no rDNS 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 Subject: [pve-devel] [PATCH pve-ceph] fix compatibility with CPUs not supporting SSE 4.1 instructions 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, 18 Sep 2023 15:47:02 -0000 One of our users ran into issues with running Ceph on older CPU architectures [1]. This is apparently due to a bug in gcc-12 that leads to SSE 4.1 instructions always being executed rather than dynamically dispatching functions using those instructions. Those binaries then break on older CPUs that do not support this instruction set. I've ran some benchmarks with `rados bench` against our last release (18.2.0-pve2) and this new version. The commands were taken from our latest Ceph benchmarking paper [2]. The results showed that this patch does not lead to performance regressions on newer hardware. 18.2.0-pve2 this patch Read EC 4574.28 4651.95 Write EC 3739.59 3773.87 Read Replicated 5345.34 5568.41 Write Replicated 4123.28 4066.19 (numbers correspond to bandwidth in MB/s) [1] https://forum.proxmox.com/threads/proxmox-8-ceph-quincy-monitor-no-longer-working-on-amd-opteron-2427.129613 [2] https://www.proxmox.com/en/downloads/proxmox-virtual-environment/documentation/proxmox-ve-ceph-benchmark-2020-09 Signed-off-by: Stefan Hanreich --- ...y-with-CPUs-not-supporting-SSE-4.1-i.patch | 32 +++++++++++++++++++ patches/series | 1 + 2 files changed, 33 insertions(+) create mode 100644 patches/0015-fix-compatibility-with-CPUs-not-supporting-SSE-4.1-i.patch diff --git a/patches/0015-fix-compatibility-with-CPUs-not-supporting-SSE-4.1-i.patch b/patches/0015-fix-compatibility-with-CPUs-not-supporting-SSE-4.1-i.patch new file mode 100644 index 000000000..a44aefafb --- /dev/null +++ b/patches/0015-fix-compatibility-with-CPUs-not-supporting-SSE-4.1-i.patch @@ -0,0 +1,32 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Stefan Hanreich +Date: Fri, 15 Sep 2023 16:55:02 +0200 +Subject: [PATCH] fix compatibility with CPUs not supporting SSE 4.1 + instructions + +Building without -O1 causes gcc-12 to emit SSE 4.1 instructions which +are not supported on older CPU architectures. This leads to Ceph +crashing on older CPU architectures. -O1 causes those optimizations to +be implemented manually via runtime dispatch. + +Signed-off-by: Stefan Hanreich +--- + src/erasure-code/jerasure/CMakeLists.txt | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/erasure-code/jerasure/CMakeLists.txt b/src/erasure-code/jerasure/CMakeLists.txt +index f9cd22e11..b0a355235 100644 +--- a/src/erasure-code/jerasure/CMakeLists.txt ++++ b/src/erasure-code/jerasure/CMakeLists.txt +@@ -67,7 +67,7 @@ endif() + + add_library(gf-complete_objs OBJECT ${gf-complete_srcs}) + set_target_properties(gf-complete_objs PROPERTIES +- COMPILE_FLAGS "${SIMD_COMPILE_FLAGS}") ++ COMPILE_FLAGS "${SIMD_COMPILE_FLAGS} -O1") + set_target_properties(gf-complete_objs PROPERTIES + COMPILE_DEFINITIONS "${GF_COMPILE_FLAGS}") + +-- +2.39.2 + diff --git a/patches/series b/patches/series index c78de0235..df9d7baf6 100644 --- a/patches/series +++ b/patches/series @@ -12,3 +12,4 @@ 0012-fix-4759-run-ceph-crash-daemon-with-www-data-group-f.patch 0013-d-rules-compile-with-gcc-12.patch 0014-debian-add-missing-bcrypt-to-manager-.requires.patch +0015-fix-compatibility-with-CPUs-not-supporting-SSE-4.1-i.patch -- 2.39.2