Set system option performance ( network-throughput , network-latency , power-save , virtual-guest , virtual-host )

Were can I find documentation on the VyOS system option performance features ?

I would like to get a good understanding of these settings, what each possible setting does and impact of VyOS running as a vm under Proxmox. It appears I can multiple selections at the same time ???

MyVyosRouter# set system option performance
Possible completions:
network-throughput Tune for maximum network throughput
network-latency Tune for low network latency
power-save Tune for low power consumption
virtual-guest Tune for running inside a virtual machine
virtual-host Tune for running guest virtual machines

Thanks

North Idaho Tom Jones

edit - added additional version note:

$ show version
Version: VyOS 2025.11
Release train: circinus
Release flavor: generic

Built by: autobuild@vyos.net
Built on: Tue 11 Nov 2025 13:49 UTC
Build UUID: f65157d9-61eb-410c-9876-bc5e239a2f96
Build commit ID: 6d5f851f240d7e

Architecture: x86_64
Boot via: installed image
System type: KVM guest

Hardware vendor: QEMU
Hardware model: Standard PC (i440FX + PIIX, 1996)
Hardware S/N:
Hardware UUID: 0d505782-8936-4902-a1d3-c1115ebab05d

Copyright: VyOS maintainers and contributors

Should be in Option — VyOS rolling release (current) but that seems to be lacking if your output was from a recent 1.5 release?

Its listed in vyos-1x/src/conf_mode/system_option.py at 07dfa80bdcbf627436c20e44bbf609bd301008f5 · vyos/vyos-1x · GitHub but Im not sure if turned_profiles are properly used?

“tuned” is the packaged used and you can find its profile files through the VyOS installation along with:

Downloaded the latest sources over at:

  • network-throughput Tune for maximum network throughput
#
# tuned configuration
#

[main]
summary=Optimize for streaming network throughput, generally only necessary on older CPUs or 40G+ networks
include=throughput-performance

[sysctl]
# Increase kernel buffer size maximums.  Currently this seems only necessary at 40Gb speeds.
#
# The buffer tuning values below do not account for any potential hugepage allocation.
# Ensure that you do not oversubscribe system memory.
net.ipv4.tcp_rmem="4096 131072 16777216"
net.ipv4.tcp_wmem="4096 16384 16777216"
  • network-latency Tune for low network latency
#
# tuned configuration
#

[main]
summary=Optimize for deterministic performance at the cost of increased power consumption, focused on low latency network performance
include=latency-performance

[vm]
transparent_hugepages=never

[sysctl]
net.core.busy_read=50
net.core.busy_poll=50
net.ipv4.tcp_fastopen=3
kernel.numa_balancing=0
kernel.hung_task_timeout_secs = 600
kernel.nmi_watchdog = 0
vm.stat_interval = 10
kernel.timer_migration = 0

[bootloader]
cmdline_network_latency=skew_tick=1 tsc=reliable rcupdate.rcu_normal_after_boot=1 rcutree.nohz_full_patience_delay=1000

[rtentsk]
  • power-save Tune for low power consumption
#
# tuned configuration
#

[main]
summary=Optimize for low power consumption

[cpu]
governor=schedutil|conservative|powersave
energy_perf_bias=powersave|power
energy_performance_preference=power
boost=0

[acpi]
platform_profile=low-power|quiet

[eeepc_she]

[vm]

[audio]
timeout=10

[video]
radeon_powersave=dpm-battery, auto
panel_power_savings=3

[disk]
# Comma separated list of devices, all devices if commented out.
# devices=sda

[net]
# Comma separated list of devices, all devices if commented out.
# devices=eth0

[scsi_host]
alpm=med_power_with_dipm

[sysctl]
vm.laptop_mode=5
vm.dirty_writeback_centisecs=1500
kernel.nmi_watchdog=0

[script]
script=${i:PROFILE_DIR}/script.sh



#!/bin/bash

. /usr/lib/tuned/functions

start() {
    [ "$USB_AUTOSUSPEND" = 1 ] && enable_usb_autosuspend
    enable_wifi_powersave
    return 0
}

stop() {
    [ "$USB_AUTOSUSPEND" = 1 ] && disable_usb_autosuspend
    disable_wifi_powersave
    return 0
}

process $@
  • virtual-guest Tune for running inside a virtual machine
#
# tuned configuration
#

[main]
summary=Optimize for running inside a virtual guest
include=throughput-performance

[vm]
# If a workload mostly uses anonymous memory and it hits this limit, the entire
# working set is buffered for I/O, and any more write buffering would require
# swapping, so it's time to throttle writes until I/O can catch up.  Workloads
# that mostly use file mappings may be able to use even higher values.
#
# The generator of dirty data starts writeback at this percentage (system default
# is 20%)
dirty_bytes = 30%

[sysctl]
# Filesystem I/O is usually much more efficient than swapping, so try to keep
# swapping low.  It's usually safe to go even lower than this on systems with
# server-grade storage.
vm.swappiness = 30
  • virtual-host Tune for running guest virtual machines
#
# tuned configuration
#

[main]
summary=Optimize for running KVM guests
include=throughput-performance

[vm]
# Start background writeback (via writeback threads) at this percentage (system
# default is 10%)
dirty_background_bytes = 5%

[cpu]
# Setting C3 state sleep mode/power savings
force_latency=cstate.id_no_zero:3|70

Ref: throughput-performance

#
# tuned configuration
#

