[PATCH 0/7] tuna: Add cpuset save/apply functionality

John Kacur <[email protected]> Thu, 16 Jul 2026 13:45:43 -0400
Newsgroups org.kernel.vger.linux-rt-users
Message-ID <[email protected]>
This series adds save/apply functionality for cpuset configurations,
allowing users to save their cpuset setup to YAML files and restore
them after reboots or on other systems.

This builds on earlier cpuset integration work and addresses a common
use case: making cpuset configurations reproducible and portable
across systems. While the primary use case is RT workloads, the
functionality is general-purpose and works for any cpuset-based
CPU partitioning scenario.

Key features:
- Save cpuset definitions to YAML (name, CPUs, memory nodes, partition type)
- Apply profiles to recreate cpusets from YAML
- Automatic filtering of system cpusets (systemd slices/scopes/services)
- Idempotent application (warns if cpusets already exist)
- Full round-trip testing (save → destroy → apply → verify)

Example workflow:
  # Set up cpusets for isolated workload
  tuna cpuset create -c 4-7 -n isolated --isolated
  tuna cpuset create -c 0-3 -n housekeeping

  # Save configuration
  tuna cpuset save my-config.yaml

  # After reboot or on another system
  tuna cpuset apply my-config.yaml -v

The series also includes some cleanup:
- Removes obsolete top-level 'apply' command (not cpuset-specific)
- Simplifies GUI sysctl configuration to monitoring-only
- Removes unused translation files (po/*.po)
- Fixes housekeeping cpuset default (partition=member is correct)
- Renames default profile file to cpuset-profile.yaml for clarity

Testing:
- 12 comprehensive test cases in tests/test_save_apply.py
- Tests cover: save/apply, round-trip, edge cases, error handling
- All tests require root (cpuset operations)
- Tested on Fedora with cgroup v2

John Kacur (7):
  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

 po/LINGUAS               |   3 -
 po/POTFILES.in           |  17 -
 po/ja.po                 | 718 ---------------------------------------
 po/pt_BR.po              | 634 ----------------------------------
 po/zh_CN.po              | 667 ------------------------------------
 tests/README.md          |  52 ++-
 tests/test_cpuset_cli.py |  30 +-
 tests/test_save_apply.py | 300 ++++++++++++++++
 tuna-cmd.py              | 247 +++++++-------
 tuna/config.py           |   2 -
 tuna/gui/profileview.py  |   4 +-
 tuna/profile.py          | 177 ++++++++++
 tuna/tuna_gui.glade      |   8 +-
 13 files changed, 661 insertions(+), 2198 deletions(-)
 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/test_save_apply.py
 create mode 100644 tuna/profile.py

-- 
2.55.0