在基于Linux的系统上衡量"备用" CPU时间的最佳方法是什么?
对于我们为其开发软件的某些客户,我们需要"保证"一定数量的备用资源(内存,磁盘空间,CPU)。内存和磁盘空间很简单,但是CPU有点困难。
我们使用的一种技术是创建一个进程,该进程消耗保证的CPU时间(例如,每5秒2.5秒)。我们以最高优先级运行此进程,以确保其运行并消耗其所有必需的CPU周期。
如果我们的普通应用程序能够在可接受的性能水平上运行,并且在空闲时间进程也可以运行的同时通过所有功能测试,那么我们"假设"我们已经达到了对空闲CPU时间的承诺。
我敢肯定,还有其他技术可以做同样的事情,并且想了解它们。
解决方案
在多核/处理器系统中,我们可以利用Affinity发挥自己的优势。
SAR是一个标准的* nix流程,它收集有关系统资源的操作使用的信息。它还具有一个命令行工具,可让我们创建各种报告,并且数据通常保存在数据库中。
因此,这可能并不是我们要找的答案,但是如果我们要做的就是确保应用程序不超出资源消耗的某些限制,并且我们在Linux上运行,则可以自定义/ etc / security / limits.con(可能是我们选择的发行版上的其他文件),将限制强加于特定用户,并仅在该用户下运行该进程。当然,这是假设我们对客户的生产环境具有相同级别的控制。
如果我理解正确,那么我们担心的是,在给定百分比的处理能力不可用的情况下,应用程序是否还能运行。
最具争议的方法是使用功能不足的硬件进行测试。如果设置中的处理器允许,则可以在线降低时钟频率。 Linux内核为我们提供了一个简单的界面,请参见/ sys / devices / system / cpu / cpu0 / cpufreq /
。也有许多与此相关的GUI应用程序。
如果处理器无法在线更改时钟速度,则可以采用困难的方法,并在BIOS中选择一个较小的乘法器。
我想你应该已经明白了。如果它在1600 Mhz而不是2400 Mhz上运行,则可以保证33%的备用CPU时间。