1
0
Fork 0
Commit graph

776 commits

Author SHA1 Message Date
Jaroslav Škarvada
f775a3cab0 Merge pull request #20 from olysonek/udev_pr
Implement udev-based device matching
2017-03-01 10:09:41 +01:00
Ondřej Lysoněk
f14ae65bd2 Implement udev-based device matching
A new option 'devices_udev_regex' can be used in profile
configuration to specify devices to which a plugin instance
should be applied.

The option can contain a python regular expression, as specified
in https://docs.python.org/2/library/re.html#regular-expression-syntax.
The expression is effectively matched against the output of
udevadm info --query=property -n <device_path>

If the option 'devices_udev_regex' is specified, the 'devices' option
is ignored. If it is not specified, then the matching is done the same
way as previously, i.e. against 'devices'.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-28 17:39:07 +01:00
Jaroslav Škarvada
4c1ed69f4a Merge pull request #19 from olysonek/pr
Remove the '_devices' attribute in plugins
2017-02-28 13:19:48 +01:00
Ondřej Lysoněk
a38b6eee99 Remove the '_devices' attribute in plugins
The _device attribute should always be the same as the union of
_assigned_devices and _free_devices, therefore it's redundant.
Its existence in my opinion brings only confusion and a potential
source of inconsistencies.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-27 14:54:46 +01:00
Jaroslav Škarvada
4b66f79290 Merge pull request #18 from olysonek/pr
Assign hotplugged devices in priority order too
2017-02-27 14:30:46 +01:00
Ondřej Lysoněk
bd3749fddd Assign hotplugged devices in priority order too
Resolves: rhbz#1246172

This fixes commit 363d74815a.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-27 14:14:04 +01:00
Jaroslav Škarvada
82f1a9a19d plugins: renamed instance_priority to priority
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-02-22 01:16:23 +01:00
Jaroslav Škarvada
5b1316a361 plugins: log instance name together with the plugin if it differs
I.e.

[myaudio]
type=audio

Will show in log as:
myaudio (audio)

and:
[audio]

Will show in log as:
audio

I.e. if the instance name and the plugin name is the same it will
not log the plugin name in braces.

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-02-17 18:22:34 +01:00
Jaroslav Škarvada
9cf6c3f45c Merge pull request #16 from olysonek/instance_priority_pr
Implement instance priority
2017-02-17 16:45:02 +01:00
Ondřej Lysoněk
363d74815a Implement instance priority
Resolves: rhbz#1246172

Allow specifying order in which individual plugin instances are to be
executed.

Each instance can be given the 'instance_priority' option
in the profile configuration. The value must be an integer (it can be
negative). If no priority is specified, it is inherited from the parent
profile, or set to the default instance priority, if no parent profile
specifies the priority for that instance.

The default instance priority is by default zero, but it can be set to
a different value using the 'default_instance_priority' option in the
global configuration file.

Creating plugin instances, assigning devices to instances, initializing
instances, applying, updating and verifying tuning are all done in order
from lowest numerical instance priority to highest. Unapplying tuning and
destroying instances is done in reversed order.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-17 15:56:11 +01:00
Jaroslav Škarvada
82546e3027 Merge pull request #15 from olysonek/make_lint
Print path to affected files on 'make lint'
2017-02-17 12:46:17 +01:00
Jaroslav Škarvada
9e99925a9f Merge pull request #14 from olysonek/log_to_file
Fix logging to file in the current directory
2017-02-16 15:13:05 +01:00
Ondřej Lysoněk
233cf61a34 Print path to affected files on 'make lint'
Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-16 14:41:04 +01:00
Jaroslav Škarvada
78c0319e4f Merge pull request #13 from olysonek/make_lint
Add 'lint' target to Makefile
2017-02-16 10:08:20 +01:00
Ondřej Lysoněk
abb5a104d9 Fix logging to file in the current directory
Previously if you ran 'tuned -l log', it would crash with:
OSError: [Errno 2] No such file or directory: ''
This patch fixes the bug.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-16 09:38:42 +01:00
Ondřej Lysoněk
0f22a5e12c Simplify the 'lint' target in Makefile
Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-16 09:17:19 +01:00
Jaroslav Škarvada
16654bfa3e Merge pull request #12 from olysonek/remove_gtk_manager
Remove tuned.gtk.manager
2017-02-14 17:44:33 +01:00
Jaroslav Škarvada
035eabd286 Merge pull request #11 from olysonek/pylint_fixes
Pylint fixes
2017-02-14 17:43:12 +01:00
Jaroslav Škarvada
6ea51e3d91 Merge pull request #10 from olysonek/plugin_selinux
plugin_selinux: Import exceptions
2017-02-14 17:38:32 +01:00
Jaroslav Škarvada
ee22e87e60 Merge pull request #6 from olysonek/NotImplementedError
Raise NotImplementedError instead of NotImplemented
2017-02-14 17:22:13 +01:00
Jaroslav Škarvada
d9101ada39 Merge pull request #5 from olysonek/remove_unreachable
Remove an unreachable return statement
2017-02-14 17:19:52 +01:00
Ondřej Lysoněk
4488b3a0e4 Add 'lint' target to Makefile
The target executes pylint on all *.py files, except for those
in the ./tests and ./experiments subdirectories.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 16:49:27 +01:00
Ondřej Lysoněk
53325ff3cd Remove tuned.gtk.manager
Remove the tuned.gtk.manager module. It doesn't seem to have been used
anywhere _ever_, it's broken (the only class it contains calls
a constructor with incorrect number of parameters) and it seems to be
completely useless anyway.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 15:46:08 +01:00
Ondřej Lysoněk
8e6827c898 GUI: Fix some pylint errors
This fixes the following pylint errors:
************* Module tuned.gtk.gui_plugin_loader
E:145,18: TunedException is not callable (not-callable)
E: 45,11: Undefined variable name 'GTKPluginLoader' in __all__ (undefined-all-variable)

