有没有办法制作所有进程,除了我故意设置的进程taskset
或numactl
仅使用某些核心/内存(无需循环每个进程的每个线程并自己设置)?
更多细节:我有 2 个物理 CPU 芯片,每个芯片有 4 个核心/8 个线程,以及总共 256 GB RAM。内存在两个 CPU 内存总线之间的分布不均匀。我希望内存少得多的CPU 成为通用CPU,大多数程序(例如后台任务)都在该CPU 及其内存上运行。然后,在拥有大部分内存的 CPU 上运行特殊任务,我将对其速度进行计时,并希望它们不会出现 CPU 争用、NUMA 或类似情况。
答案1
这可以通过修改systemd配置来实现。首先,通过添加以下内容来更改默认关联设置/etc/systemd/system.conf
:
[Manager]
CPUAffinity=1
然后,在您的设备下,清除亲和力,然后将其重置为您想要的CPU
[Exec]
CPUAffinity=
CPUAffinity=2-4