Я всегда думал, что это было:.
→ текущий/рабочий каталог..
→ родительский каталог
Это было некоторое время, но не думает, что VMS имел их.
] Это статистика: 50% означает "половина процессора за время", если посмотреть глубже, то можно узнать, что это за время. [
]Топ показывает использование в течение некоторого периода времени - по умолчанию, примерно 3 секунды. В основном он показывает, какой процент процессорного времени используется за этот интервал. И обратите внимание, что этот процент может быть более 100% - если бы у вас был один процесс, работающий в два потока и занимающий оба ядра двухядерной системы, вы бы увидели цифру около 195% в столбце %CPU для этого процесса.
Чтобы добавить некоторые подробности, как описано в man-странице:
k: %CPU -- CPU usage The task's share of the elapsed CPU time since the last screen update, expressed as a percentage of total CPU time. In a true SMP environment, if 'Irix mode' is Off, top will operate in 'Solaris mode' where a task's cpu usage will be divided by the total number of CPUs. You toggle 'Irix/Solaris' modes with the 'I' interactive command. ... -d : Delay time interval as: -d ss.tt (seconds.tenths) Specifies the delay between screen updates, and overrides the cor- responding value in one's personal configuration file or the startup default. Later this can be changed with the 'd' or 's' interactive commands. ... Global_defaults 'A' - Alt display Off (full-screen) * 'd' - Delay time 3.0 seconds 'I' - Irix mode On (no, 'solaris' smp) * 'p' - PID monitoring Off * 's' - Secure mode Off (unsecured) 'B' - Bold disable Off
Итак, столбец %CPU - это процент от общего процессорного времени машины с момента последнего обновления экрана. Вы можете изменить время между обновлениями экрана либо в командной строке, либо в интерактивном режиме, но по умолчанию оно составляет 3 секунды. По умолчанию включен режим Irix и в многопроцессорной системе %CPU может быть >100%, но режим Irix можно отключить, чтобы процентное время было уменьшено в зависимости от количества ядер.
/proc/<PID>/stat
показывает, сколько мгновений использует один процесс с момента его запуска htop
сравнивает два моментальных снимка суммированных jiffies (, разделенных на количество потоков ЦП ). Интервал между этими двумя временными точками можно настроить с помощью -d --delay=DELAY
в десятых долях секунды. например. 1s
интервал обновления (по умолчанию 1.5s
, т.е.-d 15
):htop -d 10
100%
означает, что один процесс использовал 1 поток ЦП все время в наблюдаемом временном окне (, например. 1.5
второй ). Такое значение может быть нерепрезентативным в течение более длительного периода. Лучшим источником будет исходный код:)(для Linux, ищите LinuxProcessList_scanCPUTime
функцию ).
htop
читает PROCSTATFILE
, который указывает на общую статистику системы, хранящуюся в /proc/stat
, вы можете проверить это самостоятельно:$ cat /proc/stat
Значения для каждого процесса см. в :
./proc/<PID>/stat
usertime, nicetime, systemtime, idletime, ioWait, irq, softIrq, steal, guest, guestnice
totaltime = usertime + nicetime + systemalltime + idlealltime + steal + virtalltime
totaltime
делится на число процессоров($ nproc
значение в Linux ). double period = (double)this->cpus[0].totalPeriod / cpus;
Наконец, в LinuxProcessList_recurseProcTree
процент вычисляется как использование между двумя метками времени
percent_cpu = (period < 1e-6) ? 0.0f : ((lp->utime + lp->stime - lasttimes) / period * 100.0);
utime
Время ЦП, потраченное на пользовательский код, измеренное в тактах stime
Время ЦП, затраченное на код ядра, измеряемое в тактах lasttimes
— предыдущее «время»lp->utime + lp->stime
(в тактах)man 7 time
для получения дополнительной информации. t * 100 / jiffy
, где jiffy
— количество тактов часов в секунду вместо обычного времени.
jiffy = sysconf(_SC_CLK_TCK);
Вы можете получить значение такта часов, используя:
$ getconf CLK_TCK
100
(что означает, что вы можете игнорировать это вычисление, если вы не используете специальное оборудование или Linux реального времени -и т. д.)