************* Module tuned.gtk.managerException
E: 44, 4: method already defined line 41 (function-redefined)

************* Module tuned.gtk.gui_profile_loader
E:126, 4: method already defined line 95 (function-redefined)

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 15:32:01 +01:00
Ondřej Lysoněk
e1632568c6 Fix some pylint errors
Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 12:51:11 +01:00
Ondřej Lysoněk
316f9b5bc3 plugin_loader: Pylint fix
Initialize some attributes of PluginLoader to avoid the following
pylint errors:
E: 21,14: Instance of 'PluginLoader' has no '_namespace' member (no-member)
E: 22,14: Instance of 'PluginLoader' has no '_prefix' member (no-member)
E: 23,14: Instance of 'PluginLoader' has no '_interface' member (no-member)

The attributes were initialized only in subclasses.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 12:45:00 +01:00
Ondřej Lysoněk
43a8b706b1 plugin_bootloader: Rename _grub2_cfg_file attribute
Rename the _grub2_cfg_file attribute to _grub2_cfg_file_name. This is to
avoid the following pylint error message:
An attribute defined in tuned.plugins.plugin_bootloader line 30 hides this method.

The fact that the method was hidden didn't present itself in any way
during execution, because the method had been saved in a collection
(and accessed only from the collection after that) prior to becoming
hidden.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-14 12:44:00 +01:00
Jaroslav Škarvada
e9a352e16f Merge pull request #9 from olysonek/plugin_scsi_host
plugin_scsi_host: Mark _device_is_supported as a classmethod
2017-02-13 22:11:04 +01:00
Jaroslav Škarvada
df5a43ee36 Merge pull request #8 from olysonek/_device_is_supported
plugin_disk: Mark _device_is_supported as a classmethod
2017-02-13 22:09:59 +01:00
Jaroslav Škarvada
c256075c82 Merge pull request #7 from olysonek/readahead_multiply
plugin_disk: Fix setting 'readahead_multiply'
2017-02-13 22:04:02 +01:00
Ondřej Lysoněk
fe889fd1e5 plugin_selinux: Import exceptions
Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-13 17:50:40 +01:00
Ondřej Lysoněk
571910e750 plugin_scsi_host: Mark _device_is_supported as a classmethod
This fixes a pylint error.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-13 17:44:34 +01:00
Ondřej Lysoněk
ad6d18bb62 plugin_disk: Mark _device_is_supported as a classmethod
This fixes a pylint error.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-13 17:36:10 +01:00
Ondřej Lysoněk
1d8b0bb794 plugin_disk: Fix setting 'readahead_multiply'
Provide the correct number of parameters to the '_set_readahead' method.
This fixes a traceback when setting the 'readahead_multiply' option.

I assume the 'sim' parameter to '_set_readahead' means 'simulated' (it
is handled in that sense), so we should set the value to False, because
we are actually enabling/disabling the tunning here.

