sys_getloadavg() не дает абсолютно никакой информации о нагрузке на процессор
+2
sys_getloadavg() не дает абсолютно никакой информации о нагрузке на процессор
Информация сугубо для веб-мастеров sys_getloadavg() не дает абсолютно никакой информации о нагрузке на процессор


В общем обнаружилось что в панели хостинга и вывод значений sys_getloadavg() совершенно различается, не смотря на то что в мане указано:
sys_getloadavg() не дает абсолютно никакой информации о нагрузке на процессор


Функция выводит всегда 1-3% якобы нагрузки на проц, на самом деле в панели хостинга можно увидеть следующее:
sys_getloadavg() не дает абсолютно никакой информации о нагрузке на процессор


На вопрос заданный техподдержке хостинга через какую функцию они выводят реальную нагрузку на проц был следующий ответ:
Мы считаем нагрузку на CPU, как это делают все современные системы мониторинга, через разницу процессорного времени (cpu ticks) за последние 5 минут. К сожалению, готовой функции мы Вам предоставить не сможем.


Тогда прогугливши три часа в сети был найден намёк как создать систему расчитывающую и выводящую процессорную нагрузку через разницу процессорного времени. Найден на вот этом сайте: http://forums.asmallorange.com/topic/1409-...u-usage-on-php/

Немного допилив его под себя применил у нас, а для желающих выкладываю исходник:

// get cpu real usage by rdn-team
exec('cat /proc/stat', $stat1);
sleep(1);
exec('cat /proc/stat', $stat2);
$info1 = explode(" ", preg_replace("!cpu +!", "", $stat1[0]));
$info2 = explode(" ", preg_replace("!cpu +!", "", $stat2[0]));
$dif = array();
$dif['user'] = $info2[0] - $info1[0];
$dif['nice'] = $info2[1] - $info1[1];
$dif['sys'] = $info2[2] - $info1[2];
$dif['idle'] = $info2[3] - $info1[3];
$total = array_sum($dif);
$cpu = array();
foreach($dif as $x=>$y) $cpu[$x] = round($y / $total * 100, 0);

// output current load: echo $cpu['user']+$cpu['sys']. "<br/>";
// output current idle: echo $cpu['idle']. "<br/>";

// advanced: current cpu speed

$cpumhz = exec('cat /proc/cpuinfo | grep MHz');
$cpumhz = str_replace("cpu MHz :", "", $cpumhz);
$cpumhz = round(trim($cpumhz), 2);

// output cpu speed: echo $cpumhz;


upd: найдена ещё одна версия скрипта, с циклом, не понимаю зачем он там:
http://php.ru/forum/viewtopic.php?t=42916


Внимание! Данная статья была написана более полугода назад, актуальность материала и состояние жизни ссылок не гарантируется! Воспользуйтесь дополнительными параметрами для поиска необходимого вам контента! Приносим свои извинения...

Внимание! У статьи пока нет комментариев, оставьте первым свой комментарий?
Оставить комментарий / Добавление ссылок в комментариях разрешено