Description of problem: Tuned supports profile reloading upon receiving a SIGHUP signal. Unfortunately, when it is in "auto" mode and a given profile does not exist, it is stuck and the tuned service needs to be restarted. Version-Release number of selected component (if applicable): [root@b77 ~]# rpm -qi tuned Name : tuned Version : 2.11.0 Release : 5.el7 Architecture: noarch Install Date: Tue 23 Jul 2019 10:38:46 AM EDT Group : Unspecified Size : 815344 License : GPLv2+ Signature : RSA/SHA256, Fri 07 Jun 2019 12:33:01 PM EDT, Key ID 199e2f91fd431d51 Source RPM : tuned-2.11.0-5.el7.src.rpm Build Date : Fri 07 Jun 2019 12:15:40 PM EDT Build Host : ppc-029.build.eng.bos.redhat.com Relocations : (not relocatable) Packager : Red Hat, Inc. <http://bugzilla.redhat.com/bugzilla> Vendor : Red Hat, Inc. URL : http://www.tuned-project.org/ Summary : A dynamic adaptive system tuning daemon Description : The tuned package contains a daemon that tunes system settings dynamically. It does so by monitoring the usage of several system components periodically. Based on that information components will then be put into lower or higher power saving modes to adapt to the current usage. Currently only ethernet network and ATA harddisk devices are implemented. How reproducible: # add debugging option to tuned service in /etc/systemd/system/multi-user.target.wants/tuned.service [root@b77 ~]# echo auto > /etc/tuned/profile_mode [root@b77 ~]# systemctl daemon-reload [root@b77 ~]# systemctl restart tuned # tail /var/log/tuned/tuned.log [root@b77 ~]# tuned-adm active Current active profile: virtual-guest [root@b77 ~]# cat > /etc/tuned/recommend.d/50-poc.conf << EOF [network-throughput] /etc/tuned/recommend.d/50-poc.conf=.* EOF [root@b77 ~]# pkill -HUP tuned [root@b77 ~]# tuned-adm active Current active profile: network-throughput # So far so good, so reloading profiles works when they exist. [root@b77 ~]# cat > /etc/tuned/recommend.d/50-poc.conf << EOF [does-not-exist] /etc/tuned/recommend.d/50-poc.conf=.* EOF [root@b77 ~]# pkill -HUP tuned [root@b77 ~]# tuned-adm active No current active profile. [root@b77 ~]# tuned-adm recommend does-not-exist # Still, so far so good, this is understandable [root@b77 ~]# tail /var/log/tuned/tuned.log 2019-11-20 10:19:13,048 DEBUG tuned.units.manager: cleaning plugin 'cpu' 2019-11-20 10:19:13,048 DEBUG tuned.units.manager: cleaning plugin 'disk' 2019-11-20 10:19:13,048 DEBUG tuned.hardware.inventory: removing handler: block (<tuned.plugins.plugin_disk.DiskPlugin object at 0x7f4c9be93590>) 2019-11-20 10:19:13,048 DEBUG tuned.units.manager: cleaning plugin 'sysctl' 2019-11-20 10:19:13,049 INFO tuned.daemon.daemon: Running in automatic mode, checking what profile is recommended for your configuration. 2019-11-20 10:19:13,049 DEBUG tuned.utils.commands: Read data from file: '<closed file '/etc/tuned/recommend.d/50-poc.conf', mode 'r' at 0x7f4c9beb9660>' > '#[network-throughput] [does-not-exist] /etc/tuned/recommend.d/50-poc.conf=.* ' 2019-11-20 10:19:13,049 INFO tuned.daemon.daemon: Using 'does-not-exist' profile # Let's try to switch back to a profile that exists. [root@b77 ~]# tuned-adm active Current active profile: virtual-guest [root@b77 ~]# cat > /etc/tuned/recommend.d/50-poc.conf << EOF [network-throughput] /etc/tuned/recommend.d/50-poc.conf=.* EOF [root@b77 ~]# pkill -HUP tuned [root@b77 ~]# tuned-adm active No current active profile. # So this is not good, why don't I see 'network-throughput'? [root@b77 ~]# tail /var/log/tuned/tuned.log 2019-11-20 10:19:13,049 INFO tuned.daemon.daemon: Running in automatic mode, checking what profile is recommended for your configuration. 2019-11-20 10:19:13,049 DEBUG tuned.utils.commands: Read data from file: '<closed file '/etc/tuned/recommend.d/50-poc.conf', mode 'r' at 0x7f4c9beb9660>' > '#[network-throughput] [does-not-exist] /etc/tuned/recommend.d/50-poc.conf=.* ' 2019-11-20 10:19:13,049 INFO tuned.daemon.daemon: Using 'does-not-exist' profile 2019-11-20 10:19:31,175 DEBUG tuned.exports.dbus_exporter: checking authorization for for action 'com.redhat.tuned.active_profile' requested by caller ':1.75' 2019-11-20 10:19:31,176 DEBUG tuned.exports.dbus_exporter: action 'com.redhat.tuned.active_profile' requested by caller ':1.75' was successfully authorized by polkit 2019-11-20 10:22:32,585 DEBUG tuned.exports.dbus_exporter: checking authorization for for action 'com.redhat.tuned.active_profile' requested by caller ':1.76' 2019-11-20 10:22:32,586 DEBUG tuned.exports.dbus_exporter: action 'com.redhat.tuned.active_profile' requested by caller ':1.76' was successfully authorized by polkit # No sign of trying to load 'network-throughput' [root@b77 ~]# tuned-adm recommend network-throughput # Let's restart the tuned service [root@b77 ~]# systemctl restart tuned [root@b77 ~]# tuned-adm active Current active profile: network-throughput # OK, so I had to restart the service to take the tuned daemon from some "stuck" state. Expected results: Tuned daemon does not enter the "stuck" state and subsequent SIGHUP signals set the correct profile.
(In reply to jmencak from comment #0) > # Let's try to switch back to a profile that exists. > > [root@b77 ~]# tuned-adm active > Current active profile: virtual-guest This part seems wrong. Doesn't it say 'No current active profile.' here? Other than that, I can reproduce the bug. Thanks for the report!
(In reply to Ondřej Lysoněk from comment #2) > (In reply to jmencak from comment #0) > > # Let's try to switch back to a profile that exists. > > > > [root@b77 ~]# tuned-adm active > > Current active profile: virtual-guest > > This part seems wrong. Doesn't it say 'No current active profile.' here? > > Other than that, I can reproduce the bug. Thanks for the report! This is correct, sorry about that. Copy&paste error when I was preparing the BZ. Thanks for looking into this!