2017-07-01 4 views
0

bekommen Um meine CPU zu überprüfen, brauche ich eine Möglichkeit, um es zu nutzen. Aufstieg. irgendwo zwischen 70% -100%. es muss alle Kerne verwenden, und wenn es einen Weg gibt, so dass ich die Verwendung steuern kann, wäre es großartig.Wie kann ich meine CPU-Nutzung aktiv mit Matlab

Also, ich bin auf der Suche nach einer MATLAB-Code/Idee es

Antwort

2

Auf meinem PC funktioniert es so geschehen. f ist ein Faktor zum Anhalten. Wenn ich es auf 0 setze, bekomme ich 100% Last, wenn es auf 0,25 gesetzt wird, bekomme ich 90% Last. So 0.5 50%

es ist nicht lineair, aber es gibt Steuer

A=rand(1000); 
f=0.25; 
for ct = 1:1000 
    tic 
    hess(A); 
    pause(toc*f) 
end 

Sie können natürlich mit ctrl-c der Schleife ausbrechen.

Sie könnten auch direkt die CPU-Auslastung des Prozesses auslesen und diese als Feedback für die Zeit zum Pausieren verwenden, aber das könnte unnötig kompliziert für das sein, was Sie tun möchten.

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 
+0

Funktioniert das nicht nur ein einzelner Kern? – Brick

+2

Nein, es funktioniert auf allen Kernen auf meinem i5 Matlab 2017a. Die Berechnung des Hessischen ist bereits parallelisiert. – Gelliant

Verwandte Themen