Como encontrar o processo que está usando 100% da CPU

3

Como eu estou olhando para htop e top eu vejo que o meu uso do processador é 100% sempre. Mas eu não consigo ver nenhum processo que está usando muita CPU. O Htop mostra apenas 1-2 processos que usam cerca de 5% do tempo da CPU.

Existe uma maneira de encontrar os processos que usam tanto tempo de CPU?

Aqui está a saída de 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  
    
por Gabriel 08.07.2012 / 11:22

1 resposta

3

pcpu não faz o que você pensa.

De páginas man do 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).

Como você pode ver, pcpu não mede o uso atual da CPU, mas o uso médio da CPU desde o início do processo. Se um processo estiver em execução por alguns dias antes de se comportar mal, você não poderá ver essa variação usando o comando ps .

Por outro lado, top mostra o uso atual da CPU na coluna %CPU .

De páginas man 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 classifica automaticamente os processos pelo uso atual da CPU, portanto, o primeiro processo deve ser o culpado.

    
por 08.07.2012 / 16:37