Contabilidade de Processos Linux - Diferença entre os campos 'cp' e 'cpu'?

Contabilidade de Processos Linux - Diferença entre os campos 'cp' e 'cpu'?

Tenho pensado em usar a contabilidade de processos para acompanhar vários usuários e sites que executam scripts que são problemáticos em nosso ambiente, em vez de tentar fazer algo como raspar o topo em intervalos regulares.

O que não está particularmente claro é quais camposrealmentedenota os segundos/minutos da CPU usados. As páginas de manual que li dizem que a coluna 'cpu' é queimada por segundos, no entanto, há também a coluna 'cp' exibida com -m - e elas podem mostrar totais diferentes. Por exemplo:

Quando uso o sinalizador -m, recebo

 $sa -m | grep username
 username 14944      65.53re      29.90cp     5308k

Quando uso o sinalizador -u e totalizo a coluna para 'cpu', obtenho o seguinte:

 sa -u |grep username|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'
 1032.86

Alguém pode me ajudar a entender a diferença entre as colunas ‘cp’ e ‘cpu’ nesses dois modos diferentes?

Obrigado!

Responder1

Deixe-me usar um exemplo para ajudar a explicar o que seus resultados acima mostram:

Primeiro: criei um script bash que executei como usuário patrickr, com o objetivo de colocar carga suficiente no sistema para ser perceptível.

#!/bin/bash
#this file is named loop_script.sh
for i in {1..5000}
do
   echo "Welcome $i times"
done

Segundo: desinstalei e reinstalei o acct para que meus arquivos em /var/log/acct estivessem atualizados. Crie uma cópia do arquivo /var/log/acct/pacct para que no futuro você possa facilmente truncar o arquivo com um arquivo formatado corretamente (você não pode simplesmente excluir e recriar o arquivo - sa irá parar de funcionar se você fizer isso ). Observe que este arquivo é um log de todos os comandos do sistema e, pelo que sei, não há como extrair partes do log com base em períodos de tempo.

Terceiro: executei este script duas vezes como patrickr

patrickr@hostname:~$ bash loop_script.sh

Vou te dar os resultados e depois explicá-los:

Executei como root (ou qualquer outro usuário que seja patrickr) Após o primeiro loop como patrickr:

**sa -m**
                            24       0.09re       0.03cp         0avio       894k
root                        22       0.07re       0.02cp         0avio       853k
patrickr                    2       0.02re       0.01cp         0avio      1336k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash             

Após o segundo loop como patrickr:

**sa -m**
                            30       0.09re       0.03cp         0avio       850k
root                        27       0.07re       0.02cp         0avio       814k
patrickr                    3       0.02re       0.01cp         0avio      1178k

**sa -u |grep patrickr**

patrickr   0.38 cpu     1336k mem      0 io bash            
patrickr   0.35 cpu     1336k mem      0 io bash            
patrickr   0.00 cpu      863k mem      0 io ls  (I happened to also run ls at patrickr)

**sa -u**

The results returned 106 results for a total of 2.86cpu that averaged to 0.03cp

Aqui está o que você está vendo:

sa -m está mostrando médias de todas as atividades deste servidor durante as horas extras. Este arquivo aumenta com o tempo à medida que mais comandos são executados.

sa -você | grep patrickr está mostrando a soma do tempo do sistema e do usuário em minutos de CPU para comandos específicos.

Executando: sa -u |grep patrickr|awk 'BEGIN{TOTAL=0}{TOTAL=TOTAL+$2}END{print TOTAL}'

Fornecerá um total combinado para o usuário patrick, mas o comando sa -m na verdade fornece médias. Dê uma olhada nos valores de memória se você precisar de um segundo exemplo. Eles também são calculados em média.

Se eu somar os três resultados listados acima para patrickr, 0,35 + 0,37 + 0,0 e dividir por 106 e arredondar para o centésimo mais próximo, obterei 0,01cp.

O resultado de 0,01cp é a carga média do usuário patrickr no sistema em comparação com toda a carga no sistema desde o momento em que o aplicativo acct foi instalado (ou seja, desde que o arquivo /var/log/acct/pacct começou a monitorar).

Output Fields
cpu   -  sum of system and user time in cpu minutes
re    -  actual time in minutes
k     -  cpu-time averaged core usage, in 1k units
k*sec -  cpu storage integral (kilo-core seconds)
u     -  user cpu time in cpu minutes
s     -  system time in cpu minutes

Um bom recurso que irá ajudá-lo está emstartlinux. com(link original encontradoaqui).

informação relacionada