Script 'mail_helper' called by obssrc
Hello community,
here is the log from the commit of package google-guest-configs for
openSUSE:Factory checked in at 2026-04-01 19:52:49
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/google-guest-configs (Old)
and /work/SRC/openSUSE:Factory/.google-guest-configs.new.21863 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "google-guest-configs"
Wed Apr 1 19:52:49 2026 rev:41 rq:1344117 version:20260306.00
Changes:
--------
---
/work/SRC/openSUSE:Factory/google-guest-configs/google-guest-configs.changes
2026-02-04 21:10:25.967493998 +0100
+++
/work/SRC/openSUSE:Factory/.google-guest-configs.new.21863/google-guest-configs.changes
2026-04-01 19:54:39.411172035 +0200
@@ -1,0 +2,14 @@
+Wed Apr 1 12:29:13 UTC 2026 - John Paul Adrian Glaubitz
<[email protected]>
+
+- Update to version 20260306.00
+ * gce-nic-naming: fix divide-by-zero error
+- from version 20260305.00
+ * set_multiqueue: detect IRDMA devices using their `infiniband/` directory
+- from version 20260303.00
+ * set_multiqueue: Special tunes for x4 machine family
+- from version 20260223.00
+ * gce-nic-naming: restore fallback to hardcoded `ip` paths
+- from version 20260121.00
+ * set_multiqueue: set a4x-max ring len before irq affinity
+
+-------------------------------------------------------------------
Old:
----
google-guest-configs-20260116.00.tar.gz
New:
----
google-guest-configs-20260306.00.tar.gz
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Other differences:
------------------
++++++ google-guest-configs.spec ++++++
--- /var/tmp/diff_new_pack.ZUjGIH/_old 2026-04-01 19:54:40.099200694 +0200
+++ /var/tmp/diff_new_pack.ZUjGIH/_new 2026-04-01 19:54:40.103200860 +0200
@@ -23,7 +23,7 @@
%define _udevdir %(pkg-config --variable udev_dir udev)
%endif
Name: google-guest-configs
-Version: 20260116.00
+Version: 20260306.00
Release: 0
Summary: Google Cloud Guest Configs
License: Apache-2.0
++++++ google-guest-configs-20260116.00.tar.gz ->
google-guest-configs-20260306.00.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore' old/guest-configs-20260116.00/src/usr/bin/gce-nic-naming
new/guest-configs-20260306.00/src/usr/bin/gce-nic-naming
--- old/guest-configs-20260116.00/src/usr/bin/gce-nic-naming 2026-01-16
22:47:35.000000000 +0100
+++ new/guest-configs-20260306.00/src/usr/bin/gce-nic-naming 2026-03-06
03:42:57.000000000 +0100
@@ -458,10 +458,24 @@
}
function run_ip_cmd() {
- debug "Running command: ip $@"
- if [[ "$TEST" != "test" ]]; then
- ip "$@"
+ local ip_cmd=""
+ if [[ $TEST == 'test' ]]; then
+ ip_cmd="debug ip"
+ elif command -v ip >/dev/null 2>&1; then
+ ip_cmd=$(command -v ip)
+ elif [[ -x /usr/sbin/ip ]]; then
+ ip_cmd='/usr/sbin/ip'
+ elif [[ -x /sbin/ip ]]; then
+ ip_cmd='/sbin/ip'
+ elif [[ -x /bin/ip ]]; then
+ ip_cmd='/bin/ip'
fi
+
+ if [[ -z "${ip_cmd}" ]]; then
+ error_and_exit "ip command not found"
+ fi
+ debug "Running command: ${ip_cmd} $@"
+ ${ip_cmd} "$@"
}
#################################
@@ -669,7 +683,7 @@
error_and_exit "No network devices found"
fi
- if [[ "${accelerator_devices[*]}" != "" ]]; then
+ if [[ "${accelerator_devices[*]}" != "" && "${gpu_nic_devices[*]}" != "" ]];
then
determine_index_ratios
fi
@@ -687,4 +701,4 @@
run_ip_cmd link set dev ${current_net_iface} name ${generated_name}
fi
fi
-fi
\ No newline at end of file
+fi
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn'
'--exclude=.svnignore'
old/guest-configs-20260116.00/src/usr/bin/google_set_multiqueue
new/guest-configs-20260306.00/src/usr/bin/google_set_multiqueue
--- old/guest-configs-20260116.00/src/usr/bin/google_set_multiqueue
2026-01-16 22:47:35.000000000 +0100
+++ new/guest-configs-20260306.00/src/usr/bin/google_set_multiqueue
2026-03-06 03:42:57.000000000 +0100
@@ -194,13 +194,17 @@
return 0
}
-# returns 0 (success) if the supplied nic is an IDPF device.
+# returns 0 (success) if the supplied nic is an IDPF device,
+# but NOT an IRDMA device.
function is_idpf() {
local -r nic_name="$1"
local -r driver_type=$(ethtool -i $nic_name | grep driver)
[[ "$driver_type" == *"idpf"* ]] || return 1
+ local -r
infiniband_path="${ROOT_DIR}sys/class/net/"$nic_name"/device/infiniband"
+ [[ -d "$infiniband_path" ]] && return 1
+
return 0
}
@@ -307,6 +311,10 @@
echo "${network_interfaces[@]}"
}
+function get_pci_network_interfaces() {
+ find ${ROOT_DIR}sys/class/net -type l | xargs -L 1 realpath | grep
'/sys/devices/pci' | sort | xargs -L 1 basename
+}
+
# For XPS affinity configuration, we'd do the following assignment:
# 1. For each interface, divide the queues into two halves
# 2. Evenly distribute the vCPUs on NUMA0 to the first half of the queues
@@ -381,10 +389,46 @@
done
}
+# Special features only for x4.
+function apply_x4_configs() {
+ echo "Configuring special features for x4."
+
+ # Globally enable RFS to reduce load on CPUs handling softirqs
+ # (still need per-queue enable).
+ sysctl net.core.rps_sock_flow_entries=262144
+
+ for nic_name in $(get_pci_network_interfaces); do
+ if ! is_idpf "$nic_name"; then
+ continue
+ fi
+
+ # Reconfigure the ring first, some driver versions fail to
+ # preserve interrupt affinity.
+ ethtool -G "$nic_name" rx 4096 tx 2048
+
+ # Make sure we have a well defined moderation setting.
+ ethtool -C "$nic_name" adaptive-tx off adaptive-rx off rx-usecs 20
tx-usecs 50
+
+ # Per-queue flow count for RFS.
+ # Assumes 16 queues -> 262144 / 16 = 16384.
+ echo 16384 | tee
${ROOT_DIR}sys/class/net/"$nic_name"/queues/rx-*/rps_flow_cnt > /dev/null
+ done
+
+ # Distribute IRQs across CPUs.
+ cpu=1; for i in $(echo ${ROOT_DIR}proc/irq/*/*TxRx*/../smp_affinity_list); do
+ echo $((cpu++)) > $i
+ done
+}
+
echo "Running $(basename $0)."
machine_type=$(get_metadata "instance/machine-type")
echo "Machine type: $machine_type"
+if [[ "$machine_type" =~ "x4-" ]]; then
+ apply_x4_configs
+ exit 0
+fi
+
VIRTIO_NET_DEVS=${ROOT_DIR}sys/bus/virtio/drivers/virtio_net/virtio*
is_multinic_accelerator_platform
IS_MULTINIC_ACCELERATOR_PLATFORM=$?
@@ -502,20 +546,23 @@
echo -e "\nSetting IRQ affinity with vCPUs on NUMA${node}
[${node_irq_ranges[@]}]"
bind_cores_index=0
- find ${ROOT_DIR}sys/class/net -type l | xargs -L 1 realpath | grep
'/sys/devices/pci' | sort | xargs -L 1 basename | while read nic_name; do
+ for nic_name in $(get_pci_network_interfaces); do
nic_numa_node=$(cat ${ROOT_DIR}sys/class/net/"$nic_name"/device/numa_node)
if [[ $nic_numa_node -ne $node ]]; then
continue
fi
+ # For IDPF at least, we need to reconfigure ring size before setting IRQ
affinity,
+ # since adjusting the ring size destroys the IRQ affinity settings.
+ if [[ $machine_type == *"a4x-maxgpu-"* ]]; then
+ ethtool -G "$nic_name" rx "$A4X_RX_RING_LENGTH" tx "$A4X_TX_RING_LENGTH"
+ fi
+
# For non-gvnic/idpf devices (e.g. mlx5), the IRQ bindings will be handled
by the device's driver.
if is_gvnic "$nic_name"; then
bind_cores_index=$(set_irq_range_gve "$nic_name" "$bind_cores_index"
"${node_irq_ranges[@]}")
elif is_idpf "$nic_name"; then
bind_cores_index=$(set_irq_range_idpf "$nic_name" "$bind_cores_index"
"${node_irq_ranges[@]}")
- if [[ $machine_type == *"a4x-maxgpu-"* ]]; then
- ethtool -G "$nic_name" rx "$A4X_RX_RING_LENGTH" tx
"$A4X_TX_RING_LENGTH"
- fi
else
echo "$nic_name is not a gvnic/idpf device, not setting irq affinity on
this device"
fi