为了检查我的cpu,我需要一种方法来提高它的使用率。一路攀升。 到70%-100%之间的某个地方。它需要使用所有核心, 如果有办法让我可以控制使用量,那就太好了。
所以,我正在寻找一个matlab代码/想法来实现它
答案 0 :(得分:2)
在我的电脑上它的工作原理如下。 f是暂停的因素。如果我将其设置为0,我将获得100%的负载,如果它设置为0.25,我将获得90%的负载。 0.5 50%
所以它不是lineair,但确实提供了控制
A=rand(1000);
f=0.25;
for ct = 1:1000
tic
hess(A);
pause(toc*f)
end
您可以使用ctrl-c
课程突破循环。
您还可以直接读出进程的CPU使用情况,并将其用作暂停时间的反馈,但对于您想要执行的操作,这可能会不必要地复杂化。
CPUs=double(System.Environment.ProcessorCount);
P = System.Diagnostics.PerformanceCounter('Process', '% Processor Time', 'MATLAB'); %perforamce counter
A=rand(1000);N=1000;
p_goal = 50; %desired CPU usage in percentage
f=1;
p=nan([1,N]);
for ct = 1:N
tic
hess(A);
if f>0
p(ct)=P.NextValue/CPUs; %percentage of CPU used by matlab
if p(ct)<p_goal,f=f-0.01;end
if p(ct)>p_goal,f=f+0.01;end
pause(toc*f)
plot(p);ylabel('cpu usage');title(sprintf('f=%.2f',f));drawnow;
end
end