Red Hat Training
A Red Hat training course is available for RHEL 8
45.3. Utilização de ferramentas bcc selecionadas para análises de desempenho
Esta seção descreve como usar certos programas pré-criados da biblioteca da BPF Compiler Collection (BCC) para analisar de forma eficiente e segura o desempenho do sistema em cada evento. O conjunto de programas pré-criados na biblioteca do BCC pode servir como exemplos para a criação de programas adicionais.
Pré-requisitos
- Biblioteca BCC instalada
- Permissões de raiz
Usando o execsnoop para examinar os processos do sistema
Executar o programa
execsnoop
em um terminal:# /usr/share/bcc/tools/execsnoop
Em outro terminal executar, por exemplo:
$ ls /usr/share/bcc/tools/doc/
O acima exposto cria um processo de curta duração do comando
ls
.O terminal rodando
execsnoop
mostra a saída semelhante ao seguinte:PCOMM PID PPID RET ARGS ls 8382 8287 0 /usr/bin/ls --color=auto /usr/share/bcc/tools/doc/ sed 8385 8383 0 /usr/bin/sed s/^ *[0-9]\+ *// ...
O programa
execsnoop
imprime uma linha de saída para cada novo processo, o que consome recursos do sistema. Ele até detecta processos de programas que rodam muito em breve, tais comols
, e a maioria das ferramentas de monitoramento não os registrariam.A saída
execsnoop
exibe os seguintes campos:-
PCOMM - O nome do processo pai. (
ls
) -
PID - A identificação do processo. (
8382
) -
PPID - O ID do processo pai. (
8287
) -
RET - O valor de retorno da chamada ao sistema
exec()
(0
), que carrega o código do programa em novos processos. - ARGS - A localização do programa iniciado com argumentos.
-
PCOMM - O nome do processo pai. (
Para ver mais detalhes, exemplos e opções para execsnoop
, consulte o arquivo /usr/share/bcc/tools/doc/execsnoop_example.txt
.
Para mais informações sobre exec()
, consulte as páginas do manual exec(3)
.
Usando o opensnoop para rastrear quais arquivos um comando abre
Executar o programa
opensnoop
em um terminal:# /usr/share/bcc/tools/opensnoop -n uname
A saída de impressões acima para arquivos, que são abertos somente pelo processo do comando
uname
.Em outro terminal executar:
$ uname
O comando acima abre certos arquivos, que são capturados na próxima etapa.
O terminal rodando
opensnoop
mostra a saída semelhante ao seguinte:PID COMM FD ERR PATH 8596 uname 3 0 /etc/ld.so.cache 8596 uname 3 0 /lib64/libc.so.6 8596 uname 3 0 /usr/lib/locale/locale-archive ...
O programa
opensnoop
observa a chamada do sistemaopen()
em todo o sistema, e imprime uma linha de saída para cada arquivo queuname
tentou abrir pelo caminho.A saída
opensnoop
exibe os seguintes campos:-
PID - A identificação do processo. (
8596
) -
COMM - O nome do processo. (
uname
) -
FD - O descritor de arquivo - um valor que
open()
retorna para se referir ao arquivo aberto. (3
) - ERR - Qualquer erro.
PATH - A localização dos arquivos que
open()
tentou abrir.Se um comando tentar ler um arquivo inexistente, então a coluna
FD
retorna-1
e a colunaERR
imprime um valor correspondente ao erro relevante. Como resultado,opensnoop
pode ajudá-lo a identificar uma aplicação que não se comporta corretamente.
-
PID - A identificação do processo. (
Para ver mais detalhes, exemplos e opções para opensnoop
, consulte o arquivo /usr/share/bcc/tools/doc/opensnoop_example.txt
.
Para mais informações sobre open()
, consulte as páginas do manual open(2)
.
Utilização de biotop para examinar as operações de E/S no disco
Executar o programa
biotop
em um terminal:# /usr/share/bcc/tools/biotop 30
O comando permite monitorar os processos superiores, que realizam operações de E/S no disco. O argumento garante que o comando produzirá um resumo de 30 segundos.
NotaQuando nenhum argumento é fornecido, a tela de saída, por padrão, é atualizada a cada 1 segundo.
Em outro terminal executar, por exemplo :
# dd if=/dev/vda of=/dev/zero
O comando acima lê o conteúdo do dispositivo de disco rígido local e grava a saída para o arquivo
/dev/zero
. Esta etapa gera certo tráfego de E/S para ilustrarbiotop
.O terminal rodando
biotop
mostra a saída semelhante ao seguinte:PID COMM D MAJ MIN DISK I/O Kbytes AVGms 9568 dd R 252 0 vda 16294 14440636.0 3.69 48 kswapd0 W 252 0 vda 1763 120696.0 1.65 7571 gnome-shell R 252 0 vda 834 83612.0 0.33 1891 gnome-shell R 252 0 vda 1379 19792.0 0.15 7515 Xorg R 252 0 vda 280 9940.0 0.28 7579 llvmpipe-1 R 252 0 vda 228 6928.0 0.19 9515 gnome-control-c R 252 0 vda 62 6444.0 0.43 8112 gnome-terminal- R 252 0 vda 67 2572.0 1.54 7807 gnome-software R 252 0 vda 31 2336.0 0.73 9578 awk R 252 0 vda 17 2228.0 0.66 7578 llvmpipe-0 R 252 0 vda 156 2204.0 0.07 9581 pgrep R 252 0 vda 58 1748.0 0.42 7531 InputThread R 252 0 vda 30 1200.0 0.48 7504 gdbus R 252 0 vda 3 1164.0 0.30 1983 llvmpipe-1 R 252 0 vda 39 724.0 0.08 1982 llvmpipe-0 R 252 0 vda 36 652.0 0.06 ...
A saída
biotop
exibe os seguintes campos:-
PID - A identificação do processo. (
9568
) -
COMM - O nome do processo. (
dd
) -
DISK - O disco que realiza as operações lidas. (
vda
) - I/O - O número de operações lidas realizadas. (16294)
- Kbytes - A quantidade de Kbytes alcançados pelas operações lidas. (14,440,636)
- AVGms - O tempo médio de E/S das operações lidas. (3.69)
-
PID - A identificação do processo. (
Para ver mais detalhes, exemplos e opções para biotop
, consulte o arquivo /usr/share/bcc/tools/doc/biotop_example.txt
.
Para mais informações sobre dd
, consulte as páginas do manual dd(1)
.
Usando xfsslower para expor operações de sistema de arquivo inesperadamente lentas
Executar o programa
xfsslower
em um terminal:# /usr/share/bcc/tools/xfsslower 1
O comando acima mede o tempo que o sistema de arquivos XFS gasta em operações de leitura, escrita, abertura ou sincronização (
fsync
). O argumento1
garante que o programa mostra apenas as operações que são mais lentas do que 1 ms.NotaQuando nenhum argumento é fornecido,
xfsslower
por padrão exibe operações mais lentas do que 10 ms.Em outro terminal executar, por exemplo, o seguinte:
$ vim text
O comando acima cria um arquivo de texto no editor
vim
para iniciar certa interação com o sistema de arquivos XFS.O terminal rodando
xfsslower
mostra algo semelhante ao salvar o arquivo da etapa anterior:TIME COMM PID T BYTES OFF_KB LAT(ms) FILENAME 13:07:14 b'bash' 4754 R 256 0 7.11 b'vim' 13:07:14 b'vim' 4754 R 832 0 4.03 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 32 20 1.04 b'libgpm.so.2.1.0' 13:07:14 b'vim' 4754 R 1982 0 2.30 b'vimrc' 13:07:14 b'vim' 4754 R 1393 0 2.52 b'getscriptPlugin.vim' 13:07:45 b'vim' 4754 S 0 0 6.71 b'text' 13:07:45 b'pool' 2588 R 16 0 5.58 b'text' ...
Cada linha acima representa uma operação no sistema de arquivo, que levou mais tempo do que um determinado limite.
xfsslower
é bom em expor possíveis problemas no sistema de arquivo, que podem tomar a forma de operações inesperadamente lentas.A saída
xfsslower
exibe os seguintes campos:-
COMM - O nome do processo. (
b’bash'
) T - O tipo de operação. (
R
)- Read
- Writo
- Sync
- OFF_KB - O arquivo compensado em KB. (0)
- FILENAME - O arquivo sendo lido, escrito, ou sincronizado.
-
COMM - O nome do processo. (
Para ver mais detalhes, exemplos e opções para xfsslower
, consulte o arquivo /usr/share/bcc/tools/doc/xfsslower_example.txt
.
Para mais informações sobre fsync
, consulte as páginas do manual fsync(2)
.