leonarski_f and Claude Opus 5.5
3c5ff3f5df
rugnux: on a machine of several sockets, keep to the sockets the GPUs are on
...
With -N left to choose, rugnux now confines the process (main thread, the CPUs
RestoreThreadAffinity hands back, and what AvailableCpus counts) to the CPUs of
the packages its cards hang off, and sizes its threads to them. Nothing changes
where the allowed CPUs sit in one package, there is no card or a card's NUMA
node is unknown, or the cards' packages already hold every allowed CPU. A mask
set from outside (taskset, numactl, a cpuset) is kept: the decision works
within it. An explicit -N keeps the old behaviour.
On a 48-CPU server with four cards on two of its four NUMA nodes, a rotation
run took 24.5-24.7 s confined to those nodes' 24 CPUs against 27.7-27.9 s on
all 48 (scaling and merging 8.1 -> 6.2 s), and two larger sets moved
95-99 -> 84-87 s and 131-135 -> 113-115 s. On a single-socket machine this is
a no-op.
The decision itself (CpusOfGpuPackages) is a pure function, tested on
synthetic 4-package, 2-package hyper-threaded, cards-on-both, no-card and
restricted-mask topologies.
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01EizBKhTqrAYago9KJG3dA3
2026-10-11 09:27:32 +02:00
..
2026-08-13 17:03:10 +02:00
2026-09-29 15:57:32 +02:00
2026-07-19 09:39:28 +02:00
2026-10-08 10:56:34 +02:00
2026-10-08 10:56:34 +02:00
2026-10-08 10:56:34 +02:00
2025-05-05 19:32:22 +02:00
2026-09-29 15:57:32 +02:00
2026-10-08 12:33:34 +02:00
2026-09-02 21:17:31 +02:00
2026-10-11 02:21:32 +02:00
2026-04-29 09:50:50 +02:00
2026-09-29 15:57:32 +02:00
2026-10-09 21:18:12 +02:00
2026-10-07 14:05:37 +02:00
2026-09-15 17:09:31 +02:00
2026-09-15 17:09:31 +02:00
2026-10-06 14:03:18 +02:00
2026-09-29 15:57:32 +02:00
2026-10-06 14:03:18 +02:00
2026-10-06 14:03:18 +02:00
2026-10-06 14:03:18 +02:00
2026-10-06 14:03:18 +02:00
2026-10-08 17:03:09 +02:00
2026-08-13 17:03:10 +02:00
2026-08-13 17:03:10 +02:00
2026-10-08 06:46:28 +02:00
2026-09-02 21:17:31 +02:00
2026-09-29 15:57:32 +02:00
2026-05-28 18:48:35 +02:00
2025-05-05 19:32:22 +02:00
2026-10-09 21:18:12 +02:00
2025-06-10 18:14:04 +02:00
2026-10-06 14:03:18 +02:00
2026-09-02 21:17:31 +02:00
2026-09-29 15:57:32 +02:00
2026-10-10 18:56:00 +02:00
2026-09-29 15:57:32 +02:00
2026-10-08 22:53:01 +02:00
2025-11-19 09:40:50 +01:00
2026-04-29 09:50:50 +02:00
2026-08-25 08:21:39 +02:00
2026-09-02 21:17:31 +02:00
2026-09-22 06:48:37 +02:00
2026-09-02 21:17:31 +02:00
2026-09-02 21:17:31 +02:00
2026-08-13 17:03:10 +02:00
2026-05-08 11:39:51 +02:00
2024-11-22 21:25:20 +01:00
2025-10-20 20:43:44 +02:00
2025-04-14 11:52:06 +02:00
2025-11-09 12:42:27 +01:00
2025-09-08 20:28:59 +02:00
2025-09-08 20:28:59 +02:00
2025-03-24 12:16:33 +01:00
2026-09-22 06:48:37 +02:00
2026-10-06 14:03:18 +02:00
2025-06-18 15:19:18 +02:00
2026-09-02 21:17:31 +02:00
2026-09-09 07:25:13 +02:00
2025-12-12 21:24:20 +01:00
2026-02-01 13:29:33 +01:00
2026-10-08 06:53:40 +02:00
2026-03-03 22:24:44 +01:00
2025-11-19 09:40:50 +01:00
2026-08-25 08:21:39 +02:00
2026-09-29 15:57:32 +02:00
2026-08-13 17:03:10 +02:00
2026-10-10 10:47:55 +02:00
2025-05-05 19:32:22 +02:00
2024-11-22 21:25:20 +01:00
2026-08-25 08:21:39 +02:00
2026-10-09 21:15:01 +02:00
2026-06-15 20:24:15 +02:00
2026-09-29 15:57:32 +02:00
2026-06-23 20:29:49 +02:00
2026-07-19 09:39:28 +02:00
2026-09-15 17:09:31 +02:00
2024-11-22 21:25:20 +01:00
2026-09-29 15:57:32 +02:00
2026-06-23 20:29:49 +02:00
2026-09-29 15:57:32 +02:00
2026-09-09 07:25:13 +02:00
2026-10-08 17:03:09 +02:00
2026-09-29 15:57:32 +02:00
2026-09-29 15:57:32 +02:00
2024-11-22 21:25:20 +01:00
2026-10-11 02:21:32 +02:00
2026-10-09 12:38:37 +02:00
2026-10-07 14:05:37 +02:00
2026-10-10 20:47:04 +02:00
2026-10-10 13:35:49 +02:00
2024-12-04 20:58:51 +01:00
2025-03-02 13:15:28 +01:00
2026-06-08 08:30:35 +02:00
2026-08-25 08:21:39 +02:00
2026-10-08 07:27:25 +02:00
2026-10-11 09:27:32 +02:00
2025-11-09 12:42:27 +01:00
2026-08-13 17:03:10 +02:00
2026-09-29 15:57:32 +02:00
2026-10-11 07:12:05 +02:00
2026-08-27 22:16:54 +02:00
2024-11-22 21:25:20 +01:00
2025-11-09 12:42:27 +01:00
2025-10-01 22:54:40 +02:00
2026-10-10 13:35:49 +02:00
2026-09-02 21:17:31 +02:00
2026-10-10 21:15:32 +02:00
2026-09-22 06:48:37 +02:00
2026-09-02 21:17:31 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-06-23 20:29:49 +02:00
2026-10-10 18:56:00 +02:00
2026-10-10 09:33:34 +02:00
2026-09-29 15:57:32 +02:00
2026-10-10 15:18:14 +02:00
2026-10-09 21:42:33 +02:00
2026-09-15 17:09:31 +02:00
2026-10-06 14:03:18 +02:00
2026-09-29 15:57:32 +02:00
2026-09-09 07:25:13 +02:00
2026-10-07 14:05:37 +02:00
2026-08-13 17:03:10 +02:00
2026-10-06 14:03:18 +02:00
2026-09-29 15:57:32 +02:00
2026-03-02 15:57:12 +01:00
2026-10-08 14:55:56 +02:00
2026-09-02 21:17:31 +02:00
2026-09-29 15:57:32 +02:00
2026-08-13 17:03:10 +02:00
2026-10-10 21:11:09 +02:00
2026-06-23 20:29:49 +02:00
2026-04-16 11:59:59 +02:00
2026-06-23 20:29:49 +02:00
2025-11-02 13:45:57 +01:00
2025-12-12 21:24:20 +01:00
2026-09-22 06:48:37 +02:00
2026-10-09 19:40:22 +02:00
2026-05-28 18:48:35 +02:00
2026-10-08 07:07:32 +02:00
2026-10-09 18:51:56 +02:00
2026-10-08 12:36:40 +02:00
2026-09-02 21:17:31 +02:00
2026-10-06 14:03:18 +02:00
2026-10-06 14:03:18 +02:00
2026-09-15 17:09:31 +02:00
2026-03-26 20:50:33 +01:00
2024-11-22 21:25:20 +01:00
2026-09-29 15:57:32 +02:00