我如何了解我是否在最高级别使用我的所有内核

How can i learn if am using all of my cores in the maximum level

本文关键字:我的 内核 最高级 何了解 了解 是否      更新时间:2023-10-16

我有一个时间关键型应用程序,可以处理来自相机的图像序列。它是用C++编写的,它使用Qt,OpenCV和boost库。它将在专用PC上运行。

目前,gui 在主线程中起作用,我打开一个新线程进行图像处理。我没有费心将流程部分划分为线程,因为我认为 OpenCV 已经在这样做了。但是,我无法保持最大可容忍的延迟。

我的

问题是,我如何了解我的应用程序是否使用了最高级别的所有内核?当我查看性能监视器时,我看到的模式真的很奇怪。CPU 使用率可能为 %35-40,所有内核都在工作,但未满负荷运行。

我做错了什么吗?

您没有做错任何事,但是您可以通过以下方式更改代码以充分利用 CPU 内核:

1 - 设置核心关联,以便线程不会从一个核心更改为另一个核心,这可以提高缓存使用率(L1 和 L2)

2 - 将线程调度设置为 FIFO,以便在完成处理之前不会进行上下文切换

3 - 在更高优先级的进程上运行该线程(这将需要进程的root权限)

干杯