Загрузка цп

Разработка своих веб-приложений и страничек

Загрузка цп

Сообщение vk » 30 авг 2009, 11:52

Люди не подскажите код на загрузку ЦП для никса
Есть конечно такой вариант:
Код: Выделить всёРазвернуть
$avgload = get_server_load();
if (strtolower(substr(PHP_OS, 0, 3)) != 'win')
$percent = $avgload * 4;
else
$percent = $avgload;

Но увы он х.. знает что показывает, т.к. с реальной - сходства никакого, различие колеблется от 5 до 10 раз
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

Re: Загрузка цп

Сообщение DPX-Infinity » 30 авг 2009, 20:05

loadavg (load averages) - это усреднённые данные о загрузке системы, отображающие количество активно юзающих ЦПУ/диск процессов. это не загрузка процесса.
странная кстати у тебя функция - get_server_load нету в стандартной библиотеке пхп.
вообще говоря, я сомневаюсь, что это в принципе возможно. единоразово получить загрузку процессора в процентах нельзя и просто из консоли. это и бессмысленно - за то время пока до тебя дойдёт сгенеренная страница, нагрузка проца успеет смениться несколько раз. это имеет смысл при просмотре отчётов/графиков.
если же нужно узнать общую загруженность системы - loadavgs - то что нужно.
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: Загрузка цп

Сообщение vk » 30 авг 2009, 22:02

DPX-Infinity писал(а):loadavg (load averages) - это усреднённые данные о загрузке системы, отображающие количество активно юзающих ЦПУ/диск процессов. это не загрузка процесса.
странная кстати у тебя функция - get_server_load нету в стандартной библиотеке пхп.
вообще говоря, я сомневаюсь, что это в принципе возможно. единоразово получить загрузку процессора в процентах нельзя и просто из консоли. это и бессмысленно - за то время пока до тебя дойдёт сгенеренная страница, нагрузка проца успеет смениться несколько раз. это имеет смысл при просмотре отчётов/графиков.
если же нужно узнать общую загруженность системы - loadavgs - то что нужно.

Именно для отчета и надо.
Надо желательно в процентах, может кто-нибудь готовый код дать?
Например phpsysinfo использует такие данные
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

Re: Загрузка цп

Сообщение vk » 10 сен 2009, 17:25

Нашел интересную функцию в phpsysinfo
Код: Выделить всёРазвернуть
  public function loadavg($bar = false) {
    if (rfts('/proc/loadavg', $buf)) {
      $results['avg'] = preg_split("/\s/", $buf, 4);
      // don't need the extra values, only first three
      unset($results['avg'][3]);
    } else {
      $results['avg'] = array('N.A.', 'N.A.', 'N.A.');
    }
    if ($bar) {
      if (rfts('/proc/stat', $buf, 1)) {
        sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae);
        // Find out the CPU load
        // user + sys = load
        // total = total
        $load = $ab+$ac+$ad; // cpu.user + cpu.sys
        $total = $ab+$ac+$ad+$ae; // cpu.total
        // we need a second value, wait 1 second befor getting (< 1 second no good value will occour)
        sleep(1);
        rfts('/proc/stat', $buf, 1);
        sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae);
        $load2 = $ab+$ac+$ad;
        $total2 = $ab+$ac+$ad+$ae;
        $results['cpupercent'] = (100*($load2-$load)) /($total2-$total);
      }
    }
    return $results;
  }

Как сделать правильный вывод?
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

Re: Загрузка цп

Сообщение vk » 11 сен 2009, 06:47

Ну что - никто не может помочь?
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

Re: Загрузка цп

Сообщение DPX-Infinity » 13 сен 2009, 08:32

всмысле сделать правильный вывод? я сам лично сомневаюсь что в /proc/stat есть такая инфа про загрузку проца, но если так и есть, то эта функция при запуске с параметром True даст тебе искомый результат, если в последней строчке ты заменишь присваивание на return.
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: Загрузка цп

Сообщение vk » 13 сен 2009, 08:38

