我的应用程序包含几个延迟临界线程,这些线程“自旋”,即永不阻塞。这样的线程预计将占用100%的一个CPU核心。然而,现代操作系统似乎经常将线程从一个内核转移到另一个内核。Processor::ConnectionThread() while (work) Iterate();}
在任务管理器中,我没有看到"100%被占用内核被100%占用,整个系统负载也减少到34-36%。对于“自旋”<e
我在内核模块中使用kthread_run创建了一个内核线程。这条线很简单,就像吼叫一样。所以我想知道这个内核线程的调度策略和优先级是什么。然后,我尝试打印出这个内核线程的调度策略和优先级,并得到了如下输出。当线程没有SCHED_FIFO或SCHED_RR调度策略时,为什么它会占用cpu呢?{ while
我在Red Hat Enterprise Linux Server 7.7上运行我的应用程序。当我使用htop检查性能时,我发现很少有线程占用太多的CPU。我添加了一些调试日志,发现在我的代码中没有创建具有高CPU的线程。因此,我假设这些CPU贪婪线程是在我正在使用的第三方共享库中创建的。所以有一个问题:假设我有一个线程id (17405)。有没有办法找出是哪个共享库启动了这个线程?
如果这个问题太琐碎,我向您道歉-