如何知道core是否已经绑定了

问题描述 投票:0回答:1
hwloc_obj_t obj = hwloc_get_obj_by_depth(topology, depth_CORE,MyRank%4);
hwloc_cpuset_t cpuset = hwloc_bitmap_dup(obj->cpuset);
hwloc_set_cpubind(topology, cpuset, 0)

hwloc 是否有办法知道线程是否已经绑定到该“cpuset”。 我需要知道这一点的原因: 假设我有一个四核。但是如果我在运行时发出 8 个处理器。所以它恰好将 2 个进程绑定到每个核心。但是,我只想在空闲时将进程绑定到核心。那么我是否可以知道核心已经绑定到进程了。

binding pthreads mpi cpu-cores
1个回答
1
投票

似乎唯一的方法就是枚举所有进程并检查其中一些进程是否绑定到指定的核心。您可以通过检查 hwloc-ps 实用程序的源代码来了解如何做到这一点。它的作用是读取

/proc
文件系统并从中提取进程 PID,然后使用
hwloc_get_proc_cpubind()
获取绑定掩码。这应该适用于 Linux 和 Solaris,以及安装了
/proc
的 *BSD 系统。在 Windows 上,应使用工具帮助库中的系统特定 API 来获取 PID 列表。 OS X 不支持处理器关联。

© www.soinside.com 2019 - 2024. All rights reserved.