确定正在运行的线程的套接字/处理器

cdome

我为4个套接字服务器的大型对象(双精度矩阵)编写了NUMA感知缓存。我观察到套接字间通信是我的应用程序的瓶颈。因此,我希望不同套接字上的线程具有单独的矩阵缓存。我已将线程绑定到特定的物理处理器,现在我需要使线程选择正确的缓存。

假设以以下方式定义缓存:

matrix_cache_t *cache[SOCKETS_LIMIT];

我需要每个线程以了解它的插座ID,然后选择正确的缓存,例如cache[0]cache[1]cache[2]cache[3]

我正在使用OpenMP用C编写应用程序,并且该应用程序应该可以在Windows和Linux上运行。

亚历山大·盖斯勒

在Windows下,您可以GetLogicalProcessorInformationEx()通过RelationNumaNodeRelationProcessorPackage关系使用API 它为您提供了各个关系中所有处理器的位,这些位与用于将线程绑定到处理器的亲和力位相对应。

在Linux下,您可以使用 sched_getcpu

#include <stdio.h>
#include <sched.h>

int sched_getcpu();

int main()
{
    (void) printf("cpu %d\n", sched_getcpu());
}

套接字ID可以在/proc/cpuinfo或中找到/sys/devices/system/cpu/cpu0/topology/physical_package_id

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

确定正在运行调用线程的CPU?

来自分类Dev

通过终端监控正在运行的处理器内核数

来自分类Dev

如何关闭正在运行的套接字线程?

来自分类Dev

表示处理器密集型JS功能正在运行(GIF微调器不设置动画)

来自分类Dev

JavaFX套接字处理

来自分类Dev

JavaFX套接字处理

来自分类Dev

确定运行进程的特定处理器

来自分类Dev

如何确定处理器运行的字节序模式?

来自分类Dev

确定运行进程的特定处理器

来自分类Dev

是否有类似Vim的文字处理器?

来自分类Dev

如何确定ARM处理器中使用的内核的线程数。

来自分类Dev

确定方案是否正在运行(Loadrunner)

来自分类Dev

libgdx-确定正在运行的平台

来自分类Dev

libgdx-确定正在运行的平台

来自分类Dev

套接字服务器正在运行,但客户端无法连接

来自分类Dev

终止正在运行的增强线程

来自分类Dev

从正在运行的线程中调用方法

来自分类Dev

停止/取消正在运行的线程

来自分类Dev

调用正在运行的线程C#

来自分类Dev

中止正在运行长查询的线程

来自分类Dev

线程循环,直到进程正在运行

来自分类Dev

当前正在运行的线程列表

来自分类Dev

如何查询正在运行的线程

来自分类Dev

终止正在运行的增强线程

来自分类Dev

正在运行的线程占用大量CPU

来自分类Dev

如何计算正在运行的线程的类

来自分类Dev

使用线程处理时如何在后台关闭正在运行的CMD?

来自分类Dev

多线程程序的处理器数量

来自分类Dev

如何确定调试器中是否正在运行OSX程序?