Signed-off-by: Ondřej Lysoněk <olysonek@redhat.com>
2017-02-13 17:24:40 +01:00
Ondřej Lysoněk
93d872191c Raise NotImplementedError instead of NotImplemented
NotImplemented is not an exception type. This patch makes some pylint
errors go away.
2017-02-13 16:28:33 +01:00
Ondřej Lysoněk
b7d90be093 Remove an unreachable return statement
This also makes a pylint error message go away.
2017-02-13 16:08:11 +01:00
Jaroslav Škarvada
66d550b94d bootloader: improved inheritance
Now it supports the following extended syntax:

parent profile:
[bootloader]
cmdline=opt1 opt2

child profile:
[bootloader]
cmdline1=+opt3
cmdline2=opt4
cmdline3=-opt2

Resulting cmdline:
opt1 opt3 opt4

It recognizes "cmdline*" and postprocess it to extend the inheritance.
It recognizes '+' and '-' on the very beginning of the option and adds
or removes the string from the command line. When using
'+' or '-' it takes the string after the sign till end of the line. To
add option starting with e.g. '+' you need to use '++opt'. If '+' is
omitted in succesive command lines, it's taken implicitly (e.g. opt4).

If you need to replace the whole command line in child profile, use:

[bootloader]
replace=true
cmdline=opt1 opt2

This will drop all 'cmdline*' setting from the parent profile(s).

Resolves: rhbz#1274464

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-02-08 12:19:35 +01:00
Jaroslav Škarvada
e57df645ad man: report bugs pointed to Red Hat bugzilla
Added diacritic marks to contributor names where appropriate to show
correct credit.

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-02-08 12:16:11 +01:00
Jaroslav Škarvada
b088337d3d spec: muted error if there is no selinux support
Resolves: rhbz#1404214

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-01-25 09:55:57 +01:00
Jaroslav Škarvada
82e41184ed Added missing modules.conf
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2017-01-11 15:45:23 +01:00
Luiz Capitulino
efd686427c cpu-partitioning: disable kvmclock sync and ple
Otherwise, a process running on isolated CPUs will be
interrupted by timers or unwanted VM exists.

Resolves: rhbz#1395855

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2017-01-10 13:56:56 +01:00
Luiz Capitulino
e25fcb3164 realtime-virtual-host: use kvm modprobe helpers
Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2017-01-10 13:50:03 +01:00
Luiz Capitulino
e153bf3ba1 profiles/functions: introduce kvm modprobe file helpers
This commit introduces functions to create and delete the
kvm modprobe file used by the realtime profiles.

This is needed because the cpu-partitioning profile wants
the same modprobe file for kvm.

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2017-01-10 13:47:50 +01:00
Luiz Capitulino
11686d59fe cpu-partitioning: enable timer migration
As the cpu-partitioning profile does not use isolcpus=,
the kernel can end up creating long living timers on
nohz_full CPUs during early boot. Those timers will
fire later, causing jitter.

However, recent Linux kernel will always try to migrate
unpinned timers away from nohz_full CPUs when timer
migration is enabled which is what we want.

NOTE: Older kernels would migrate unpinned timers from
      idle CPUs to busy CPUs without regard if the
      CPU is nohz_full. This would certainly cause
      trouble to applications that takes 100% of the
      CPU in user-space (eg. DPDK). So, enabling
      timer migration is only safe on recent kernels.

Resolves: rhbz#1408308

Signed-off-by: Luiz Capitulino <lcapitulino@redhat.com>
2017-01-10 13:44:28 +01:00
Jaroslav Škarvada
0ce452fc2e functions: used sysfs for governor switching by default
Patching of cpuspeed kept for backward compatibility.

Related: rhbz#1313489

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-11-29 16:51:37 +01:00
Jaroslav Škarvada
8b2249bd13 Moved project git to GitHub
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-11-10 15:10:11 +01:00
Jaroslav Škarvada
7e3a4fd791 Makefile: added fallback if RPM macros for systemd are missing
Resolves: https://bugs.gentoo.org/show_bug.cgi?id=563396

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-11-03 14:46:35 +01:00
Jaroslav Škarvada
906b911455 tuned-adm: fixed traceback if non-existent profile is queried through profile_info
Resolves: rhbz#1385145

Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-10-17 16:13:56 +02:00
Jaroslav Škarvada
bac41784a3 cpu-partitioning: removed spurious whitespace
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-10-07 12:29:37 +02:00
Jaroslav Škarvada
ace1ee1fe4 nfv: fixed quoting in manual page
Signed-off-by: Jaroslav Škarvada <jskarvad@redhat.com>
2016-10-07 12:01:40 +02:00