我正在尝试在Linux上设置线程的CPU亲和性.我想知道推荐以下哪种方法:
使用pthread_self()获取线程ID
通过将线程id作为参数传递,使用pthread_setaffinity_np(....)设置CPU关联
使用gettid()调用获取线程ID
通过在进程id的位置传递线程id,使用sched_setaffinity(....)设置CPU关联
PS:设置CPU亲和性后,我打算增加线程的调度优先级.
我正在尝试在linux上使用WBINV指令来清除处理器的L1缓存.
以下程序编译,但在我尝试运行它时会产生分段错误.
int main() {asm ("wbinvd"); return 1;}
我正在使用gcc 4.4.3并在我的x86机器上运行Linux内核2.6.32-33.
处理器信息:Intel(R)Core(TM)2 Duo CPU T5270 @ 1.40GHz
我按如下方式构建了该程序:
$ gcc
$ ./a.out
分段故障
谁能告诉我我做错了什么?我如何让它运行?
PS:我正在运行一些性能测试,并希望确保处理器缓存的先前内容不会影响结果.