一尘不染

如何从用户空间应用程序(Linux,C)中获取CPU内核号?

linux

大概有一个库或简单的asm blob,可以获取我正在执行的当前CPU的编号。


阅读 433

收藏
2020-06-02

共1个答案

一尘不染

使用sched_getcpu以确定在其上调用线程运行的CPU。请参阅man getcpu(系统调用)和man sched_getcpu(库包装器)。但是,请注意其内容:

仅在调用时保证放置在cpu中的信息是最新的:除非已使用sched_setaffinity(2)修复了CPU关联性,否则内核可能随时更改CPU。(通常不会发生这种情况,因为调度程序会尝试最大程度地减少CPU之间的移动以保持高速缓存保持高速,但有可能这样做。)当cpu和node不再是当前的CPU和节点时,调用者必须准备好处理这种情况。

2020-06-02