Estou recebendo a seguinte saída de top
:
Cpu(s): 43.8%us, 32.5%sy, 4.8%ni, 2.0%id, 15.6%wa, 0.2%hi, 1.2%si, 0.0%st
Mem: 16331504k total, 15759412k used, 572092k free, 4575980k buffers
Swap: 4194296k total, 260644k used, 3933652k free, 1588044k cached
a saída de iostat -xk 6
mostra o seguinte:
Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
sda 0.00 360.20 86.20 153.40 1133.60 2054.40 26.61 1.51 6.27 0.77 18.38
sdb 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
sdd 22.60 198.80 17.40 31.60 265.60 921.60 48.46 0.18 3.70 1.67 8.20
sdc 16.80 218.20 22.20 23.40 261.60 966.40 53.86 0.21 4.56 1.49 6.78
Com base no exposto, parece que algo deve estar sobrecarregado. Mas o que?
Questões
- Se não é o disco rígido ou a CPU, então o que?
- Parece que 15,6% do tempo da CPU é gasto em espera. O que exatamente poderia estar esperando?
performance
load
user4951
fonte
fonte
Respostas:
Como ponto de esclarecimento, a carga não está diretamente ligada à CPU. Esse é um dos equívocos mais comuns sobre carga. O fato de você mencionar disco parece reconhecer que você está ciente disso, mas eu só queria mencionar isso, pois vejo comentários que indicam alguns que acreditam de outra forma.
Carga é definida como o número de processos aguardando recursos do sistema. Isso geralmente é CPU, disco ou rede, mas pode ser realmente qualquer coisa de hardware.
Um "processo" também não é necessariamente um processo completo. Um segmento é definido como um "processo leve" e cada segmento que está aguardando aumenta a contagem de carga.
Para descobrir quais processos são um problema:
Executar
top -H
(-H
habilita a exibição de threads)Os atalhos do teclado variam de acordo com a versão.
Com a parte superior mais recente (3.3 e posterior):
Pressione fpara exibir as opções de campo.
Use as setas do teclado para acessar
S = Process Status
e pressionar s.Pressione qpara voltar à página principal.
Pressione Shift+ Rpara reverter a classificação.
Com o topo mais antigo (antes do 3.3):
Pressione Shift+ opara exibir as opções de classificação.
Depois, wpara classificar por status do processo.
Depois, Entervolte à página principal.
Então Shift+ Rpara reverter a classificação.
Em seguida, na
S
coluna, procure processos que possuemD
ouR
(agora devem estar no topo). Estes serão processos que contribuem para a carga do sistema.Se o processo mostrar um
D
, isso significa "suspensão ininterrupta". Geralmente, isso é causado quando o processo está aguardando na E / S (disco, rede etc.).Se o processo mostra a
R
, isso significa que está apenas fazendo o cálculo normal.Para saber mais sobre o que esses processos estão fazendo:
Com a parte superior mais recente (3.3 e posterior):
Pressione fpara exibir as opções de campo.
Use as teclas de seta para acessar
WCHAN = Sleeping in Function
e pressione dpara habilitá-lo.Depois, qvolte à página principal.
Com o topo mais antigo (antes do 3.3):
Pressione fentão ypara ativar o
WCHAN
campo.Se o seu sistema possui as opções necessárias do kernel e o arquivo wchan está presente no sistema (eu esqueço onde ele está e como é chamado) , o
WCHAN
campo deve mostrar qual função do kernel o processo está executando no momento (se o campo mostrar apenas um-
ou?
em tudo, você não tem suporte).Um pouco do google aqui e você deve estar no seu caminho.
Se você não tem suporte, sempre pode experimentar
strace
os processos para descobrir o que eles estão fazendo, mas essa é a maneira mais difícil.fonte
Processos de curta duração, como a compilação de tarefas ou a falha de processos em um loop, geralmente não são visíveis nas ferramentas de monitoramento, como o
top
iostat e assim por diante.Nesses casos, o Linux Audit Framework ajudará
O culpado, um loop de falha, por exemplo
Para usar o auditd / auditctl:
roubado do log todos os lançamentos do processo
fonte
top
, provavelmente não estão contribuindo para carregar a média. Para contribuir com a carga média, ele deve ficar em um estado de espera por um longo período de tempo. Estatisticamente, isso significa que ele aparecerátop
. Caso contrário, não é um colaborador significativo.Eu tive uma situação em que as montagens NFS foram desconectadas e, infelizmente, cometi um erro e não usei a opção de montagem suave, portanto, muitos processos foram afetados no meu servidor Linux, incluindo monitoramento, lsof e até sessões bash ....
Após desmontar montagens quebradas, o sistema parecia sobrecarregado:
Isso parecia terrível, mas o uso da CPU era inferior a 15% e não há E / S de disco. Eu recebi alguns conselhos para analisar o ps, mas isso não ajudou, pois parecia que os processos estão na maior parte adormecidos.
Em seguida,
man ps
salvei minha noite para dormir e, após a investigação, encontrei sinalizadores de STATUS muito importantes, pois depois identificamos que eram processos emperrados .Executar:
e procure processos que tenham
D
ouSL
na coluna STAT. Estes eram como processos de zumbis, mas não identificados como z-zumbis.D - significa principalmente atividade de disco (E / S), mas também se você executar
ps -e v
algumas vezes e tambémiostat 3
e não vir nenhuma atividade, isso indicou que a E / S está presa .SL - isso significa que há páginas bloqueadas na memória desse processo; portanto, se você puder identificar que esse processo não deve se comportar assim, será o próximo candidato possível se ele permanecer por um longo período sem alterações.
Após a investigação, eu matei um por um e a média de carga do meu sistema tornou-se normal.
fonte