Contabilidade do Processo Linux - Diferença entre os campos 'cp' e 'cpu'?

7

Eu tenho procurado usar o processo de contabilidade para manter o controle de vários usuários e sites que executam scripts que são problemáticos em nosso ambiente, em vez de tentar fazer algo como a raspagem em intervalos regulares.

O que não está particularmente claro é quais campos realmente denotam a cpu segundos / minutos usados. As páginas de manual que eu li dizem que a coluna 'cpu' é para segundos gravados, no entanto, há também a coluna 'cp' exibida com -m - e eles podem mostrar totais diferentes. Por exemplo:

Quando uso o sinalizador -m, obtenho

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

Quando eu uso o sinalizador -u e somamos a coluna para 'cpu', recebo 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!

    
por epic9x 23.01.2010 / 00:59

1 resposta

6

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

Primeiro: eu criei um script bash que eu corri como o usuário patrickr, que deveria 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: eu desinstalei e reinstalei o acct para que meus arquivos em / var / log / acct fossem novos. 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 ). Note que este arquivo é um registro de todos os comandos no sistema e, tanto quanto eu posso dizer, não há como puxar partes do registro com base em períodos de tempo.

Terceiro: eu corri este script duas vezes como patrickr

patrickr@hostname:~$ bash loop_script.sh

Eu lhe darei os resultados e depois explicarei:

Ran como root (ou qualquer outro usuário que 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

Veja o que você está vendo:

sa -m está mostrando as médias para toda a atividade desse servidor ao longo do tempo. Este arquivo cresce ao longo do tempo à medida que mais comandos são executados.

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

Em execução: sa -u | grep patrickr | awk 'BEGIN {TOTAL = 0} {TOTAL = TOTAL + $ 2} FIM {print TOTAL}'

Irá lhe dar um total combinado para o usuário patrick, mas o comando sa -m está realmente dando a você as médias. Dê uma olhada nos valores de memória, você precisa de um segundo exemplo. Eles também estão em média.

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

O resultado da 0.01cp é a carga média de patrickr usuário do sistema em comparação com toda a carga sobre o sistema a partir do momento que a aplicação acct foi instalado (ou seja, desde que o arquivo / var / log / acct / pacct começou a manter faixa).

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á em beginlinux.com (link original encontrado aqui ).

    
por 23.01.2010 / 03:22