diff --git a/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch b/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch new file mode 100644 index 0000000..da88748 --- /dev/null +++ b/SOURCES/tuna-Add-distinction-between-spread-and-move-to-erro.patch @@ -0,0 +1,49 @@ +From c9d2fc624905cd0af96ee9f84317d562a042fe14 Mon Sep 17 00:00:00 2001 +From: Leah Leshchinsky +Date: Wed, 6 Oct 2021 13:21:50 -0400 +Subject: [PATCH] tuna: Add distinction between --spread and --move to error + message + +Currently, the command `tuna --cpus=CPU-LIST --spread` generates an +error with the warning "tuna: --move requires a list of threads/irqs!". +Similarly, when the command `tuna --threads=THREAD-LIST --spread` is +run, it generates the warning "tuna: --move requires a cpu list!". + +This can be confusing to the user, especially with commands that use both +the "--spread" and "--move" flags. The warning should specify "--spread" +when that is the source of the error. + +Check whether the argument is a move or spread and update the warning +string accordingly. + +Signed-off-by: Leah Leshchinsky +--- + tuna-cmd.py | 7 +++---- + 1 file changed, 3 insertions(+), 4 deletions(-) + +diff --git a/tuna-cmd.py b/tuna-cmd.py +index 8617966..8dfad9e 100755 +--- a/tuna-cmd.py ++++ b/tuna-cmd.py +@@ -633,15 +633,14 @@ def main(): + elif o in ("-n", "--show_sockets"): + show_sockets = True + elif o in ("-m", "--move", "-x", "--spread"): ++ spread = o in ("-x", "--spread") + if not cpu_list: +- print("tuna: --move " + _("requires a cpu list!")) ++ print("tuna: %s " % ("--spread" if spread else "--move") + _("requires a cpu list!")) + sys.exit(2) + if not (thread_list or irq_list): +- print("tuna: --move " + _("requires a list of threads/irqs!")) ++ print("tuna: %s " % ("--spread" if spread else "--move") + _("requires a list of threads/irqs!")) + sys.exit(2) + +- spread = o in ("-x", "--spread") +- + if thread_list: + tuna.move_threads_to_cpu(cpu_list, thread_list, spread=spread) + +-- +2.27.0 + diff --git a/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch b/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch new file mode 100644 index 0000000..e983ecc --- /dev/null +++ b/SOURCES/tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch @@ -0,0 +1,55 @@ +From 532739e58bc36df820a1742489c744e7589221d0 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Wed, 10 Nov 2021 15:58:44 -0500 +Subject: [PATCH] tuna: Make it clear that include and isolate affects IRQs in + help + +Make it clear in the online help (-h) and in the manpage +that +-i --isolate +-I --include + +affects IRQs as well as threads + +Signed-off-by: John Kacur +--- + docs/tuna.8 | 4 ++-- + tuna-cmd.py | 4 ++-- + 2 files changed, 4 insertions(+), 4 deletions(-) + +diff --git a/docs/tuna.8 b/docs/tuna.8 +index b6431be5e117..bd6299b5a771 100644 +--- a/docs/tuna.8 ++++ b/docs/tuna.8 +@@ -26,10 +26,10 @@ Apply changes described in profile + List preloaded profiles + .TP + \fB\-i\fR, \fB\-\-isolate\fR +-Move all threads away from CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR. ++Move all allowed threads and IRQs away from CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR. + .TP + \fB\-I\fR, \fB\-\-include\fR +-Allow all threads to run on CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR. ++Allow all allowed threads and IRQs to run on CPU\-LIST. Requires \fB\-c\fR or \fB-S\fR. + .TP + \fB\-m\fR, \fB\-\-move\fR + Move selected entities to CPU\-LIST. Requires \fB\-c\fR and either \fB-t\fR or \fB-q\fR. +diff --git a/tuna-cmd.py b/tuna-cmd.py +index 46ce86efa036..d209a2e89493 100755 +--- a/tuna-cmd.py ++++ b/tuna-cmd.py +@@ -63,9 +63,9 @@ def usage(): + _('Explicitly disable usage of perf in GUI for process view'))) + print(fmt % ('-f, --filter', + _('Display filter the selected entities'))) +- print(fmt % ('-i, --isolate', _('Move all threads away from %(cpulist)s') % ++ print(fmt % ('-i, --isolate', _('Move all allowed threads and IRQs away from %(cpulist)s') % + {"cpulist": _('CPU-LIST')})) +- print(fmt % ('-I, --include', _('Allow all threads to run on %(cpulist)s') % ++ print(fmt % ('-I, --include', _('Allow all allowed threads and IRQs to run on %(cpulist)s') % + {"cpulist": _('CPU-LIST')})) + print(fmt % ('-K, --no_kthreads', + _('Operations will not affect kernel threads'))) +-- +2.31.1 + diff --git a/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch b/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch new file mode 100644 index 0000000..1f3c408 --- /dev/null +++ b/SOURCES/tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch @@ -0,0 +1,40 @@ +From 1dd72d9db74b063c8dd96f13701a14e299abc325 Mon Sep 17 00:00:00 2001 +From: John Kacur +Date: Thu, 28 Oct 2021 00:50:12 -0400 +Subject: [PATCH 1/2] tuna: Print warning if setting affinity results in EBUSY + and continue + +When trying to isolate a CPU, if a device uses SCHED_DEADLINE and admission +control is enabled, setting the affinity will result in the error EBUSY. + +tuna should print a warning that this pid could not be moved, and +continue. + +The user can either ignore the warning or use other measures to isolate +the cpu such as booting with isolcpus or turning off admission control +and rerunning the tuna isolate command and then turning admission +control back on. + +Signed-off-by: John Kacur +--- + tuna/tuna.py | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/tuna/tuna.py b/tuna/tuna.py +index 591206d9b4e1..f25eb3d10923 100755 +--- a/tuna/tuna.py ++++ b/tuna/tuna.py +@@ -360,6 +360,10 @@ def isolate_cpus(cpus, nr_cpus): + if err.args[0] == errno.EINVAL: + print("Function:", fname, ",", err.strerror, file=sys.stderr) + sys.exit(2) ++ if err.args[0] == errno.EBUSY: ++ comm = ps[pid].stat["comm"] ++ print(f'Warning: Unable to isolate pid {pid} [{comm}]') ++ continue + raise err + + if "threads" not in ps[pid]: +-- +2.31.1 + diff --git a/SPECS/tuna.spec b/SPECS/tuna.spec index 2bbb9a2..fc8bd0c 100644 --- a/SPECS/tuna.spec +++ b/SPECS/tuna.spec @@ -1,6 +1,6 @@ Name: tuna Version: 0.16 -Release: 2%{?dist} +Release: 5%{?dist} License: GPLv2 Summary: Application tuning GUI & command line utility URL: https://git.kernel.org/pub/scm/utils/tuna/tuna.git @@ -14,6 +14,9 @@ Requires: python3-linux-procfs >= 0.6 # Requires: python-inet_diag # Patches +Patch1: tuna-Print-warning-if-setting-affinity-results-in-EBUSY.patch +Patch2: tuna-Add-distinction-between-spread-and-move-to-erro.patch +Patch3: tuna-Make-it-clear-that-include-and-isolate-affects-IRQs.patch %description Provides interface for changing scheduler and IRQ tunables, at whole CPU and at @@ -26,6 +29,9 @@ installed. %prep %setup -q +%patch1 -p1 +%patch2 -p1 +%patch3 -p1 %build %py3_build @@ -67,6 +73,19 @@ done %{_datadir}/polkit-1/actions/org.tuna.policy %changelog +* Thu Nov 11 2021 John Kacur - 0.16-5 +- Make it clear in online help and man pages that --include and --isolate + affect IRQs as well as threads +Resolves: rhbz#2022142 + +* Tue Nov 02 2021 Leah Leshchinsky - 0.16-4 +- Add distinction between spread and move to error message +Resolves: rhbz#2012243 + +* Thu Oct 28 2021 John Kacur - 0.16-3 +- Print warning if setaffinity causes EBUSY and continue +Resolves: rhbz#2016540 + * Tue Aug 10 2021 Mohan Boddu - 0.16-2 - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags Related: rhbz#1991688