如何检测isolcpus是否被激活?

Modified on: Sat, 30 Jun 2018 12:16:30 +0800

如何检测isolcpus是否已激活以及cpus,例如您在服务器上第一次连接时。
条件:

不会产生任何进程来查看它的迁移位置。

用例是6核i7上的isolcpus=1-7,似乎在启动时没有激活isolcpus,我想知道它是否可以从/proc//sys或任何可在用户空间中读取的内核,以提供isolcpus激活的明确状态以及涉及哪些cpu。
或者甚至读取isolcpus首先关注的调度程序的活动设置。

考虑正常运行时间是如此之大,dmesg不再显示启动日志以检测启动时的任何错误。
不会接受“查看内核cmd行”这样的基本答案:)

作者:,netmonk

最佳答案

你要找的内容应该在

中找到

/sys/devices/system/cpu/isolated

相反

/sys/devices/system/cpu/possible

drivers/base/cpu.c我们看到显示的源是内核变量cpu_isolated_map

/sys/devices/system/cpu/isolated

cpu_isolated_map正是在启动时由kernel/sched/core.c设置的:

/sys/devices/system/cpu/possible


但是正如您所观察到的,有人可能已经修改了进程的关联性,包括守护程序生成的进程,cronsystemd等等。如果发生这种情况,将生成继承修改的关联掩码的新进程,而不是isolcpus设置的进程。

所以上面会根据您的要求为您提供isolcpus,但这可能仍然无济于事。

假设你发现isolcpus已经发布但没有“采取”,这个不受欢迎的行为可以由某个进程派生,意识到它必然会被绑定只有CPU=0,认为它错误地处于单处理器模式,并通过重置关联掩码帮助尝试“设置正确”。如果是这种情况,您可以尝试隔离CPUS 0-5而不是1-6,并查看这是否有效。

作者:,LSerni

相关问答

添加新评论