我有一个多线程程序(xgboost),在多核(40核,redhat)服务器中运行在Linux上的openmp,但是当我尝试观察"top"命令使用的执行和CPU资源时,我只看到一个内核被我的可执行程序占用。
Linux 在使用 openmp 执行多线程程序时是否只使用一个内核?如果是这种情况,那么多线程实际上是如何实现的呢?只有一个核心?
另外,一个内核是否能够在多个线程上工作或只在一个线程上工作?在 Linux 中,默认情况下,多线程是否仅由一个内核处理?我知道(不是100%确定)多进程可以由多个内核处理。
根据顶部,CPU 使用率是否为>100%?当您在顶部时按"1"以查看 CPU 使用情况。
-eLf 从命令行,您可以看到所有进程及其线程(ps 术语中的 LWP 轻量级进程)。您可以使用 grep 过滤不相关的进程: ps -eLf |格雷普your_program_name