SHOW:
|
|
- or go back to the newest paste.
| 1 | #!/usr/bin/php | |
| 2 | <?php | |
| 3 | // Be sure to run `bash -c 'chmod 444 /sys/devices/system/cpu/cpu*/cpufreq/cpuinfo_cur_freq'` unless you intend to run this as root | |
| 4 | - | // Credit: [email protected] |
| 4 | + | |
| 5 | $silent=false; | |
| 6 | $delay=1; | |
| 7 | foreach($argv as $key => $val){
| |
| 8 | if($val=='-h'||$val=='--help'){
| |
| 9 | $script=strrpos($_SERVER["SCRIPT_NAME"],'/'); | |
| 10 | if(!is_bool($script)) | |
| 11 | $script=substr($_SERVER["SCRIPT_NAME"],$script+1); | |
| 12 | else | |
| 13 | $script=$_SERVER["SCRIPT_NAME"]; | |
| 14 | echo "Use the -t option to specify the number of times to poll the cores\n\t$script -t 60\n"; | |
| 15 | echo "Use the -s option to run the script silently\n\t$script -s yes\n\t$script -s\n"; | |
| 16 | echo "Use the -d option sets the poling interval\n\t$script -d 0.75\n"; | |
| 17 | die(); | |
| 18 | } | |
| 19 | if(isset($argv[$key+1])) | |
| 20 | - | if(!isset($argv[$key+1])) |
| 20 | + | |
| 21 | - | break; |
| 21 | + | |
| 22 | unset($val2); | |
| 23 | if($val=='-t'&&!is_null($val2)){
| |
| 24 | - | if($val=='-t'){
|
| 24 | + | |
| 25 | $time=$val2; | |
| 26 | else | |
| 27 | echo "$val2 is not a number, ignoring\n"; | |
| 28 | } | |
| 29 | if($val=='-s') | |
| 30 | $silent=true; | |
| 31 | if($val=='-d'&&!is_null($val2)){
| |
| 32 | - | if($val=='-d'){
|
| 32 | + | |
| 33 | $delay=floatval($val2); | |
| 34 | else | |
| 35 | echo "$val2 is not a number, ignoring\n"; | |
| 36 | } | |
| 37 | } | |
| 38 | $arr=json_decode('{}');
| |
| 39 | $ct=intval(shell_exec("ls /sys/devices/system/cpu/ | grep 'cpu[0-9]' | wc -l"));
| |
| 40 | for ($i=0;$i<$ct;$i=$i+1){
| |
| 41 | $arr->{'core_'.$i}=Array();
| |
| 42 | } | |
| 43 | for($i=0;$i<$time;$i=$i+1){
| |
| 44 | for($x=0;$x<$ct;$x=$x+1){
| |
| 45 | $val=intval(file_get_contents("/sys/devices/system/cpu/cpu$x/cpufreq/cpuinfo_cur_freq"));
| |
| 46 | if(!$silent) | |
| 47 | echo "Core$x=$val\n"; | |
| 48 | array_push($arr->{'core_'.$x},$val);
| |
| 49 | } | |
| 50 | shell_exec("sleep $delay");
| |
| 51 | if(!$silent) | |
| 52 | echo "-------------\n"; | |
| 53 | } | |
| 54 | $arr2="[['Time',"; | |
| 55 | - | //var_dump($arr); |
| 55 | + | |
| 56 | $arr2.="'Core $i',"; | |
| 57 | } | |
| 58 | $arr2=substr($arr2,0,-1); | |
| 59 | for($i=0;$i<$time;$i=$i+1){
| |
| 60 | $arr2.='],['.($delay*$i).','; | |
| 61 | for($x=0;$x<$ct;$x=$x+1){
| |
| 62 | $arr2.=($arr->{'core_'.$x}[$i]/1000).',';
| |
| 63 | } | |
| 64 | $arr2=substr($arr2,0,-1); | |
| 65 | } | |
| 66 | $arr2.=']]'; | |
| 67 | $name='/tmp/CPU_FREQ_Chart-'.time().'.html'; | |
| 68 | $file=fopen($name,'x+'); | |
| 69 | fwrite($file,'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"><html><head><script type="text/javascript" src="https://www.google.com/jsapi"></script><script type="text/javascript">google.load("visualization","1",{packages:["corechart"]});google.setOnLoadCallback(drawChart);function drawChart(){var data=google.visualization.arrayToDataTable('.$arr2.');var options={title:\'CPU Graph\',hAxis:{title:\'Time in Seconds\'},vAxis:{title:\'Frequency in Megahertz\'}};var chart=new google.visualization.LineChart(document.body);chart.draw(data, options);}</script><style type="text/css">html,body{width:100%;height:100%;margin:0;overflow:hidden;}</style></head><body></body></html>');
| |
| 70 | fclose($file); | |
| 71 | echo "Chart saved to $name\nOpen by running one of these commands:\n\txdg-open $name\n\tgnome-open $name\n\tfirefox $name\n\tchromium-browser $name\n"; | |
| 72 | //shell_exec("xdg-open $name");
| |
| 73 | - | echo "Chart saved to $name\nOpen by running one of these commands:\n\txdg-open $name\n\tgnome-open $name\n\tfirefox $name\n\tchromium-browser $name"; |
| 73 | + |