From df074ee3defffed9aaaa09928c24ec4abb166a9d Mon Sep 17 00:00:00 2001 From: Pingfan Liu Date: Jun 15 2023 02:35:43 +0000 Subject: kdump-lib: Evaluate the memory consumption by smmu and mlx5 separately Resolves: https://bugzilla.redhat.com/show_bug.cgi?id=2160676 Upstream: Fedora rawhide Conflict: None commit 7a2c4cbc3b10971c2a465ba2e465761e73390b74 Author: Pingfan Liu Date: Tue Jun 13 17:43:23 2023 +0800 kdump-lib: Evaluate the memory consumption by smmu and mlx5 separately On 4k and 64k kernels, the typical consumption values for SMMU are 36MB and 384MB, respectively. Hence for 64k kernel, the consumption by smmu should be taken into account carefully. To do it by adding the extra 384MB value if installing a 64k kernel. The upper limit value 384MB is calculated according to the formula in the kernel smmu driver. As for mlx5 network cards, it is measured by a pratical test, 200M for 64k variant, 150M for 4k variant Signed-off-by: Pingfan Liu Reviewed-by: Coiby Xu Reviewed-by: Philipp Rudo Signed-off-by: Pingfan Liu --- diff --git a/kdump-lib.sh b/kdump-lib.sh index 474811c..bc4cedf 100755 --- a/kdump-lib.sh +++ b/kdump-lib.sh @@ -947,6 +947,16 @@ get_recommend_size() echo "0M" } +has_mlx5() +{ + [[ -d /sys/bus/pci/drivers/mlx5_core ]] +} + +has_aarch64_smmu() +{ + ls /sys/devices/platform/arm-smmu-* 1> /dev/null 2>&1 +} + # $1 crashkernel="" # $2 delta in unit of MB _crashkernel_add() @@ -1043,8 +1053,14 @@ kdump_get_arch_recommend_crashkernel() # Without smmu, the diff of MemFree between 4K and 64K measured on a high end aarch64 machine is 82M. # Picking up 100M to cover this diff. And finally, we have "1G-4G:356M;4G-64G:420M;64G-:676M" ((_delta += 100)) + # On a 64K system, the extra 384MB is calculated by: cmdq_num * 16 bytes + evtq_num * 32B + priq_num * 16B + # While on a 4K system, it is negligible + has_aarch64_smmu && ((_delta += 384)) + #64k kernel, mlx5 consumes extra 188M memory, and choose 200M + has_mlx5 && ((_delta += 200)) else - ((_delta += 0)) + #4k kernel, mlx5 consumes extra 124M memory, and choose 150M + has_mlx5 && ((_delta += 150)) fi _ck_cmdline=$(_crashkernel_add "$_ck_cmdline" "$_delta") elif [[ $_arch == "ppc64le" ]]; then