summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNataliia Solomko <natalirs1985@gmail.com>2024-10-28 15:18:19 +0200
committerNataliia Solomko <natalirs1985@gmail.com>2024-11-07 19:29:05 +0200
commit029cde4608c450a16495e0676b410a4b38183960 (patch)
tree85f814196db8d9c26911faf1df1c4118533540a7
parentceb64f3dca08a14ea4ea407844103e81f8e4648a (diff)
downloadvyos-1x-029cde4608c450a16495e0676b410a4b38183960.tar.gz
vyos-1x-029cde4608c450a16495e0676b410a4b38183960.zip
T3501: Allow using more than one tuned profile
-rw-r--r--interface-definitions/include/version/system-version.xml.i2
-rw-r--r--interface-definitions/system_option.xml.in21
-rw-r--r--smoketest/config-tests/dialup-router-wireguard-ipv62
-rw-r--r--smoketest/configs/dialup-router-wireguard-ipv62
-rwxr-xr-xsmoketest/scripts/cli/test_system_option.py10
-rwxr-xr-xsrc/conf_mode/system_option.py12
-rw-r--r--src/migration-scripts/system/27-to-2833
7 files changed, 70 insertions, 12 deletions
diff --git a/interface-definitions/include/version/system-version.xml.i b/interface-definitions/include/version/system-version.xml.i
index fcb24abe2..3ecf124c7 100644
--- a/interface-definitions/include/version/system-version.xml.i
+++ b/interface-definitions/include/version/system-version.xml.i
@@ -1,3 +1,3 @@
<!-- include start from include/version/system-version.xml.i -->
-<syntaxVersion component='system' version='27'></syntaxVersion>
+<syntaxVersion component='system' version='28'></syntaxVersion>
<!-- include end -->
diff --git a/interface-definitions/system_option.xml.in b/interface-definitions/system_option.xml.in
index 064d9ff40..638ac1a3d 100644
--- a/interface-definitions/system_option.xml.in
+++ b/interface-definitions/system_option.xml.in
@@ -149,19 +149,32 @@
<properties>
<help>Tune system performance</help>
<completionHelp>
- <list>throughput latency</list>
+ <list>network-throughput network-latency power-save virtual-host virtual-guest</list>
</completionHelp>
<valueHelp>
- <format>throughput</format>
+ <format>network-throughput</format>
<description>Tune for maximum network throughput</description>
</valueHelp>
<valueHelp>
- <format>latency</format>
+ <format>network-latency</format>
<description>Tune for low network latency</description>
</valueHelp>
+ <valueHelp>
+ <format>power-save</format>
+ <description>Tune for low power consumption</description>
+ </valueHelp>
+ <valueHelp>
+ <format>virtual-guest</format>
+ <description>Tune for running inside a virtual machine</description>
+ </valueHelp>
+ <valueHelp>
+ <format>virtual-host</format>
+ <description>Tune for running guest virtual machines</description>
+ </valueHelp>
<constraint>
- <regex>(throughput|latency)</regex>
+ <regex>(network-throughput|network-latency|power-save|virtual-guest|virtual-host)</regex>
</constraint>
+ <multi/>
</properties>
</leafNode>
<node name="http-client">
diff --git a/smoketest/config-tests/dialup-router-wireguard-ipv6 b/smoketest/config-tests/dialup-router-wireguard-ipv6
index ff4bf89c2..c2cf2e9d8 100644
--- a/smoketest/config-tests/dialup-router-wireguard-ipv6
+++ b/smoketest/config-tests/dialup-router-wireguard-ipv6
@@ -688,7 +688,7 @@ set system login user vyos authentication encrypted-password '$6$2Ta6TWHd/U$NmrX
set system login user vyos authentication plaintext-password ''
set system name-server '172.16.254.30'
set system option ctrl-alt-delete 'ignore'
-set system option performance 'latency'
+set system option performance 'network-latency'
set system option reboot-on-panic
set system option startup-beep
set system syslog global facility all level 'debug'
diff --git a/smoketest/configs/dialup-router-wireguard-ipv6 b/smoketest/configs/dialup-router-wireguard-ipv6
index 058582148..767606341 100644
--- a/smoketest/configs/dialup-router-wireguard-ipv6
+++ b/smoketest/configs/dialup-router-wireguard-ipv6
@@ -1470,7 +1470,7 @@ system {
}
option {
ctrl-alt-delete ignore
- performance latency
+ performance network-latency
reboot-on-panic
startup-beep
}
diff --git a/smoketest/scripts/cli/test_system_option.py b/smoketest/scripts/cli/test_system_option.py
index ed0280628..f3112cf0b 100755
--- a/smoketest/scripts/cli/test_system_option.py
+++ b/smoketest/scripts/cli/test_system_option.py
@@ -23,6 +23,7 @@ from vyos.utils.system import sysctl_read
base_path = ['system', 'option']
+
class TestSystemOption(VyOSUnitTestSHIM.TestCase):
def tearDown(self):
self.cli_delete(base_path)
@@ -59,6 +60,7 @@ class TestSystemOption(VyOSUnitTestSHIM.TestCase):
def test_performance(self):
tuned_service = 'tuned.service'
+ path = ['system', 'sysctl', 'parameter']
self.assertFalse(is_systemd_service_active(tuned_service))
@@ -67,11 +69,11 @@ class TestSystemOption(VyOSUnitTestSHIM.TestCase):
gc_thresh2 = '262000'
gc_thresh3 = '524000'
- self.cli_set(['system', 'sysctl', 'parameter', 'net.ipv4.neigh.default.gc_thresh1', 'value', gc_thresh1])
- self.cli_set(['system', 'sysctl', 'parameter', 'net.ipv4.neigh.default.gc_thresh2', 'value', gc_thresh2])
- self.cli_set(['system', 'sysctl', 'parameter', 'net.ipv4.neigh.default.gc_thresh3', 'value', gc_thresh3])
+ self.cli_set(path + ['net.ipv4.neigh.default.gc_thresh1', 'value', gc_thresh1])
+ self.cli_set(path + ['net.ipv4.neigh.default.gc_thresh2', 'value', gc_thresh2])
+ self.cli_set(path + ['net.ipv4.neigh.default.gc_thresh3', 'value', gc_thresh3])
- self.cli_set(base_path + ['performance', 'throughput'])
+ self.cli_set(base_path + ['performance', 'network-throughput'])
self.cli_commit()
self.assertTrue(is_systemd_service_active(tuned_service))
diff --git a/src/conf_mode/system_option.py b/src/conf_mode/system_option.py
index a84572f83..e2832cde6 100755
--- a/src/conf_mode/system_option.py
+++ b/src/conf_mode/system_option.py
@@ -46,6 +46,13 @@ systemd_action_file = '/lib/systemd/system/ctrl-alt-del.target'
usb_autosuspend = r'/etc/udev/rules.d/40-usb-autosuspend.rules'
kernel_dynamic_debug = r'/sys/kernel/debug/dynamic_debug/control'
time_format_to_locale = {'12-hour': 'en_US.UTF-8', '24-hour': 'en_GB.UTF-8'}
+tuned_profiles = {
+ 'power-save': 'powersave',
+ 'network-latency': 'network-latency',
+ 'network-throughput': 'network-throughput',
+ 'virtual-guest': 'virtual-guest',
+ 'virtual-host': 'virtual-host',
+}
def get_config(config=None):
@@ -171,7 +178,10 @@ def apply(options):
# wait until daemon has started before sending configuration
while not is_systemd_service_running('tuned.service'):
sleep(0.250)
- cmd('tuned-adm profile network-{performance}'.format(**options))
+ performance = ' '.join(
+ list(tuned_profiles[profile] for profile in options['performance'])
+ )
+ cmd(f'tuned-adm profile {performance}')
else:
cmd('systemctl stop tuned.service')
diff --git a/src/migration-scripts/system/27-to-28 b/src/migration-scripts/system/27-to-28
new file mode 100644
index 000000000..0a5be48ab
--- /dev/null
+++ b/src/migration-scripts/system/27-to-28
@@ -0,0 +1,33 @@
+# Copyright 2023-2024 VyOS maintainers and contributors <maintainers@vyos.io>
+#
+# This library is free software; you can redistribute it and/or
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+#
+# This library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+#
+# You should have received a copy of the GNU Lesser General Public License
+# along with this library. If not, see <http://www.gnu.org/licenses/>.
+
+# rename 'system option performance' leaf nodes to new names
+
+from vyos.configtree import ConfigTree
+
+base = ['system', 'option', 'performance']
+
+def migrate(config: ConfigTree) -> None:
+ if not config.exists(base):
+ return
+
+ replace = {
+ 'throughput' : 'network-throughput',
+ 'latency' : 'network-latency'
+ }
+
+ for old_name, new_name in replace.items():
+ if config.return_value(base) == old_name:
+ config.set(base, new_name)