Merge pull request #1524 from SimonFair/NVME-PowerState

NVME power state
This commit is contained in:
tom mortensen
2023-11-27 23:45:59 -08:00
committed by GitHub
2 changed files with 37 additions and 1 deletions

View File

@@ -264,4 +264,36 @@ function my_preg_split($split, $text, $count=2) {
function delete_file(...$file) {
array_map('unlink',array_filter($file,'file_exists'));
}
function getnvmepowerstate($device) {
$array=[] ;
exec("nvme id-ctrl $device |grep -E 'ps |wctemp|cctemp'",$array,$error) ;
foreach ($array as $line){
$split = explode(":",$line) ;
$check=str_replace(" ","",trim($split[0]));
switch($check){
case "wctemp":
$return['wctemp'] = $split[1] - 273;
break;
case "cctemp":
$return['cctemp'] = $split[1] - 273;
break;
case "ps0":
case "ps1":
case "ps2":
case "ps3":
case "ps4":
case "ps5":
$power = explode(" ",$split[2]) ;
$return[$check] = $power[0];
break;
}
}
$powerstate = shell_exec("nvme get-feature $device -f 02");
$powersplit = explode(":",$powerstate) ;
$powerstate = substr(trim($powersplit[2]), -1) ;
#get-feature:0x02 (Power Management), Current value:0x00000003)
$return["powerstate"] = $powerstate;
$return["powerstatevalue"] = $return['ps'.$return['powerstate']] ;
return $return;
}
?>

View File

@@ -274,7 +274,11 @@ function array_online(&$disk, $fstype='') {
default:
$echo[] = "<td>".device_info($disk,true)."</td>";
$echo[] = "<td>".device_desc($disk)."</td>";
$echo[] = "<td>".my_temp(_var($disk,'temp','*'))."</td>";
if ($disk['transport'] == "nvme") {
$powerstate=getnvmepowerstate("/dev/".$disk['device']);
$powerstatevalue="<br>PS: ".$powerstate['powerstatevalue']."(".$powerstate['powerstate'].")" ;
} else $powerstatevalue = "" ;
$echo[] = "<td>".my_temp(_var($disk,'temp','*')).$powerstatevalue."</td>";
$echo[] = "<td><span class='diskio'>".my_diskio($data[0])."</span><span class='number'>".my_number(_var($disk,'numReads',0))."</span></td>";
$echo[] = "<td><span class='diskio'>".my_diskio($data[1])."</span><span class='number'>".my_number(_var($disk,'numWrites',0))."</span></td>";
$echo[] = "<td>".my_number(_var($disk,'numErrors',0))."</td>";