我正在尝试运行一个高度多线程的应用程序,并想用不同的内核( 0,1,2,3,4,5,6 ... 12)来测量它的性能。我在谷歌上看到了任务集,
taskset 0x00000003 ./my_app但是当我看到fedora的系统监视器时,它只显示一个内核运行100%,而其他内核只运行12%,0%,...etc。有没有办法告诉进程在特定的内核上运行。我也听说过像-t #no of cores这样的选项。喜欢
./my_app -t2 对于0和1核..但是这也没有效果,我做错了什么,请任何人把我引向正确的方向。
发布于 2013-02-03 15:25:20
taskset 0x00000003 ./my_app将my_app进程的亲和性设置为核心1和2。如果您的应用程序是多线程的,则线程将继承亲和性,但不会设置它们在核心1和2之间的分布。
要设置进程内每个线程的亲和性,您可以在进程运行后使用taskset (例如,运行myapp,检查线程if并为每个线程调用taskset -pc <core> <tid> ),或者在创建线程时使用sched_setaffinity设置亲和性,如果使用pthread等,则使用pthread_setaffinity_np设置亲和性。
无论./myapp -t2做什么,都是特定于您的应用程序的。
https://stackoverflow.com/questions/14669206
复制相似问题