DPX-Infinity писал(а):всмысле сделать правильный вывод? я сам лично сомневаюсь что в /proc/stat есть такая инфа про загрузку проца, но если так и есть, то эта функция при запуске с параметром True даст тебе искомый результат, если в последней строчке ты заменишь присваивание на return.

Код: Выделить всёРазвернуть
loadavg($bar = true);
?
Или как правильно?
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

Re: Загрузка цп

Сообщение Кадет » 13 сен 2009, 11:29

Код: Выделить всёРазвернуть
    return $results;

Зачем ты вообще возврашяешь рузельтат?
Кадет
Активный участник
 
Сообщения: 1497
Зарегистрирован: 23 апр 2008, 21:08

Re: Загрузка цп

Сообщение DPX-Infinity » 14 сен 2009, 18:25

Код: Выделить всёРазвернуть
function computer_load($avgs false) {
    if (
$avgs) {
        if (
rfts('/proc/loadavg'$buf)) {   // Изменения здесь
            
$result preg_split("/\s/"$buf4);
            
// don't need the extra values, only first three
            
unset($result[3]);
        } else {
            
$result = array('N.A.''N.A.''N.A.');
        }
    } else {
        if (
rfts('/proc/stat'$buf1)) {
            
sscanf($buf"%*s %Ld %Ld %Ld %Ld"$ab$ac$ad$ae);
            
// Find out the CPU load
            // user + sys = load
            // total = total
            
$load $ab+$ac+$ad// cpu.user + cpu.sys
            
$total $ab+$ac+$ad+$ae// cpu.total
            // we need a second value, wait 1 second befor getting (< 1 second no good value will occour)
            
sleep(1);
            
rfts('/proc/stat'$buf1);
            
sscanf($buf"%*s %Ld %Ld %Ld %Ld"$ab$ac$ad$ae);
            
$load2 $ab+$ac+$ad;
            
$total2 $ab+$ac+$ad+$ae;
            
$result = (100*($load2-$load)) /($total2-$total);   // И здесь
        
}
    }
    return 
$result;

вот, немного поправленный код. теперь это отдельная функция - computer_load. теперь если её вызывать с параметром false (то есть можно вообще не указать параметр) она вернёт загрузку процессора, если с true - то вернёт loadavgs.
Или как правильно?

это выдаёт твоё незнание PHP. почитай соответствующие книжки)
Изображение
Переходите на Jabber! За ним будущее!
Желаю вам опенсорса!
Аватара пользователя
DPX-Infinity
Активный участник
 
Сообщения: 723
Зарегистрирован: 02 сен 2007, 20:45
Откуда: Саратов

Re: Загрузка цп

Сообщение vk » 15 сен 2009, 15:04

увы но не пашет
Код: Выделить всёРазвернуть
<?
function computer_load($avgs = false) {
    if ($avgs) {
        if (rfts('/proc/loadavg', $buf)) {   // Изменения здесь
            $result = preg_split("/\s/", $buf, 4);
            // don't need the extra values, only first three
            unset($result[3]);
        } else {
            $result = array('N.A.', 'N.A.', 'N.A.');
        }
    } else {
        if (rfts('/proc/stat', $buf, 1)) {
            sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae);
            // Find out the CPU load
            // user + sys = load
            // total = total
            $load = $ab+$ac+$ad; // cpu.user + cpu.sys
            $total = $ab+$ac+$ad+$ae; // cpu.total
            // we need a second value, wait 1 second befor getting (< 1 second no good value will occour)
            sleep(1);
            rfts('/proc/stat', $buf, 1);
            sscanf($buf, "%*s %Ld %Ld %Ld %Ld", $ab, $ac, $ad, $ae);
            $load2 = $ab+$ac+$ad;
            $total2 = $ab+$ac+$ad+$ae;
            $result = (100*($load2-$load)) /($total2-$total);   // И здесь
        }
    }
    return $result;
}
echo computer_load();
?>
vk
Активный участник
 
Сообщения: 95
Зарегистрирован: 22 фев 2009, 15:24

След.

Вернуться в PHP, HTML, CSS...

Кто сейчас на конференции

Сейчас этот форум просматривают: Google [Bot] и гости: 28

cron