gpt4 book ai didi

c++ - 为什么taskset对fedora没有影响?

转载 作者:行者123 更新时间:2023-11-28 03:23:55 25 4
gpt4 key购买 nike

我正在尝试运行一个高度多线程的应用程序,并想用不同的内核(0、1、2、3、4、5、6 ... 12)来衡量它的性能。我用谷歌搜索时看到了任务集,

taskset 0x00000003 ./my_app

但是当我看到 fedora 的系统监视器时,它只显示一个核心正在做 100%,而其他的只有 12%、0%、...等等。有什么办法可以告诉进程在某个核心上运行。我还听说过类似 -t #no of cores 的选项。喜欢

./my_app -t2 

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

最佳答案

taskset 0x00000003 ./my_app 将 my_app 进程的亲缘关系设置为核心 1 和 2。如果您的应用程序是多线程的,线程将继承亲缘关系,但它们在核心 1 和核心 2 之间的分布没有设置。

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

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

关于c++ - 为什么taskset对fedora没有影响?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14669206/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com