我如何将CPU控制在80%,并在Debian 10上的4个vCore上平衡我的C++函数



我编写了一个处理器密集型计算函数,将CPU固定在一个vCore上的100%。这是我租用的虚拟机服务器。

我们有8个vCore,但我想将CPU使用率限制在80%,并在4个vCore之间实现负载平衡。我通常会为函数分配5-10 GB的RAM用于计算。

操作系统是Debian 10,我的规格是24GB RAM、8vCore和250GB SSD。

语言是C++。我不知道是在代码中这样做更好,还是在操作系统级别这样做更好。我该如何最好地做到这一点?

我想将CPU使用率限制在80%

这80%是CPU使用量相对于总挂钟的平均值,这是一个估计。物理CPU核心有两种状态:做某事或不做某事。

所以你至少需要找出一个在这里有意义的要求。例如,每处理100个项目,你就有20%的时间睡眠(因此平均睡眠时间为80%(。

当然,这很可能是一个愚蠢的要求,源于对你试图解决的实际问题的误解(也许你在线程池线程负载平衡方面失败了,它们占用了主线程的处理时间?(,但如果这是你的编码模式,那就继续用睡眠来刺激你的代码吧。他们解雇你后会雇佣的人只会去掉睡眠,让软件运行速度快20%。

4个vCores 的负载平衡

更多的流行语而不了解手头的问题空间。这很糟糕,因为多线程和同步是非常困难的,如果你甚至不知道自己在做什么,你还不如把代码留给单线程。你个人会破坏你的代码试图做其他的事情。

顺便说一句,负载平衡只不过是让你的代码成为多线程的,并以平衡的方式使用线程(比如,平等地使用内核(,这是一个非常困难的问题,要从一开始就将你的算法设计成可分区的,并在不同的内核上运行每个分区。如果你不这样做,你无论如何都会从头开始重写。

最新更新