[main]
summary=Broadly applicable tuning that provides excellent performance across a variety of common server workloads

[variables]
thunderx_cpuinfo_regex=CPU part\s+:\s+(0x0?516)|(0x0?af)|(0x0?a[0-3])|(0x0?b8)\b

[cpu]
governor=performance
energy_perf_bias=performance
min_perf_pct=100
energy_performance_preference=performance

[acpi]
platform_profile=performance

[vm]
# If a workload mostly uses anonymous memory and it hits this limit, the entire
# working set is buffered for I/O, and any more write buffering would require
# swapping, so it's time to throttle writes until I/O can catch up.  Workloads
# that mostly use file mappings may be able to use even higher values.
#
# The generator of dirty data starts writeback at this percentage (system default
# is 20%)
dirty_bytes = 40%

# Start background writeback (via writeback threads) at this percentage (system
# default is 10%)
dirty_background_bytes = 10%

# Marvell ThunderX
[vm.thunderx]
type=vm
uname_regex=aarch64
cpuinfo_regex=${thunderx_cpuinfo_regex}
transparent_hugepages=never

[disk]
# The default unit for readahead is KiB.  This can be adjusted to sectors
# by specifying the relevant suffix, eg. (readahead => 8192 s). There must
# be at least one space between the number and suffix (if suffix is specified).
readahead=>4096

[sysctl]
# PID allocation wrap value.  When the kernel's next PID value
# reaches this value, it wraps back to a minimum PID value.
# PIDs of value pid_max or larger are not allocated.
#
# A suggested value for pid_max is 1024 * <# of cpu cores/threads in system>
# e.g., a box with 32 cpus, the default of 32768 is reasonable, for 64 cpus,
# 65536, for 4096 cpus, 4194304 (which is the upper limit possible).
#kernel.pid_max = 65536

# The swappiness parameter controls the tendency of the kernel to move
# processes out of physical memory and onto the swap disk.
# 0 tells the kernel to avoid swapping processes out of physical memory
# for as long as possible
# 100 tells the kernel to aggressively swap processes out of physical memory
# and move them to swap cache
vm.swappiness=10

# The default kernel value 128 was over twenty years old default,
# kernel-5.4 increased it to 4096, thus do not have it lower than 2048
# on older kernels
net.core.somaxconn=>2048

# Marvell ThunderX
[sysctl.thunderx]
type=sysctl
uname_regex=aarch64
cpuinfo_regex=${thunderx_cpuinfo_regex}
kernel.numa_balancing=0

[video]
panel_power_savings=0

Ref: latency-performance

#
# tuned configuration
#

[main]
summary=Optimize for deterministic performance at the cost of increased power consumption

[cpu]
force_latency=cstate.id_no_zero:1|3
governor=performance
energy_perf_bias=performance
min_perf_pct=100

[acpi]
platform_profile=performance

[vm]
# If a workload mostly uses anonymous memory and it hits this limit, the entire
# working set is buffered for I/O, and any more write buffering would require
# swapping, so it's time to throttle writes until I/O can catch up.  Workloads
# that mostly use file mappings may be able to use even higher values.
#
# The generator of dirty data starts writeback at this percentage (system default
# is 20%)
dirty_bytes=10%

# Start background writeback (via writeback threads) at this percentage (system
# default is 10%)
dirty_background_bytes=3%

[sysctl]
# The swappiness parameter controls the tendency of the kernel to move
# processes out of physical memory and onto the swap disk.
# 0 tells the kernel to avoid swapping processes out of physical memory
# for as long as possible
# 100 tells the kernel to aggressively swap processes out of physical memory
# and move them to swap cache
vm.swappiness=10

[video]
panel_power_savings=0
1 Like

Apachez - Thank you for the information you posted - it helps alot !

  • I was getting ready to post the stuff below when I spotted your post.

via tuned-profiles(7) — tuned — Debian unstable — Debian Manpages

Vyos option: network-throughput Tune for maximum network throughput
network-throughput
Profile for throughput network tuning.
It is based on the throughput-performance profile.
It additionally increases kernel network buffers

Vyos option: network-latency Tune for low network latency
network-latency
Profile for low latency network tuning.
It is based on the latency-performance profile.
It additionally disables transparent hugepages,
NUMA balancing and tunes several other network related sysctl parameters.

Vyos option: power-save Tune for low power consumption
powersave
Maximal power saving,
at the moment it enables USB autosuspend (in case environment variable USB_AUTOSUSPEND is set to 1),
enables ALPM power saving for SATA host adapters and sets the link power management policy to min_power.
It also enables WiFi power saving and makes sure the ondemand governor is active (if supported by the current cpufreq driver).
It sets the CPU energy performance bias to powersave.
It also enables AC97 audio power saving or (it depends on your system) HDA-Intel power savings (with 10 seconds timeout).
In case your system contains supported Radeon graphics card (with enabled KMS) it configures it to automatic power saving.
On Asus Eee PCs dynamic Super Hybrid Engine is enabled.

Vyos option: virtual-guest Tune for running inside a virtual machine
virtual-guest
Profile optimized for virtual guests based on throughput-performance profile.
It additionally decreases virtual memory swappiness and increases dirty_ratio settings.

Vyos option: virtual-host Tune for running guest virtual machines
virtual-host
Profile optimized for virtual hosts based on throughput-performance profile.
It additionally enables more aggressive writeback of dirty pages.

1 Like