Rebase to upstream version 0.17
This commit is contained in:
parent
3e2ea53472
commit
4277cf1735
1
.gitignore
vendored
1
.gitignore
vendored
@ -6,3 +6,4 @@
|
|||||||
/tuna-0.14.1.tar.xz
|
/tuna-0.14.1.tar.xz
|
||||||
/tuna-0.15.tar.xz
|
/tuna-0.15.tar.xz
|
||||||
/tuna-0.16.tar.xz
|
/tuna-0.16.tar.xz
|
||||||
|
/tuna-0.17.tar.xz
|
||||||
|
2
sources
2
sources
@ -1 +1 @@
|
|||||||
SHA512 (tuna-0.16.tar.xz) = 971f3e91906c85830d1945fd876a961785d4741f4df53c701b4f8871bd8d2633327cfd994b80687fbb385fb4d3448a9280773c9a0c49db54fe9cf0983a6df80a
|
SHA512 (tuna-0.17.tar.xz) = e04bb56415e702e888d7022342e34bdff19fe978e13793e737613baf48eadcd1b926d414ec8ba5205c9bea4622bf44b9b12e1fe33e1a89b467bd84e17c4643c4
|
||||||
|
@ -1,49 +0,0 @@
|
|||||||
From c9d2fc624905cd0af96ee9f84317d562a042fe14 Mon Sep 17 00:00:00 2001
|
|
||||||
From: Leah Leshchinsky <lleshchi@redhat.com>
|
|
||||||
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 <lleshchi@redhat.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
@ -1,61 +0,0 @@
|
|||||||
From 6e43ce523e7b403cc4f5e94c988d8811d2053e0f Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Kacur <jkacur@redhat.com>
|
|
||||||
Date: Tue, 14 Dec 2021 14:59:50 -0500
|
|
||||||
Subject: [PATCH] tuna: Fix tuna displays incorrect cpu affinity when cpu is
|
|
||||||
offlined
|
|
||||||
|
|
||||||
If we create a process and query it's affinity, both taskset and tuna
|
|
||||||
display the same result, but if we then disable a processor, tuna
|
|
||||||
displays the wrong affinity, as below.
|
|
||||||
|
|
||||||
[jkacur@fionn tuna]$ sha1sum /dev/zero &
|
|
||||||
[1] 10640
|
|
||||||
[jkacur@fionn tuna]$ taskset -p 10640
|
|
||||||
pid 10640's current affinity mask: fff
|
|
||||||
[jkacur@fionn tuna]$ su -c './tuna-cmd.py -t sha1sum -P'
|
|
||||||
Password:
|
|
||||||
thread ctxt_switches
|
|
||||||
pid SCHED_ rtpri affinity voluntary nonvoluntary cmd
|
|
||||||
10640 OTHER 0 0xfff 0 423 sha1sum
|
|
||||||
[jkacur@fionn tuna]$ su -c 'chcpu -d 5'
|
|
||||||
Password:
|
|
||||||
CPU 5 disabled
|
|
||||||
[jkacur@fionn tuna]$ taskset -p 10640
|
|
||||||
pid 10640's current affinity mask: fdf
|
|
||||||
[jkacur@fionn tuna]$ su -c './tuna-cmd.py -t sha1sum -P'
|
|
||||||
Password:
|
|
||||||
thread ctxt_switches
|
|
||||||
pid SCHED_ rtpri affinity voluntary nonvoluntary cmd
|
|
||||||
10640 OTHER 0 0x7df 0 919 sha1sum
|
|
||||||
|
|
||||||
The reason for this is that after tuna gets the affinity for the
|
|
||||||
process, when it converts this to a hex value, it passes the number of
|
|
||||||
enabled processors to hexbitmask in procfs, when what we really need is
|
|
||||||
the number of processors including disabled ones.
|
|
||||||
|
|
||||||
Fix this by querrying SC_NPROCESSORS_CONF and passing that value to
|
|
||||||
hexbitmask.
|
|
||||||
|
|
||||||
Signed-off-by: John Kacur <jkacur@redhat.com>
|
|
||||||
---
|
|
||||||
tuna-cmd.py | 4 +++-
|
|
||||||
1 file changed, 3 insertions(+), 1 deletion(-)
|
|
||||||
|
|
||||||
diff --git a/tuna-cmd.py b/tuna-cmd.py
|
|
||||||
index d209a2e89493..7e33a128d676 100755
|
|
||||||
--- a/tuna-cmd.py
|
|
||||||
+++ b/tuna-cmd.py
|
|
||||||
@@ -199,7 +199,9 @@ def format_affinity(affinity):
|
|
||||||
if len(affinity) <= 4:
|
|
||||||
return ",".join(str(a) for a in affinity)
|
|
||||||
|
|
||||||
- return ",".join(str(hex(a)) for a in procfs.hexbitmask(affinity, get_nr_cpus()))
|
|
||||||
+ # We need the number of cpus on a system, including disabled ones
|
|
||||||
+ ncpus = os.sysconf('SC_NPROCESSORS_CONF')
|
|
||||||
+ return ",".join(str(hex(a)) for a in procfs.hexbitmask(affinity, ncpus))
|
|
||||||
|
|
||||||
|
|
||||||
def ps_show_thread(pid, affect_children, ps, has_ctxt_switch_info, sock_inodes,
|
|
||||||
--
|
|
||||||
2.31.1
|
|
||||||
|
|
@ -1,55 +0,0 @@
|
|||||||
From 532739e58bc36df820a1742489c744e7589221d0 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Kacur <jkacur@redhat.com>
|
|
||||||
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 <jkacur@redhat.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
@ -1,40 +0,0 @@
|
|||||||
From 1dd72d9db74b063c8dd96f13701a14e299abc325 Mon Sep 17 00:00:00 2001
|
|
||||||
From: John Kacur <jkacur@redhat.com>
|
|
||||||
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 <jkacur@redhat.com>
|
|
||||||
---
|
|
||||||
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
|
|
||||||
|
|
16
tuna.spec
16
tuna.spec
@ -1,6 +1,6 @@
|
|||||||
Name: tuna
|
Name: tuna
|
||||||
Version: 0.16
|
Version: 0.17
|
||||||
Release: 6%{?dist}
|
Release: 1%{?dist}
|
||||||
License: GPLv2
|
License: GPLv2
|
||||||
Summary: Application tuning GUI & command line utility
|
Summary: Application tuning GUI & command line utility
|
||||||
URL: https://git.kernel.org/pub/scm/utils/tuna/tuna.git
|
URL: https://git.kernel.org/pub/scm/utils/tuna/tuna.git
|
||||||
@ -14,10 +14,6 @@ Requires: python3-linux-procfs >= 0.6
|
|||||||
# Requires: python-inet_diag
|
# Requires: python-inet_diag
|
||||||
|
|
||||||
# Patches
|
# 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
|
|
||||||
Patch4: tuna-Fix-tuna-displays-incorrect-cpu-affinity-when-c.patch
|
|
||||||
|
|
||||||
%description
|
%description
|
||||||
Provides interface for changing scheduler and IRQ tunables, at whole CPU and at
|
Provides interface for changing scheduler and IRQ tunables, at whole CPU and at
|
||||||
@ -30,10 +26,6 @@ installed.
|
|||||||
|
|
||||||
%prep
|
%prep
|
||||||
%setup -q
|
%setup -q
|
||||||
%patch1 -p1
|
|
||||||
%patch2 -p1
|
|
||||||
%patch3 -p1
|
|
||||||
%patch4 -p1
|
|
||||||
|
|
||||||
%build
|
%build
|
||||||
%py3_build
|
%py3_build
|
||||||
@ -75,6 +67,10 @@ done
|
|||||||
%{_datadir}/polkit-1/actions/org.tuna.policy
|
%{_datadir}/polkit-1/actions/org.tuna.policy
|
||||||
|
|
||||||
%changelog
|
%changelog
|
||||||
|
* Tue Jan 11 2022 Leah Leshchinsky <lleshchi@redhat.com> - 0.17-1
|
||||||
|
- Rebase to upstream version 0.17
|
||||||
|
Resolves: rhbz#2012307
|
||||||
|
|
||||||
* Tue Dec 14 2021 John Kacur <jkacur@redhat.com> - 0.16-6
|
* Tue Dec 14 2021 John Kacur <jkacur@redhat.com> - 0.16-6
|
||||||
- Display correct cpu-affinity when a cpu is disabled
|
- Display correct cpu-affinity when a cpu is disabled
|
||||||
Resolves: rhbz#2032460
|
Resolves: rhbz#2032460
|
||||||
|
Loading…
Reference in New Issue
Block a user