We replace "reserved_memory= 8192" with "reserved_memory = 1024"
in /etc/lvm/lvm.conf used by "lvm2", this can save 14MB peak memory
consumption, so we lower the possibility of kdump OOM.
For kdump, we don't have too many lvm targets, lvm2 locates in the
RAM(rootfs), so don't need that much memory, 1MB is sufficient.
If there is any lvm(we recognize it by "any_lvm" checklist, then
insert a dracut hook to modify /etc/lvm/lvm.conf before kdump udev
(so lvm2) starts.
Signed-off-by: Xunlei Pang <xlpang(a)redhat.com>
---
dracut-module-setup.sh | 6 ++++++
dracut-process-lvmconf.sh | 6 ++++++
kexec-tools.spec | 3 +++
3 files changed, 15 insertions(+)
create mode 100644 dracut-process-lvmconf.sh
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh
index 1f96bb8..f603e49 100755
--- a/dracut-module-setup.sh
+++ b/dracut-module-setup.sh
@@ -743,4 +743,10 @@ install() {
# target. Ideally all this should be pushed into dracut iscsi module
# at some point of time.
kdump_check_iscsi_targets
+
+ # For the lvm type target under kdump, in /etc/lvm/lvm.conf we can safely replace
+ # "reserved_memory = 8192" with "reserved_memory = 1024" to lower
memory pressure
+ if kdump_targets_tell any_lvm; then
+ inst_hook pre-udev 99 "$moddir/process-lvmconf.sh"
+ fi
}
diff --git a/dracut-process-lvmconf.sh b/dracut-process-lvmconf.sh
new file mode 100644
index 0000000..3564213
--- /dev/null
+++ b/dracut-process-lvmconf.sh
@@ -0,0 +1,6 @@
+#!/bin/sh
+
+# RH BZ1377530
+if [ -f "/etc/lvm/lvm.conf" ]; then
+ sed -i -e
's/\(^[[:space:]]*\)reserved_memory[[:space:]]*=[[:space:]]*[[:digit:]]*/\1reserved_memory
= 1024/' /etc/lvm/lvm.conf
+fi
diff --git a/kexec-tools.spec b/kexec-tools.spec
index 2a176f3..7c7d115 100644
--- a/kexec-tools.spec
+++ b/kexec-tools.spec
@@ -41,6 +41,7 @@ Source103: dracut-kdump-error-handler.sh
Source104: dracut-kdump-emergency.service
Source105: dracut-kdump-error-handler.service
Source106: dracut-kdump-capture.service
+Source107: dracut-process-lvmconf.sh
Requires(post): systemd-units
Requires(preun): systemd-units
@@ -197,8 +198,10 @@ cp %{SOURCE103}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpb
cp %{SOURCE104}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE104}}
cp %{SOURCE105}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE105}}
cp %{SOURCE106}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE106}}
+cp %{SOURCE107}
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE107}}
chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE100}}
chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE101}}
+chmod 755
$RPM_BUILD_ROOT/etc/kdump-adv-conf/kdump_dracut_modules/99kdumpbase/%{remove_dracut_prefix
%{SOURCE107}}
%define dracutlibdir %{_prefix}/lib/dracut
--
1.8.3.1