* [ANNOUNCE] tuna v0.21 released
@ 2026-07-28 21:36 John Kacur
2026-07-31 9:40 ` David Runge
0 siblings, 1 reply; 4+ messages in thread
From: John Kacur @ 2026-07-28 21:36 UTC (permalink / raw)
To: linux-rt-users; +Cc: Clark Williams, linux-kernel
Major Features:
- Complete cpuset support for CPU isolation using cgroup v2
- Commands: create, list, destroy, move, show, status, modify
- save/apply functionality for persisting cpuset configurations
- Integration with isolate, move, run, and show_threads commands
- NUMA-aware memory node assignment
- Process blocklist to protect critical system processes
- Comprehensive testing infrastructure with unittest framework
- Context-aware default paths for cpuset profiles (git vs production)
- Intelligent path resolution for finding configuration files
Code Quality Improvements:
- Centralized version management (single source in tuna/version.py)
- Input validation for CPU numbers and RT priorities
- Eliminated global variables and argparse side effects
- Replace bare except clauses with specific exception types
- Enhanced kernel thread descriptions in what_is command
Documentation:
- Updated man page for cpuset functionality and recent changes
- Comprehensive test documentation
- AGENTS.md guide for AI coding assistants
Cleanup:
- Removed obsolete ChangeLog file (not updated since 2013)
- Removed obsolete tuna apply functionality
- Simplified GUI to monitoring-only functionality
Full commit list below.
To fetch tuna:
Clone one of the following
git://git.kernel.org/pub/scm/utils/tuna/tuna.git
https://git.kernel.org/pub/scm/utils/tuna/tuna.git
https://kernel.googlesource.com/pub/scm/utils/tuna/tuna.git
Branch: main
Tag: v0.20
Tarballs are here:
https://kernel.org/pub/software/utils/tuna/
older ones are here
https://kernel.org/pub/software/utils/tuna/older
Enjoy!
John Kacur
John Kacur (63):
tuna: Disable the tuna apply functionality
tuna: Remove tuna apply from the man page
tuna: Print warning if setting affinity results in EPERM and continue
tuna: Add testing infrastructure using unittest framework
tuna: Fix setuptools deprecation warnings for license field
tuna: Replace bare except clauses with specific exception types
tuna: Eliminate side effects from argparse by deferring type
conversions
tuna: Eliminate global ps and irqs variables
tuna: Add .local/ directory to .gitignore
tuna: Add tests for converter functions and update test README
tuna: Update copyright notices to reflect current maintainership
tuna: Add AGENTS.md guide for AI coding assistants
tuna: Warn when user-specified patterns match zero threads or IRQs
tuna: Suppress output when pattern matches zero results
tuna: Make warnings opt-in with -w/--warn flag
tuna: Enhance what_is command with new kernel thread descriptions and
usability improvements
tuna: Add comprehensive docstrings to converter functions
tuna: Add centralized input validation for CPU numbers and RT
priorities
tuna: Add cpuset module for CPU isolation using cgroup v2
tuna: Add comprehensive test suite for cpuset module
tuna: Add CLI commands for cpuset management
tuna: Add comprehensive test suite for cpuset CLI commands
tuna: Add comprehensive test targets and documentation
tuna: Add cpuset move command for process migration
tuna: Add comprehensive tests for cpuset move command
tuna: Add NUMA-aware memory node assignment for cpusets
tuna: Add tests for NUMA-aware memory node assignment
tuna: Add process blocklist to prevent shutdown issues
tuna: Add memory nodes and blocklist warnings to cpuset list
tuna: Add cpuset show and status commands
tuna: Add tests for cpuset show and status commands
tuna: Dynamically find free CPU for test_cpu_exclusive
tuna: Change cpuset commands to skip empty by default
tuna: Add cpuset modify command
tuna: Add tests for cpuset modify command
tuna: Fix test_modify_cpus_empty_result for kernel constraints
tuna: Add --cpuset option to move command
tuna: Add tests for tuna move --cpuset command
tuna: Add --cpuset option to isolate command
tuna: Add tests for isolate --cpuset functionality
tuna: Document high-level workflow vs manual primitives for cpusets
tuna: Add --cpuset filter option to show_threads command
tuna: Add tests for show_threads --cpuset filter
tuna: Enhance show_threads -G to display cpuset names
tuna: Add tests for cpuset name display in show_threads -G
tuna: Add --cpuset option to run command
tuna: Add tests for run --cpuset functionality
tuna: Update man page for cpusets and current functionality
tuna: Add --show-system flag to filter systemd cpusets
tuna: Add cpuset save/apply functionality
tuna: Add comprehensive tests for save/apply functionality
tuna: Remove obsolete apply command functionality
tuna: Simplify GUI to monitoring-only functionality
tuna: Change housekeeping cpuset default to partition=member
tuna: Change default profile filename to cpuset-profile.yaml
tuna: Improve process migration messaging clarity
tuna: Allow cpuset destroy to accept multiple names
tests: Update cpuset_destroy test calls for new parameter name
tuna: Remove obsolete ChangeLog file
tuna: Use context-aware default path for cpuset profiles
tuna: Update man page for cpuset save/apply and recent changes
tuna: Add intelligent path resolution for cpuset apply
tuna: Get the tuna version from a single source
.gitignore | 1 +
AGENTS.md | 415 ++++++++
ChangeLog | 152 ---
Makefile | 33 +
docs/tuna.8 | 261 ++++-
po/LINGUAS | 3 -
po/POTFILES.in | 17 -
po/ja.po | 718 --------------
po/pt_BR.po | 634 ------------
po/zh_CN.po | 667 -------------
pyproject.toml | 8 +-
setup.py | 5 +-
tests/README.md | 542 +++++++++++
tests/run_tests.sh | 25 +
tests/test_converters.py | 160 ++++
tests/test_cpuset.py | 944 ++++++++++++++++++
tests/test_cpuset_cli.py | 1370 ++++++++++++++++++++++++++
tests/test_eperm_handling.py | 87 ++
tests/test_process_blocklist.py | 139 +++
tests/test_save_apply.py | 300 ++++++
tests/test_show_threads_cgroups.py | 199 ++++
tests/test_show_threads_cpuset.py | 245 +++++
tuna-cmd.py | 1433 +++++++++++++++++++++++++---
tuna/__init__.py | 3 +-
tuna/config.py | 2 -
tuna/cpuset.py | 820 ++++++++++++++++
tuna/cpuset_README.md | 597 ++++++++++++
tuna/gui/__init__.py | 3 +-
tuna/gui/profileview.py | 4 +-
tuna/help.py | 27 +-
tuna/profile.py | 177 ++++
tuna/tuna.py | 191 +++-
tuna/tuna_gui.glade | 8 +-
tuna/version.py | 7 +
34 files changed, 7794 insertions(+), 2403 deletions(-)
create mode 100644 AGENTS.md
delete mode 100644 ChangeLog
delete mode 100644 po/LINGUAS
delete mode 100644 po/POTFILES.in
delete mode 100644 po/ja.po
delete mode 100644 po/pt_BR.po
delete mode 100644 po/zh_CN.po
create mode 100644 tests/README.md
create mode 100755 tests/run_tests.sh
create mode 100644 tests/test_converters.py
create mode 100644 tests/test_cpuset.py
create mode 100644 tests/test_cpuset_cli.py
create mode 100644 tests/test_eperm_handling.py
create mode 100644 tests/test_process_blocklist.py
create mode 100644 tests/test_save_apply.py
create mode 100644 tests/test_show_threads_cgroups.py
create mode 100755 tests/test_show_threads_cpuset.py
create mode 100644 tuna/cpuset.py
create mode 100644 tuna/cpuset_README.md
create mode 100644 tuna/profile.py
create mode 100644 tuna/version.py
--
2.55.0
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [ANNOUNCE] tuna v0.21 released
2026-07-28 21:36 [ANNOUNCE] tuna v0.21 released John Kacur
@ 2026-07-31 9:40 ` David Runge
2026-08-01 3:24 ` John Kacur
0 siblings, 1 reply; 4+ messages in thread
From: David Runge @ 2026-07-31 9:40 UTC (permalink / raw)
To: John Kacur; +Cc: linux-rt-users, Clark Williams
[-- Attachment #1: Type: text/plain, Size: 443 bytes --]
On 2026-07-28 17:36:31 (-0400), John Kacur wrote:
> Tag: v0.20
Hi John,
congrats on the new release!
As tag v0.20 is from nine months ago, I guess you meant v0.21?
However, this tag does not exist yet. Did you forget to push it?
FWIW: On Arch Linux we are using the tags of the tuna repository to be informed
of new versions of the project and the auto-generated tarballs, made available
via the cgit interface to build from.
Best,
David
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [ANNOUNCE] tuna v0.21 released
2026-07-31 9:40 ` David Runge
@ 2026-08-01 3:24 ` John Kacur
2026-08-01 9:37 ` David Runge
0 siblings, 1 reply; 4+ messages in thread
From: John Kacur @ 2026-08-01 3:24 UTC (permalink / raw)
To: David Runge; +Cc: John Kacur, linux-rt-users, Clark Williams
On Fri, 31 Jul 2026, David Runge wrote:
> On 2026-07-28 17:36:31 (-0400), John Kacur wrote:
> > Tag: v0.20
>
> Hi John,
>
> congrats on the new release!
>
> As tag v0.20 is from nine months ago, I guess you meant v0.21?
> However, this tag does not exist yet. Did you forget to push it?
>
Yes, I forgot to push it. I did so now. Let me know if it works for you.
John Kacur
^ permalink raw reply [flat|nested] 4+ messages in thread
* Re: [ANNOUNCE] tuna v0.21 released
2026-08-01 3:24 ` John Kacur
@ 2026-08-01 9:37 ` David Runge
0 siblings, 0 replies; 4+ messages in thread
From: David Runge @ 2026-08-01 9:37 UTC (permalink / raw)
To: John Kacur; +Cc: John Kacur, linux-rt-users, Clark Williams
[-- Attachment #1: Type: text/plain, Size: 2953 bytes --]
On 2026-07-31 23:24:53 (-0400), John Kacur wrote:
>
>
> On Fri, 31 Jul 2026, David Runge wrote:
>
> > On 2026-07-28 17:36:31 (-0400), John Kacur wrote:
> > > Tag: v0.20
> >
> > Hi John,
> >
> > congrats on the new release!
> >
> > As tag v0.20 is from nine months ago, I guess you meant v0.21?
> > However, this tag does not exist yet. Did you forget to push it?
> >
>
> Yes, I forgot to push it. I did so now. Let me know if it works for you.
Thanks for pushing the tag!
I unfortunately now run into a build error, because with tuna 0.21 you have
introduced a circular dependency on tuna itself [1].
```bash
python -m build --wheel --no-isolation
* Getting build dependencies for wheel...
Traceback (most recent call last):
File "/usr/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py", line 389, in <module>
main()
~~~~^^
File "/usr/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py", line 373, in main
json_out["return_val"] = hook(**hook_input["kwargs"])
~~~~^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/site-packages/pyproject_hooks/_in_process/_in_process.py", line 143, in get_requires_for_build_wheel
return hook(config_settings)
File "/usr/lib/python3.14/site-packages/setuptools/build_meta.py", line 333, in get_requires_for_build_wheel
return self._get_build_requires(config_settings, requirements=[])
~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/usr/lib/python3.14/site-packages/setuptools/build_meta.py", line 301, in _get_build_requires
self.run_setup()
~~~~~~~~~~~~~~^^
File "/usr/lib/python3.14/site-packages/setuptools/build_meta.py", line 317, in run_setup
exec(code, locals())
~~~~^^^^^^^^^^^^^^^^
File "<string>", line 9, in <module>
ModuleNotFoundError: No module named 'tuna'
ERROR Backend subprocess exited when trying to invoke get_requires_for_build_wheel
```
Due to this recent change [1] the build process now has to include the current
working directory in `$PYTHONPATH` to make this work:
```bash
PYTHONPATH="$PWD" python -m build --wheel --no-isolation
```
This is a bit uncommon and I believe that it might be more worthwhile setting
the version differently, e.g. using setuptools-scm (see e.g. the pyproject.tom
example for setuptools [2]) or other PEP517 build backends.
Relatedly, maybe other build backends than setuptools might be an option,
to only rely on pyproject.toml going forward and have better versioning
integration?
(I think even with setuptools it is not really required to have a setup.py
anymore, but I'm not following that ecosystem too closely).
Best,
David
[1]: https://git.kernel.org/pub/scm/utils/tuna/tuna.git/commit/setup.py?id=cb5593a2be9c26c8865f46bf29723c1ce93890aa
[2]: https://setuptools.pypa.io/en/latest/userguide/pyproject_config.html
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 4+ messages in thread
end of thread, other threads:[~2026-08-01 9:38 UTC | newest]
Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-07-28 21:36 [ANNOUNCE] tuna v0.21 released John Kacur
2026-07-31 9:40 ` David Runge
2026-08-01 3:24 ` John Kacur
2026-08-01 9:37 ` David Runge
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.