Announcement

Collapse
No announcement yet.

CPU Speed monitor patch

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • CPU Speed monitor patch

    Adds ability to monitor current CPU speed.
    MONITOR=cpu.speed

    This will become more useful as the monitoring code becomes threaded allowing in-run probing.

    Code:
    diff --git a/pts-core/functions/pts-functions.php b/pts-core/functions/pts-functions.php
    index 71f7a85..5510b74 100644
    --- a/pts-core/functions/pts-functions.php
    +++ b/pts-core/functions/pts-functions.php
    @@ -33,7 +33,7 @@ function pts_directory()
             if(substr($dir, -1) != '/')
                 $dir .= '/';
         }
    -
    +
         return $dir;
     }
    
    @@ -112,6 +112,7 @@ if(($to_show = getenv("MONITOR")))
         $monitor_temp = in_array("all.temp", $to_show) || $monitor_all;
         $monitor_power = in_array("all.power", $to_show) || $monitor_all;
         $monitor_voltage = in_array("all.voltage", $to_show) || $monitor_all;
    +    $monitor_speed = in_array("all.speed", $to_show) || $monitor_all;
         define("PTS_START_TIME", time());
    
         if(in_array("gpu.temp", $to_show)  || $monitor_temp)
    @@ -120,22 +121,22 @@ if(($to_show = getenv("MONITOR")))
             $GPU_TEMPERATURE = array();
         }
         if(in_array("cpu.temp", $to_show)  || $monitor_temp)
    -    {
    +    {
             define("MONITOR_CPU_TEMP", 1);
             $CPU_TEMPERATURE = array();
         }
         if(in_array("sys.temp", $to_show)  || $monitor_temp)
    -    {
    +    {
             define("MONITOR_SYS_TEMP", 1);
             $SYS_TEMPERATURE = array();
         }
         if(in_array("battery.power", $to_show) || $monitor_power)
    -    {
    +    {
             define("MONITOR_BATTERY_POWER", 1);
             $BATTERY_POWER = array();
         }
         if(in_array("cpu.voltage", $to_show) || $monitor_voltage)
    -    {
    +    {
             define("MONITOR_CPU_VOLTAGE", 1);
             $CPU_VOLTAGE = array();
         }
    @@ -146,16 +147,22 @@ if(($to_show = getenv("MONITOR")))
         }
         if(in_array("v5.voltage", $to_show) || $monitor_voltage)
         {
    -
    +
             define("MONITOR_V5_VOLTAGE", 1);
             $V5_VOLTAGE = array();
         }
         if(in_array("v12.voltage", $to_show) || $monitor_voltage)
         {
    -
    +
             define("MONITOR_V12_VOLTAGE", 1);
             $V12_VOLTAGE = array();
         }
    +    if(in_array("cpu.speed", $to_show) || $monitor_speed)
    +    {
    +
    +        define("MONITOR_CPU_SPEED", 1);
    +        $CPU_SPEED = array();
    +    }
    
         register_shutdown_function("pts_monitor_statistics");
     }
    @@ -294,7 +301,7 @@ function pts_save_result($save_to = null, $save_results = null)
    
         if(!is_file($save_to_dir . "/pts-results-viewer.xsl") && !is_link($save_to_dir . "/pts-results-viewer.xsl"))
             link(SAVE_RESULTS_DIR . "pts-results-viewer/pts-results-viewer.xsl", $save_to_dir . "/pts-results-viewer.xsl");
    -
    +
         if($save_to == null || $save_results == null)
             $bool = true;
         else
    @@ -600,7 +607,7 @@ function pts_version_comparable($old, $new)
             if($old[0] != $new[0] || $old[1] != $new[1])
                 $compare = false;
    
    -    return $compare;
    +    return $compare;
     }
     function pts_beep($times = 1)
     {
    diff --git a/pts-core/functions/pts-functions_monitor.php b/pts-core/functions/pts-functions_monitor.php
    index 5b96546..aa92fbc 100644
    --- a/pts-core/functions/pts-functions_monitor.php
    +++ b/pts-core/functions/pts-functions_monitor.php
    @@ -26,10 +26,12 @@ function pts_monitor_update()
             pts_record_v5_voltage();
         if(defined("MONITOR_V12_VOLTAGE"))
             pts_record_v12_voltage();
    +    if(defined("MONITOR_CPU_SPEED"))
    +        pts_record_cpu_speed();
     }
     function pts_monitor_arguments()
     {
    -    return array("all", "all.temp", "all.power", "all.voltage", "gpu.temp", "cpu.temp", "sys.temp", "battery.power", "cpu.voltage", "v3.voltage", "v5.voltage", "v12.voltage");
    +    return array("all", "all.temp", "all.power", "all.voltage", "all.speed", "gpu.temp", "cpu.temp", "sys.temp", "battery.power", "cpu.voltage", "v3.voltage", "v5.voltage", "v12.voltage", "cpu.speed");
     }
     function pts_monitor_statistics()
     {
    @@ -46,6 +48,7 @@ function pts_monitor_statistics()
         $type_index["THERMAL"] = array();
         $type_index["POWER"] = array();
         $type_index["VOLTAGE"] = array();
    +    $type_index["SPEED"] = array();
    
         if(isset($GLOBALS["GPU_TEMPERATURE"]))
         {
    @@ -151,6 +154,19 @@ function pts_monitor_statistics()
                 array_push($type_index["VOLTAGE"], count($m_array) - 1);
             }
         }
    +    if(isset($GLOBALS["CPU_SPEED"]))
    +    {
    +        $this_array = $GLOBALS["CPU_SPEED"];
    +
    +        if(is_array($this_array) && !empty($this_array[0]))
    +        {
    +            array_push($device, "CPU");
    +            array_push($type, "Speed");
    +            array_push($unit, "MHz");
    +            array_push($m_array, $this_array);
    +            array_push($type_index["SPEED"], count($m_array) - 1);
    +        }
    +    }
    
         $info_report = "";
    
    diff --git a/pts-core/functions/pts-functions_system_cpu.php b/pts-core/functions/pts-functions_system_cpu.php
    index 263f2f6..ff33a45 100644
    --- a/pts-core/functions/pts-functions_system_cpu.php
    +++ b/pts-core/functions/pts-functions_system_cpu.php
    @@ -125,6 +125,30 @@ function processor_temperature()
    
         return $temp_c;
     }
    +function current_processor_frequency($cpu_core = 0)
    +{
    +
    +    if(is_file("/sys/devices/system/cpu/cpu" . $cpu_core . "/cpufreq/scaling_max_freq")) // The ideal way, with modern CPUs using CnQ or EIST and cpuinfo reporting the current
    +{
    +        $info = trim(file_get_contents("/sys/devices/system/cpu/cpu" . $cpu_core . "/cpufreq/scaling_cur_freq"));
    +        $info = pts_trim_double(intval($info) / 1000, 2);
    +}
    +    else if(is_file("/proc/cpuinfo")) // fall back for those without cpufreq
    +{
    +        $cpu_speeds = read_cpuinfo("cpu MHz");
    +
    +        if(count($cpu_speeds) > $cpu_core)
    +            $info = $cpu_speeds[$cpu_core];
    +        else
    +            $info = $cpu_speeds[0];
    +
    +        $info = pts_trim_double(intval($info), 2);
    +}
    +    else
    +        $info = 0;
    +
    +    return $info;
    +}
     function pts_record_cpu_temperature()
     {
         global $CPU_TEMPERATURE;
    @@ -133,6 +157,14 @@ function pts_record_cpu_temperature()
         if($temp != -1)
             array_push($CPU_TEMPERATURE, $temp);
     }
    +function pts_record_cpu_speed()
    +{
    +    global $CPU_SPEED;
    +    $speed = current_processor_frequency();
    +
    +    if($speed != -1)
    +        array_push($CPU_SPEED, $speed);
    +}
     function pts_processor_power_savings_enabled()
     {
         $return_string = "";
Working...
X