By default, NetworkManger will manage all the network interfaces and try to set interface IFF_UP to get carrier state. Regardless of whether the network interface is connected to a cable or not, the NIC driver will allocate memory resources for e.g. ring buffers when setting IFF_UP. This could be a waste of memory. For example it's found i40e consumes ~15GB on a power machine. On this machine, i40e manages four interfaces but only one interface is valid. This patch use "managed=false" to tell NetworkManager to not manage network interfaces that are not needed by kdump by putting /etc/NetworkManager/conf.d/10-kdump-netif.conf in the initramfs.
Signed-off-by: Coiby Xu coxu@redhat.com --- dracut-module-setup.sh | 24 +++++++++++++++++++++++- 1 file changed, 23 insertions(+), 1 deletion(-)
diff --git a/dracut-module-setup.sh b/dracut-module-setup.sh index 75f82af..d6ad3ba 100755 --- a/dracut-module-setup.sh +++ b/dracut-module-setup.sh @@ -348,7 +348,7 @@ kdump_setup_ifname() {
kdump_copy_nmconnection_file() { local _dev _nmconnection_file_path _nmconnection_name _initrd_nmconnection_file_path - local _cloned_nmconnection_file_path _uniq_name _old_uuid _old_name _uuid + local _cloned_nmconnection_file_path _uniq_name _old_uuid _old_name _uuid _per_mac
_dev="$1"
@@ -377,9 +377,31 @@ kdump_copy_nmconnection_file() { # user's custom value could overwrite it sed -i -E 's/([connection])/\1\nwait-device-timeout=60000/' "${initdir}/$_initrd_nmconnection_file_path"
+ _per_mac=$(kdump_get_perm_addr "$_dev") + if [[ "$_per_mac" != 'not set' ]]; then + echo -n "except:mac:$_per_mac," >> "/tmp/$$-netif_allowlist" + else + echo -n "except:interface-name:$_dev," >> "/tmp/$$-netif_allowlist" + fi + nmcli connection del "$_uuid" }
+kdump_install_nm_netif_allowlist() { + local _netif_allowlist + + _netif_allowlist=$(cat "/tmp/$$-netif_allowlist") + cat <<- EOF > "/tmp/$$-10-kdump-netif.conf" + [device-others] + match-device=${_netif_allowlist} + managed=false + EOF + + inst "/tmp/$$-10-kdump-netif.conf" "/etc/NetworkManager/conf.d/10-kdump-netif.conf" + rm -f "/tmp/$$-10-kdump-netif.conf" + rm -f "/tmp/$$-netif_allowlist" +} + kdump_setup_bridge() { local _netdev=$1 local _brif _dev _mac _kdumpdev