sho*_*osh 16 cpu performance unit-testing
我正在寻找一种方法,以一致的方式占用单个CPU的80%(或任何其他数量).
我需要这个用于测试在特定CPU利用率条件下触发的组件的单元测试.
为此,我可以假设机器处于空闲状态.
什么是强大的,可能是独立于操作系统的方法呢?
And*_*w C 15
没有80%的时间占用CPU.CPU始终处于使用状态或空闲状态.在一段时间内,您可以将平均使用率提高到80%.是否有一个特定的时间段你希望它被平均?这个伪代码应该可以跨平台工作,超过1秒的CPU使用率为80%:
while True:
startTime = time.now()
while date.now() - startTime < 0.8:
Math.factorial(100) // Or any other computation here
time.sleep(0.2)
Run Code Online (Sandbox Code Playgroud)
编写一个交替旋转和休眠以获得您想要的任何特定负载级别的程序非常容易.我在几分钟内把它扔在一起:
#include <stdlib.h>
#include <signal.h>
#include <string.h>
#include <time.h>
#include <sys/time.h>
#define INTERVAL 500000
volatile sig_atomic_t flag;
void setflag(int sig) { flag = 1; }
int main(int ac, char **av) {
int load = 80;
struct sigaction sigact;
struct itimerval interval = { { 0, INTERVAL }, { 0, INTERVAL } };
struct timespec pausetime = { 0, 0 };
memset(&sigact, 0, sizeof(sigact));
sigact.sa_handler = setflag;
sigaction(SIGALRM, &sigact, 0);
setitimer(ITIMER_REAL, &interval, 0);
if (ac == 2) load = atoi(av[1]);
pausetime.tv_nsec = INTERVAL*(100 - load)*10;
while (1) {
flag = 0;
nanosleep(&pausetime, 0);
while (!flag) { /* spin */ } }
return 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1745 次 |
| 最近记录: |