Linux 环境:Debian、Ubuntu、Centos
目标:
测试监控程序,设置警报并在不同的 CPU 百分比下触发不同的警报。
例如:(30-50%)、(51-70%) 和 >90%
所以我需要一个可以模拟每个核心特定 CPU 百分比的 CPU 压力测试器。
应激毫克看起来是最先进的。
根据其文献http://kernel.ubuntu.com/~cking/stress-ng/可以将负载值设置在 0 至 100% 之间:
-l P --cpu-load P 按 P% 加载 CPU,0=睡眠,100=满载(参见 -c)
stress-ng -c 1 -p 30
stress-ng:信息:[12650] 调度 hogs:0 I/O-Sync、1 CPU、0 VM-mmap、0 HDD-Write、0 Fork、0 Context-switch、30 Pipe、0 Cache、0 Socket、0 Yield、0 Fallocate、0 Flock、0 Affinity、0 Timer、0 Dentry、0 Urandom、0 Float、0 Int、0 Semaphore、0 Open、0 SigQueue、0 Poll
不理想的结果:
但它似乎不起作用,所有核心都被占用了 100%
有什么想法如何实现这一点吗?
答案1
我设计了stress-ng,以便可以指定压力源进程的数量为0,以匹配在线CPU的数量,因此要将每个CPU的负载设为40%,请使用
压力-ng-c 0-l 40
答案2
我应该用-l 选项
好像-c 1在所有核心之间分配负载。并不是每个核心都分配 80/4,我猜是因为主机已经在运行一些东西了。
压力-ng-c 1-l 80
和-c 4模拟每个核心上的负载
压力-ng-c 4-l 80
有关 Stress-ng 的更多信息: assembly_stress-testing-real-time-systems-with-stress-ng_optimizing-rhel8-for-real-time-for-low-latency-operation