【发布时间】:2021-05-17 07:36:53
【问题描述】:
在 Linux 上,C 函数 sysconf(_SC_NPROCESSORS_CONF) 和 get_nprocs_conf() 返回系统中配置的逻辑处理器的数量,而 sysconf(_SC_NPROCESSORS_ONLN) 和 get_nprocs() 返回当前可用的逻辑处理器的数量。
它们的值可能不同,因为具有热插拔 CPU 的系统可能会添加/移除 CPU。
我想确切知道哪些逻辑处理器可用,因此我可以避免调用 sched_setaffinity() 并将亲缘关系设置为已配置但不可用的逻辑处理器。
是否有用户模式功能可以列出 CPU ID 或提供所有可用 CPU 的掩码?
或者如果没有这样的用户模式功能,假设配置的 CPU 数量和可用的 CPU 数量相同有多安全?
【问题讨论】:
-
对 /proc/cpuinfo 的快速而肮脏的解析对你有用吗?
-
最好不要,因为这涉及到解析文本。我正在寻找一个快速的本机功能。在网上搜索我找到了
for_each_cpu,但我的 Debian Linux 似乎没有(或者它可能只是用于内核开发)。 -
I'm looking for a fast native function编写自己的内核模块。found for_each_cpufor_each_cpu是一个函数inside内核源码。它在外面不可用。 -
我只是在研究如何从用户模式访问这些信息。或者可以安全地假设在用户模式下配置和可用的 CPU 是相同的?