3

Когда я смотрю на htop и top, я вижу, что мой процессор всегда на 100%. Но я не вижу ни одного процесса, который использует столько процессора. Htop показывает мне только 1-2 процесса, которые используют около 5% процессорного времени.

Есть ли способ найти процессы, которые используют столько процессорного времени?

Вот вывод команды ps -eo pcpu,pid,user,args | sort -r -k1 | less

%CPU   PID USER     COMMAND  
 0.8 20413 root     jsvc.exec -user tomcat -cp ./bootstrap.jar -Djava.endorsed.dirs=../common/endorsed -outfile ../logs/catalina.out -errfile ../logs/catalina.err -verbose org.apache.catalina.startup.Bootstrap -security  
 0.3   631 mysql    /usr/sbin/mysqld --basedir=/ --datadir=/var/lib/mysql --user=mysql --pid-file=/var/lib/mysql/mysql.pid --skip-external-locking  
 0.2  3380 root     /usr/local/apache/bin/httpd -k restart -DSSL  
 0.2 24698 root     tailwatchd  
 0.2 22472 root     /usr/local/jdk/bin/java -Djava.util.logging.config.file=/usr/local/jakarta/tomcat/conf/logging.properties -Dfile.encoding=UTF8 -XX:MaxPermSize=128m -Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager -Djava.endorsed.dirs=/usr/local/jakarta/tomcat/common/endorsed -classpath /usr/local/jakarta/tomcat/bin/bootstrap.jar -Dcatalina.base=/usr/local/jakarta/tomcat -Dcatalina.home=/usr/local/jakarta/tomcat -Djava.io.tmpdir=/usr/local/jakarta/tomcat/temp org.apache.catalina.startup.Bootstrap start  
 0.1 32095 root     cpanellogd - processing bandwidth  
 0.0  9733 root     sleep 1m  

1 ответ1

3

pcpu не делает то, что вы думаете.

Из справочных страниц UNIX: ps ():

CODE    HEADER  DESCRIPTION

%cpu    %CPU    cpu utilization of the process in "##.#" format.
                Currently, it is the CPU time used divided by the time the
                process has been running (cputime/realtime ratio),
                expressed as a percentage. It will not add up to 100%
                unless you are lucky. (alias pcpu).

Как видите, pcpu измеряет не текущую загрузку процессора, а среднюю загрузку процессора с момента запуска процесса. Если процесс работал в течение нескольких дней, прежде чем он неожиданно начал плохо себя вести, вы не сможете увидеть этот вариант с помощью команды ps .

Напротив, top показывает текущее использование процессора в столбце %CPU .

Из справочных страниц UNIX: top ():

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.

top автоматически сортирует процессы по текущему использованию процессора, поэтому виновником должен быть первый процесс.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .