![控制 Linux CPU 负载以进行测试](https://linux22.com/image/1384405/%E6%8E%A7%E5%88%B6%20Linux%20CPU%20%E8%B4%9F%E8%BD%BD%E4%BB%A5%E8%BF%9B%E8%A1%8C%E6%B5%8B%E8%AF%95.png)
我希望对一系列 Linux 设备进行一些测试,以了解它们基于当前处理器负载的功耗。
因此,我正在寻找一个可以用来强制 CPU 使用 X% 的程序,即,我可以将处理器负载增加 10%,并在此时进行测量。
我查看过“stress”和“cpuburn”等软件包,但它们似乎只使用了 100%
希望你能帮助
谢谢
答案1
您可以将 CPU 负载生成器与 CPU 负载限制器一起使用。
下面是一个实用程序示例stress
和cpulimit
。这两个实用程序都位于 Debian 和派生发行版(如 Ubuntu)存储库中。
stress -c 1 & cpulimit -p $( pidof -o $! stress ) -l 20
解释
20
是要使用的 CPU 时间百分比。stress
生成一个子工作程序,因此您无法直接从 控制该工作程序cpulimit
。pidof
用于查找子 PID。此简单示例仅在stress
启动单个实例时才可靠地工作。要停止加载,请按Ctrl+c并键入killall stress
。
或者,为了简化程序,您可以使用不会产生子进程的不同 CPU 压力实用程序。
cpulimit
RLIMIT_NICE
如果 您 调整限制 或者 按照 运行 ,效果 最佳root
.
答案2
有压力-ng它允许以简单的方式定义工作量百分比。例如,您可以像这样使用它:
stress-ng --cpu 4 --cpu-load 50
这将对 4 个 CPU 施加 50% 的工作负载压力。如果您使用的是 Ubuntu,则可以直接从存储库安装它:
sudo apt-get install -y stress-ng
答案3
与其尝试限制应用程序对 CPU 的使用,为什么不尝试限制 CPU通过将容量减少到您想要的百分比,您将无法告诉以最大容量运行的线程“运行得更慢”,除非它被设计为在 x% 的时间内处于休眠状态,这会污染您尝试收集的数据,因为处理器活动用于线程操作(如旋转等待/脉冲)。
根据您的发行版,您可以使用类似的工具CPU 功率,格兰诺拉麦片, 或者CPU频率
答案4
有人发布了一个有趣的小提琴,可以使所有 CPU 核心的压力达到 100%。
它每个核心使用一个 Web 工作器(默认四核),并且可以轻松修改以适应每个核心上的可变压力。
- 您可以使用 navigator.hardwareConcurrency 来获取核心数。
- 尽管 WebGL 允许提供详细的 GPU 信息,但您无法将 CPU-Z 作为网页实现。