- 线程总数 = processor 计数
- 物理cpu数量 = physical id 去重后计数
- 每颗物理cpu的物理核心 = 对于每个具有相同 physical id 的条目,查找并统计它们的 cpu cores 字段的值。cpu cores 表示每个物理核心的数量
示例php代码如下
<?php
$cpuModelArray = [];
$cpuPhysicalArray = [];
$cpuProcessor = 0;
$physicalId = -1;
$proc_cpuinfo_array = explode("\n", file_get_contents('/proc/cpuinfo'));
foreach ($proc_cpuinfo_array as $value) {
if (strstr($value, 'model name')) {
$modelName = trim(substr($value, strpos($value, ':') + 1));
if (!in_array($modelName, $cpuModelArray)) {
$cpuModelArray[] = $modelName;
}
} elseif (strstr($value, 'physical id')) {
$physicalId = trim(substr($value, strpos($value, ':') + 1));
$cpuPhysicalArray[$physicalId] = 0;
} elseif (strstr($value, 'cpu cores')) {
$cpuPhysicalArray[$physicalId] = intval(trim(substr($value, strpos($value, ':') + 1)));
} elseif (strstr($value, 'processor')) {
$cpuProcessor++;
}
}
//物理cpu个数
$cpuPhysical = count(array_keys($cpuPhysicalArray));
//总物理核心数 = 每个物理cpu的物理核心数相加
$cpuCore = array_sum(array_values($cpuPhysicalArray));
$data['cpu'] = [
'percent' => round($cpuAvgUsage, 1),
'cpu' => $cpuModelArray,
'cpuPhysical' => $cpuPhysical, //物理CPU个数
'cpuCore' => $cpuCore, //物理CPU的总核心数
'cpuProcessor' => $cpuProcessor, //物理CPU的线程总数/逻辑核心总数
];
原创文章,作者:witersen,如若转载,请注明出处:https://www.witersen.com