Disable CPU C-States other than C1 (#16703)
Why I did it Networking devices need to be responsive. Such responsiveness is harmed when the CPU change state. There is a latency penalty when a CPU is idle (e.g C2) and need to exit this state to come back to C1 state. To prevent this from happening the CPU should be forced to remain in C1 state. How I did it Generalize the cstate forcing to C1 to all Arista products. This is done by adding processor.max_cstate=1 to the kernel cmdline for all CPUs. Additionally Intel CPUs also need intel_idle.max_cstate=0 to fallback to the acpi_idle driver. How to verify it Check that processor.max_cstate=1 is present on the cmdline for AMD CPUs Check that both processor.max_cstate=1 and intel_idle.max_cstate=0 are present on the cmdline for Intel CPUs
This commit is contained in:
parent
a8b53e1452
commit
dbea038e96
@ -615,6 +615,14 @@ write_platform_specific_cmdline() {
|
|||||||
aboot_machine=arista_7280cr3mk_32p4
|
aboot_machine=arista_7280cr3mk_32p4
|
||||||
flash_size=7382
|
flash_size=7382
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# disable cpu c-state other than C1
|
||||||
|
local cpuvendor="$(sed -nr 's/vendor_id[\t ]*: (.*)/\1/p' /proc/cpuinfo | head -n 1)"
|
||||||
|
cmdline_add processor.max_cstate=1
|
||||||
|
if [ "$cpuvendor" = "GenuineIntel" ]; then
|
||||||
|
cmdline_add intel_idle.max_cstate=0
|
||||||
|
fi
|
||||||
|
|
||||||
if in_array "$platform" "rook" "magpie" "woodpecker" "sprucefish"; then
|
if in_array "$platform" "rook" "magpie" "woodpecker" "sprucefish"; then
|
||||||
cmdline_add tsc=reliable
|
cmdline_add tsc=reliable
|
||||||
cmdline_add pcie_ports=native
|
cmdline_add pcie_ports=native
|
||||||
@ -625,7 +633,6 @@ write_platform_specific_cmdline() {
|
|||||||
if in_array "$platform" "rook" "sprucefish"; then
|
if in_array "$platform" "rook" "sprucefish"; then
|
||||||
cmdline_add iommu=on
|
cmdline_add iommu=on
|
||||||
cmdline_add intel_iommu=on
|
cmdline_add intel_iommu=on
|
||||||
cmdline_add intel_idle.max_cstate=0
|
|
||||||
read_system_eeprom
|
read_system_eeprom
|
||||||
fi
|
fi
|
||||||
if in_array "$platform" "rook"; then
|
if in_array "$platform" "rook"; then
|
||||||
@ -643,7 +650,6 @@ write_platform_specific_cmdline() {
|
|||||||
read_system_eeprom
|
read_system_eeprom
|
||||||
fi
|
fi
|
||||||
if in_array "$platform" "lorikeet" "hedgehog"; then
|
if in_array "$platform" "lorikeet" "hedgehog"; then
|
||||||
cmdline_add processor.max_cstate=1
|
|
||||||
cmdline_add reassign_prefmem
|
cmdline_add reassign_prefmem
|
||||||
read_system_eeprom
|
read_system_eeprom
|
||||||
fi
|
fi
|
||||||
|
Loading…
Reference in New Issue
Block a user