remove console entries when console is disabled
A huge problem with latency sensitive baremetal worklaods is interrupts being triggered spuriously. Unfortunately when we start with cloud images, often they default to logging to a serial console which means every write is an interrupt, which is far from ideal and can result in packet loss and service degredation quite quickly. So instead, if the console logging has been disabled, and no virtual terminal has been defined, we now strip the console entries from the resulting image. In testing with Centos9 Stream, with booting a VM, the console in this scenario jumps to the framebuffer once started, and after thousands of lines being written to the console, even with delays, locally I'm at 219 interrupts, with a bulk of the entries coming from before I interacted with the console (~135 from just boot). Change-Id: Id9b19c4d9804b88e6db05a20e26c8264bb357734
This commit is contained in:
parent
69187bae3f
commit
81355c4124
@ -232,7 +232,7 @@ if [ -n "${EFI_BOOT_DIR:-}" ] && [ -d /boot/efi/$EFI_BOOT_DIR ] ; then
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
# Ensure paths in BLS entries account for /boot being a partition or part of the
|
# Ensure paths in BLS entries account for /boot being a partition or part of the
|
||||||
# root partition
|
# root partition and perform any required entry removal.
|
||||||
if [[ -e /boot/loader/entries ]]; then
|
if [[ -e /boot/loader/entries ]]; then
|
||||||
pushd /boot/loader/entries
|
pushd /boot/loader/entries
|
||||||
set +e
|
set +e
|
||||||
@ -250,6 +250,17 @@ if [[ -e /boot/loader/entries ]]; then
|
|||||||
done
|
done
|
||||||
set -e
|
set -e
|
||||||
popd
|
popd
|
||||||
|
|
||||||
|
# Since we are already aware we're using BLS, we can go ahead and
|
||||||
|
# do any cleanup to disable embedded serial console settings if they
|
||||||
|
# already exist.
|
||||||
|
if [[ "True" != "${DIB_BOOTLOADER_USE_SERIAL_CONSOLE:-True}" ]] && [[ "${VIRTUAL_TERMINAL}" == "" ]]; then
|
||||||
|
# NOTE(TheJulia): This removes any console arguments and allows grub
|
||||||
|
# to use it's default. It will also remove any embedded consoles in
|
||||||
|
# source images, which may be highly desirable if your running
|
||||||
|
# interrupt sensitive workloads, such as NFV workloads.
|
||||||
|
grubby --update-kernel ALL --remove-args=console
|
||||||
|
fi
|
||||||
# Print resulting grubby output for debug purposes
|
# Print resulting grubby output for debug purposes
|
||||||
grubby --info=ALL
|
grubby --info=ALL
|
||||||
fi
|
fi
|
||||||
|
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
features:
|
||||||
|
- |
|
||||||
|
Adds logic to permit the removal of consoles when the bootloader element
|
||||||
|
when no configuration has been expressed which requests it, and serial
|
||||||
|
console is disabled. This involves ``DIB_BOOTLOADER_VIRTUAL_TERMINAL``
|
||||||
|
being set to an empty string and ``DIB_BOOTLOADER_USE_SERIAL_CONSOLE``
|
||||||
|
is set to ``False``.
|
Loading…
Reference in New Issue
Block a user