All of lore.kernel.org
 help / color / mirror / Atom feed
* [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.