为什么任务集对Fedora没有影响

why does taskset have no effect on fedora?

本文关键字:有影响 Fedora 任务集 为什么      更新时间:2023-10-16

我正在尝试运行一个高度多线程的应用程序,并希望使用不同的内核(0,1,2,3,4,5,6 ...12). 我在谷歌上看到了任务集,

taskset 0x00000003 ./my_app

但是当我看到 Fedora 的系统监视器时,它只显示一个核心做 100%,而其他核心只有 12%、0%,...等。有没有办法告诉进程在某些核心上运行。我还听说过像 -t #no 内核这样的选项.喜欢

./my_app -t2 

对于 0 和 1 核.. 但这也没有影响我做错了什么,任何人都可以引导我走向正确的方向。

taskset 0x00000003 ./my_app设置my_app进程与内核 1 和 2 的关联。如果应用程序是多线程的,则线程将继承相关性,但未设置它们在核心 1 和 2 之间的分布。

要设置进程中每个线程的亲和力,您可以在进程运行后使用 taskset(即运行 myapp,检查线程 ID 并为每个线程调用 taskset -pc <core> <tid>),或者在创建线程时使用 sched_setaffinity 设置亲和力,pthread_setaffinity_np如果您使用的是 pthreads 等)。

无论./myapp -t2做什么,都是特定于您的应用程序。