Manual de Fontes Abertas | OSINT
Manual de Fontes Abertas | OSINT - | Hotmart https://share.google/yeFXS3QEKrVWgTQqB
# Trace novos processos: Execsnoop # O arquivo de rastreamento abre com o processo e o nome do arquivo: Opensnoop # Resumir latência de bloqueio de E / S (disco) como uma distribuição de poder de 2 por disco: Biolatência -D # Resumir o tamanho da E / S do bloco como uma distribuição de poder de 2 pelo nome do programa: tamanho da mordida # Trace operações comuns do sistema de arquivos ext4 com menos de 1 milissegundo: Ext4slower 1 # Trace TCP conexões ativas (connect ()) com endereço IP e portas: Tcpconnect # Trace TCP passive connections (accept ()) com endereço IP e portas: Tcpaccept # Trace conexões TCP para a porta local 80, com duração da sessão: Tcplife -L 80 # Trace TCP retransmissões com endereços IP e estado TCP: Tcpretrans # Testes de pilha de amostra a 49 Hertz por 10 segundos, emite formato dobrado (para gráficos de chama): Perfil -fd -F 49 10 # Trace detalhes e latência das pesquisas de DNS do resolvedor: Gethostlatency # Comandos de rastreamento emitidos em todos os shells bash: Linha de base
# Contagem "tcp_send *" função do kernel, saída de impressão a cada segundo: Funccount -i 1 'tcp_send *' # Count "vfs_ *" chama PID 185: Funccount -p 185 'vfs_ *' # Nomes de arquivo de rastreio abertos, usando o rastreamento dinâmico da função do_sys_open do kernel (): Trace 'p :: do_sys_open "% s", arg2' # Igual a antes ("p :: é assumido se não for especificado): Trace 'do_sys_open "% s", arg2' # Trace o retorno do kernel do_sys_open () funciton e imprima o retval: Trace 'r :: do_sys_open "ret:% d", retval' # Trace do_nanosleep () função do kernel e o segundo argumento (modo), com os rastreios da pilha do kernel: Traçar -K 'do_nanosleep "modo:% d", arg2' # Trace o modo do_nanosleep () fornecendo o protótipo (não é necessário debuginfo): Trace 'do_nanosleep (struct hrtimer_sleeper * t, modo enum hrtimer_mode) "mode:% d", mode' # Trace do_nanosleep () com o endereço da tarefa (pode ser NULL), observando a desreferência: Trace 'do_nanosleep (struct hrtimer_sleeper * t, enum hrtimer_mode mode) "tarefa:% x", t> tarefa " # Contagem de frequência tcp_sendmsg () tamanho: Argdist -C 'p :: tcp_sendmsg (struct sock * sk, struct msghdr * msg, size_t size): u32: tamanho' # Resumir o tamanho do tcp_sendmsg () como um histograma de poder de 2: Argdist -H 'p :: tcp_sendmsg (struct sock * sk, struct msghdr * msg, tamanho tamanho_t): u32: tamanho' # Rastreios de pilha de contagem de frequência que levam à função submit_bio () (problema I / O do disco): Stackcount submit_bio # Resumir a latência (tempo gasto) pela função vfs_read () para PID 181: Funclatency -p 181 -u vfs_read
# Trace a função de biblioteca libc nanosleep () e imprima os detalhes do sono solicitado: Trace 'p: c: nanosleep (struct timespec * req) "% d sec% d nsec", req-> tv_sec, req-> tv_nsec' # Contar a chamada libc write () para PID 181 por descritor de arquivo: Argdist -p 181 -C 'p: c: write (int fd): int: fd' # Resumir a latência (tempo gasto) por libc getaddrinfo (), como um histograma de power-of-2 em microssegundos: Funclatency.py -u 'c: getaddrinfo'
# Conheça os rastreios de pilha que levaram a E / S do bloco emissor, rastreando seu ponto de sinalização do kernel:
Stackcount t: bloco: block_rq_insert
# Trace a sonda pthread_create USDT e imprima arg1 como hexadecimal:
Trace 'u: pthread: pthread_create "% x", arg1'
# Echo "deb [trust = yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | \
Sudo tee /etc/apt/sources.list.d/iovisor.list
# sudo apt-get update
# sudo apt-get install bcc-tools
# Execsnoop PCOMM PID RET ARGS Bash 15887 0 / usr / bin / man ls Préconv 15894 0 / usr / bin / preconv -e UTF-8 Homem 15896 0 / usr / bin / tbl Homem 15897 0 / usr / bin / nroff -mandoc -rLL = 169n -rLT = 169n -Tutf8 Homem 15898 0 / usr / bin / pager -s Nroff 15900 0 / usr / bin / locale charmap Nroff 15901 0 / usr / bin / groff -mtty-char -Tutf8 -mandoc -rLL = 169n -rLT = 169n Groff 15902 0 / usr / bin / troff -mtty-char -mandoc -rLL = 169n -rLT = 169n -Tutf8 Groff 15903 0 / usr / bin / grotty [...]
# Opensnoop PID COMM FD ERR PATH 27159 catalina.sh 3 0 /apps/tomcat8/bin/setclasspath.sh 4057 redis-server 5 0 / proc / 4057 / stat 2360 redis-server 5 0 / proc / 2360 / stat 30668 sshd 4 0 / proc / sys / kernel / ngroups_max 30668 sshd 4 0 / etc / group 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd -1 2 / var / run / nologin 30668 sshd -1 2 / etc / nologin 30668 sshd 4 0 /etc/login.defs 30668 sshd 4 0 / etc / passwd 30668 sshd 4 0 / etc / shadow 30668 sshd 4 0 / etc / localtime 4510 snmp-pass 4 0 / proc / cpuinfo [...]
# Ext4slower 1 Rastreando operações ext4 com menos de 1 ms TIME COMM PID T BYTES OFF_KB LAT (ms) FILENAME 06:49:17 bash 3616 R 128 0 7,75 cksum 06:49:17 cksum 3616 R 39552 0 1.34 [ 06:49:17 cksum 3616 R 96 0 5,36 2 a 3-2,7 06:49:17 cksum 3616 R 96 0 14,94 2to3-3.4 06:49:17 cksum 3616 R 10320 0 6.82 411toppm 06:49:17 cksum 3616 R 65536 0 4.01 a2p 06:49:17 cksum 3616 R 55400 0 8.77 ab 06:49:17 cksum 3616 R 36792 0 16.34 aclocal-1.14 06:49:17 cksum 3616 R 15008 0 19,31 acpi_listen 06:49:17 cksum 3616 R 6123 0 17.23 add-apt-repository 06:49:17 cksum 3616 R 6280 0 18.40 addpart 06:49:17 cksum 3616 R 27696 0 2.16 addr2line 06:49:17 cksum 3616 R 58080 0 10,11 ag
# Biolatência -mT 1
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
21:33:40
Msecs: distribuição de contagem
0 -> 1: 69 | ********************************************
2 -> 3: 16 | ********* |
4 -> 7: 6 | *** |
8 -> 15: 21 | ************ |
16 -> 31: 16 | ********* |
32 -> 63: 5 | ** |
64 -> 127: 1 | |
21:33:41
Msecs: distribuição de contagem
0 -> 1: 60 | ************************ |
2 -> 3: 100 | ***********************************************
4 -> 7: 41 | **************** |
8 -> 15: 11 | **** |
16 -> 31: 9 | *** |
32 -> 63: 6 | ** |
64 -> 127: 4 | * |
21:33:42
Msecs: distribuição de contagem
0 -> 1: 110 | *********************************************
2 -> 3: 78 | ********************************
4 -> 7: 64 | *********************** |
8 -> 15: 8 | ** |
16 -> 31: 12 | **** |
32 -> 63: 15 | ***** |
64 -> 127: 8 | ** |
[...]
# Biosnoop TEMPO (s) COMM PID DISK T SETOR BYTES LAT (ms) 0.000004001 supervisionar 1950 xvda1 W 13092560 4096 0.74 0.000178002 supervisionar 1950 xvda1 W 13092432 4096 0.61 0.001469001 supervisionar 1956 xvda1 W 13092440 4096 1.24 0.001588002 supervisionar 1956 xvda1 W 13115128 4096 1.09 1.022346001 supervisionar 1950 xvda1 W 13115272 4096 0.98 1.022568002 supervisionar 1950 xvda1 W 13188496 4096 0.93 1.023534000 supervisionar 1956 xvda1 W 13188520 4096 0.79 1.023585003 supervisionar 1956 xvda1 W 13189512 4096 0.60 2.003920000 xfsaild / md0 456 xvdc W 62901512 8192 0.23 2.003931001 xfsaild / md0 456 xvdb W 62901513 512 0.25 2.004034001 xfsaild / md0 456 xvdb W 62901520 8192 0.35 2.004042000 xfsaild / md0 456 xvdb W 63542016 4096 0.36 2.004204001 kworker / 0: 3 26040 xvdb W 41950344 65536 0.34 2.044352002 supervisionar 1950 xvda1 W 13192672 4096 0.65 [...]
# Cachestat
HITS MISSES DIRTIES READ_HIT% WRITE_HIT% BUFFERS_MB CACHED_MB
170610 41607 33 80,4% 19,6% 11 288
157693 6149 33 96,2% 3,7% 11 311
174483 20166 26 89,6% 10,4% 12 389
434778 35 40 100,0% 0,0% 12 389
435723 28 36 100,0% 0,0% 12 389
846183 83800 332534 55,2% 4,5% 13 553
96387 21 24 100,0% 0,0% 13 553
120258 29 44 99,9% 0,0% 13 553
255861 24 33 100,0% 0,0% 13 553
191388 22 32 100,0% 0,0% 13 553
[...]
# Tcpconnect PID COMM IP SADDR DADDR DPORT 25333 recordProgra 4 127.0.0.1 127.0.0.1 28527 25338 curl 4 100.66.3.172 52.22.109.254 80 25340 curl 4 100.66.3.172 31.13.73.36 80 25342 curl 4 100.66.3.172 104.20.25.153 80 25344 curl 4 100.66.3.172 50.56.53.173 80 25365 recordProgra 4 127.0.0.1 127.0.0.1 28527 26119 ssh 6 :: 1 :: 1 22 25388 recordProgra 4 127.0.0.1 127.0.0.1 28527 25220 ssh 6 fe80: 8a3: 9dff: fed5: 6b19 fe80 :: 8a3: 9dff: fed5: 6b19 22 [...]
# Tcpaccept PID COMM IP RADDR LADDR LPORT 2287 sshd 4 11.16.213.254 100.66.3.172 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 2287 sshd 6 :: 1 :: 1 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 2287 sshd 6 fe80 :: 8a3: 9dff: fed5: 6b19 fe80 :: 8a3: 9dff: fed5: 6b19 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 [...]
# Tcpretrans TIME PID IP LADDR: LPORT T> RADDR: ESTADO DE RUA 01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABELECIDO 01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABELECIDO 01:55:17 0 4 10.153.223.157:22 R> 69.53.245.40:22957 ESTABELECIDO [...]
# Gethostlatency TIME PID COMM LATms HOST 06:10:24 28011 wget 90.00 www.iovisor.org 06:10:28 28127 wget 0.00 www.iovisor.org 06:10:41 28404 wget 9.00 www.netflix.com 06:10:48 28544 curl 35.00 www.netflix.com.au 06:11:10 29054 curl 31.00 www.plumgrid.com 06:11:16 29195 curl 3.00 www.facebook.com 06:11:24 25313 wget 3.00 www.usenix.org 06:11:25 29404 curl 72.00 foo 06:11:28 29475 curl 1.00 foo [...]
# Runqlat -m 5
Rastreamento da latência da fila de execução ... Pressione Ctrl-C para finalizar.
Msecs: distribuição de contagem
0 -> 1: 2085 | ********************************************
2 -> 3: 8 | |
4 -> 7: 20 | |
8 -> 15: 191 | *** |
16 -> 31: 420 | ******** |
Msecs: distribuição de contagem
0 -> 1: 1798 | **********************************************
2 -> 3: 11 | |
4 -> 7: 45 | * |
8 -> 15: 441 | ********* |
16 -> 31: 1030 | ********************** |
Msecs: distribuição de contagem
0 -> 1: 1588 | ************************************************
2 -> 3: 7 | |
4 -> 7: 49 | * |
8 -> 15: 556 | ************** |
16 -> 31: 1206 | *********************************
[...]
# Perfil
Amostragem em 49 Hertz de todos os tópicos pelo usuário + pilha de núcleo ... Pressione Ctrl-C para finalizar.
^ C
[...]
Ffffffff811a2eb0 find_get_entry
Ffffffff811a338d pagecache_get_page
Ffffffff811a51fa generic_file_read_iter
Ffffffff81231f30 __vfs_read
Ffffffff81233063 vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f4757ff9680 read
- dd (14283)
29
Ffffffff8141c067 copy_page_to_iter
Ffffffff811a54e8 generic_file_read_iter
Ffffffff81231f30 __vfs_read
Ffffffff81233063 vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f407617d680 lido
- dd (14288)
32
Ffffffff813af58c common_file_perm
Ffffffff813af6f8 apparmor_file_permission
Ffffffff8136f89b security_file_permission
Ffffffff81232f6e rw_verify_area
Ffffffff8123303e vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f407617d680 lido
- dd (14288)
39
[...]
$ more tools/biolatency.py #!/usr/bin/python # @lint-avoid-python-3-compatibility-imports # # biolatency Summarize block device I/O latency as a histogram. # For Linux, uses BCC, eBPF. # # USAGE: biolatency [-h] [-T] [-Q] [-m] [-D] [interval] [count] # # Copyright (c) 2015 Brendan Gregg. # Licensed under the Apache License, Version 2.0 (the "License") # # 20-Sep-2015 Brendan Gregg Created this. [...]
$ more tools/biolatency_example.txt
Demonstrations of biolatency, the Linux eBPF/bcc version.
biolatency traces block device I/O (disk I/O), and records the distribution
of I/O latency (time), printing this as a histogram when Ctrl-C is hit.
For example:
# ./biolatency
Tracing block device I/O... Hit Ctrl-C to end.
^C
usecs : count distribution
0 -> 1 : 0 | |
2 -> 3 : 0 | |
4 -> 7 : 0 | |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 12 |******** |
256 -> 511 : 15 |********** |
512 -> 1023 : 43 |******************************* |
1024 -> 2047 : 52 |**************************************|
2048 -> 4095 : 47 |********************************** |
4096 -> 8191 : 52 |**************************************|
8192 -> 16383 : 36 |************************** |
16384 -> 32767 : 15 |********** |
32768 -> 65535 : 2 |* |
65536 -> 131071 : 2 |* |
The latency of the disk I/O is measured from the issue to the device to its
completion. A -Q option can be used to include time queued in the kernel.
This example output shows a large mode of latency from about 128 microseconds
to about 32767 microseconds (33 milliseconds). The bulk of the I/O was
between 1 and 8 ms, which is the expected block device latency for
rotational storage devices.
The highest latency seen while tracing was between 65 and 131 milliseconds:
the last row printed, for which there were 2 I/O.
[...]
$ nroff -man man/man8/biolatency.8 | more
biolatency(8) biolatency(8)
NAME
biolatency - Summarize block device I/O latency as a histogram.
SYNOPSIS
biolatency [-h] [-T] [-Q] [-m] [-D] [interval [count]]
DESCRIPTION
biolatency traces block device I/O (disk I/O), and records the distri-
bution of I/O latency (time). This is printed as a histogram either on
Ctrl-C, or after a given interval in seconds.
The latency of the disk I/O is measured from the issue to the device to
its completion. A -Q option can be used to include time queued in the
kernel.
This tool uses in-kernel eBPF maps for storing timestamps and the his-
togram, for efficiency.
This works by tracing various kernel blk_*() functions using dynamic
tracing, and will need updating to match any changes to these func-
tions.
Since this uses BPF, only the root user can use this tool.
REQUIREMENTS
CONFIG_BPF and bcc.
OPTIONS
-h Print usage message.
-T Include timestamps on output.
[...]
1 #! / Usr / bin / python
2 # @ lint-avoid-python-3-compatibilidade-importações
3 #
4 # biolatência Resuma a latência de I / O do dispositivo de bloco como um histograma.
5 # Para Linux, usa BCC, eBPF.
6 #
7 # USO: biolatência [-h] [-T] [-Q] [-m] [-D] [intervalo] [contar]
8 #
9 # Direitos autorais (c) 2015 Brendan Gregg.
10 # Licenciado sob a Licença Apache, Versão 2.0 (a "Licença")
11 #
12 # 20-Set-2015 Brendan Gregg Criou isso.
13
14 de __future__ import print_function
15 do BPC de importação do bcc
16 do tempo importar sono, strftime
17 importação argparse
18
19 argumentos
20 exemplos = "" "exemplos:
21 ./biolatency # resume a latência de bloqueio I / O como um histograma
22 ./biolatência 1 10 # imprimir 1 segundo resumos, 10 vezes
23 ./biolatency -mT 1 # 1s resumos, milissegundos e timestamps
24 ./biolatency -Q # inclui o tempo de espera do SO no tempo de E / S
25 ./biolatência -D # mostra cada dispositivo de disco separadamente
26 "" "
27 parser = argparse.ArgumentParser (
28 descrição = "Resumir a latência de I / O do dispositivo de bloco como um histograma",
29 formatter_class = argparse.RawDescriptionHelpFormatter,
30 epilog = exemplos)
31 parser.add_argument ("- T", "--timestamp", action = "store_true",
32 help = "incluir timestamp na saída")
33 parser.add_argument ("- Q", "--queued", action = "store_true",
34 help = "incluir tempo de espera do sistema operacional no tempo de E / S")
35 parser.add_argument ("- m", "--milliseconds", action = "store_true",
36 help = "histograma de milissegundo")
37 parser.add_argument ("- D", "--disks", action = "store_true",
38 help = "imprimir um histograma por dispositivo de disco")
39 parser.add_argument ("interval", nargs = "?", Default = 99999999,
40 help = "intervalo de saída, em segundos")
41 parser.add_argument ("count", nargs = "?", Default = 99999999,
42 help = "número de saídas")
43 args = parser.parse_args ()
44 countdown = int (args.count)
45 debug = 0
46
47 # define o programa BPF
48 bpf_text = "" "
49 #include <uapi / linux / ptrace.h >>
50 #include <linux / blkdev.h>
51
52 typedef struct disk_key {
Disco de 53 caracteres [DISK_NAME_LEN];
Ranhura 54 u64;
55} disk_key_t;
56 BPF_HASH (início, pedido de estrutura *);
57 ARMAZENAMENTO
58
59 // bloqueio de tempo I / O
60 int trace_req_start (struct pt_regs * ctx, struct request * req)
61 {
62 u64 ts = bpf_ktime_get_ns ();
63 start.update (& req, & ts);
64 retornam 0;
65}
66
67 // saída
68 int trace_req_completion (struct pt_regs * ctx, struct request * req)
69 {
70 u64 * colher de chá, delta;
71
72 // buscar timestamp e calcular o delta
73 tsp = start.lookup (& req);
74 se (tsp == 0) {
75 retornar 0; // problema perdido
76}
77 delta = bpf_ktime_get_ns () - * tsp;
78 FATOR
79
80 // armazenar como histograma
81 LOJA
82
83 start.delete (& req);
84 retorna 0;
85}
86 "" "
87
88 # substituições de código
89 se args.milliseconds:
90 bpf_text = bpf_text.replace ('FATOR', 'delta / = 1000000;')
91 label = "msecs"
Mais 92:
93 bpf_text = bpf_text.replace ('FACTOR', 'delta / = 1000;')
94 label = "usecs"
95 se args.disks:
96 bpf_text = bpf_text.replace ('ARMAZENAMENTO',
97 'BPF_HISTOGRAM (dist, disk_key_t);')
98 bpf_text = bpf_text.replace ('STORE',
99 'chave disk_key_t = {.slot = bpf_log2l (delta)}; '+
100 'bpf_probe_read (& key.disk, sizeof (key.disk),' +
101 'req-> rq_disk-> disk_name); Dist.incremento (chave); ')
Mais 102:
103 bpf_text = bpf_text.replace ('ARMAZENAMENTO', 'BPF_HISTOGRAMA (dist);')
104 bpf_text = bpf_text.replace ('STORE',
105 'dist.increment (bpf_log2l (delta));')
106 se debug: 107 imprimir (bpf_text)
108 109 # load BPF program 110 b = BPF (texto = bpf_text) 111 se args.queued: 112 b.attach_kprobe (evento = "blk_account_io_start", fn_name = "trace_req_start") Mais 113: 114 b.attach_kprobe (evento = "blk_start_request", fn_name = "trace_req_start") 115 b.attach_kprobe (evento = "blk_mq_start_request", fn_name = "trace_req_start") 116 b.attach_kprobe (evento = "blk_account_io_completion", 117 fn_name = "trace_req_completion") 118
119 imprimir ("Detecção de bloqueio do dispositivo I / O ... Pressione Ctrl-C para finalizar.")
120
121 # saída
122 saindo = 0 se args.interval else 1
123 dist = b.get_table ("dist")
124 enquanto (1):
125:
126 sleep (int (args.interval))
127, exceto KeyboardInterrupt:
128 saindo = 1
129
130 imprimir ()
131 if args.timestamp:
132 imprimir ("% - 8s \ n"% strftime ("% H:% M:% S"), final = "")
133
134 dist.print_log2_hist (rótulo, "disco")
135 dist.clear ()
136
Contagem regressiva 137 - = 1
138 se sair ou contagem regressiva == 0:
139 exit ()
# Biolatência
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
^ C
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 1 | |
128 -> 255: 12 | ******** |
256 -> 511: 15 | ********** |
512 -> 1023: 43 | ******************************* |
1024 -> 2047: 52 | ***************************************
2048 -> 4095: 47 | *************************************
4096 -> 8191: 52 | ****************************************
8192 -> 16383: 36 | *******************************
16384 -> 32767: 15 | ********** |
32768 -> 65535: 2 | * |
65536 -> 131071: 2 | * |
# Biolatência -D
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
^ C
Disk = 'xvdb'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 18 | **** |
128 -> 255: 167 | **********************************************
256 -> 511: 90 | ********************* |
Disk = 'xvdc'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 22 | **** |
128 -> 255: 179 | **************************************************************************
256 -> 511: 88 | ******************* |
Disco = 'xvda1'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 0 | |
128 -> 255: 0 | |
256 -> 511: 167 | **********************************************
512 -> 1023: 44 | ********** |
1024 -> 2047: 9 | ** |
2048 -> 4095: 4 | |
4096 -> 8191: 34 | ******** |
8192 -> 16383: 44 | ********** |
16384 -> 32767: 33 | ******* |
32768 -> 65535: 1 | |
65536 -> 131071: 1 | |
# Trace novos processos: Execsnoop # O arquivo de rastreamento abre com o processo e o nome do arquivo: Opensnoop # Resumir latência de bloqueio de E / S (disco) como uma distribuição de poder de 2 por disco: Biolatência -D # Resumir o tamanho da E / S do bloco como uma distribuição de poder de 2 pelo nome do programa: tamanho da mordida # Trace operações comuns do sistema de arquivos ext4 com menos de 1 milissegundo: Ext4slower 1 # Trace TCP conexões ativas (connect ()) com endereço IP e portas: Tcpconnect # Trace TCP passive connections (accept ()) com endereço IP e portas: Tcpaccept # Trace conexões TCP para a porta local 80, com duração da sessão: Tcplife -L 80 # Trace TCP retransmissões com endereços IP e estado TCP: Tcpretrans # Testes de pilha de amostra a 49 Hertz por 10 segundos, emite formato dobrado (para gráficos de chama): Perfil -fd -F 49 10 # Trace detalhes e latência das pesquisas de DNS do resolvedor: Gethostlatency # Comandos de rastreamento emitidos em todos os shells bash: Linha de base
# Contagem "tcp_send *" função do kernel, saída de impressão a cada segundo: Funccount -i 1 'tcp_send *' # Count "vfs_ *" chama PID 185: Funccount -p 185 'vfs_ *' # Nomes de arquivo de rastreio abertos, usando o rastreamento dinâmico da função do_sys_open do kernel (): Trace 'p :: do_sys_open "% s", arg2' # Igual a antes ("p :: é assumido se não for especificado): Trace 'do_sys_open "% s", arg2' # Trace o retorno do kernel do_sys_open () funciton e imprima o retval: Trace 'r :: do_sys_open "ret:% d", retval' # Trace do_nanosleep () função do kernel e o segundo argumento (modo), com os rastreios da pilha do kernel: Traçar -K 'do_nanosleep "modo:% d", arg2' # Trace o modo do_nanosleep () fornecendo o protótipo (não é necessário debuginfo): Trace 'do_nanosleep (struct hrtimer_sleeper * t, modo enum hrtimer_mode) "mode:% d", mode' # Trace do_nanosleep () com o endereço da tarefa (pode ser NULL), observando a desreferência: Trace 'do_nanosleep (struct hrtimer_sleeper * t, enum hrtimer_mode mode) "tarefa:% x", t> tarefa " # Contagem de frequência tcp_sendmsg () tamanho: Argdist -C 'p :: tcp_sendmsg (struct sock * sk, struct msghdr * msg, size_t size): u32: tamanho' # Resumir o tamanho do tcp_sendmsg () como um histograma de poder de 2: Argdist -H 'p :: tcp_sendmsg (struct sock * sk, struct msghdr * msg, tamanho tamanho_t): u32: tamanho' # Rastreios de pilha de contagem de frequência que levam à função submit_bio () (problema I / O do disco): Stackcount submit_bio # Resumir a latência (tempo gasto) pela função vfs_read () para PID 181: Funclatency -p 181 -u vfs_read
# Trace a função de biblioteca libc nanosleep () e imprima os detalhes do sono solicitado: Trace 'p: c: nanosleep (struct timespec * req) "% d sec% d nsec", req-> tv_sec, req-> tv_nsec' # Contar a chamada libc write () para PID 181 por descritor de arquivo: Argdist -p 181 -C 'p: c: write (int fd): int: fd' # Resumir a latência (tempo gasto) por libc getaddrinfo (), como um histograma de power-of-2 em microssegundos: Funclatency.py -u 'c: getaddrinfo'
# Conheça os rastreios de pilha que levaram a E / S do bloco emissor, rastreando seu ponto de sinalização do kernel:
Stackcount t: bloco: block_rq_insert
# Trace a sonda pthread_create USDT e imprima arg1 como hexadecimal:
Trace 'u: pthread: pthread_create "% x", arg1'
# Echo "deb [trust = yes] https://repo.iovisor.org/apt/xenial xenial-nightly main" | \
Sudo tee /etc/apt/sources.list.d/iovisor.list
# sudo apt-get update
# sudo apt-get install bcc-tools
# Execsnoop PCOMM PID RET ARGS Bash 15887 0 / usr / bin / man ls Préconv 15894 0 / usr / bin / preconv -e UTF-8 Homem 15896 0 / usr / bin / tbl Homem 15897 0 / usr / bin / nroff -mandoc -rLL = 169n -rLT = 169n -Tutf8 Homem 15898 0 / usr / bin / pager -s Nroff 15900 0 / usr / bin / locale charmap Nroff 15901 0 / usr / bin / groff -mtty-char -Tutf8 -mandoc -rLL = 169n -rLT = 169n Groff 15902 0 / usr / bin / troff -mtty-char -mandoc -rLL = 169n -rLT = 169n -Tutf8 Groff 15903 0 / usr / bin / grotty [...]
# Opensnoop PID COMM FD ERR PATH 27159 catalina.sh 3 0 /apps/tomcat8/bin/setclasspath.sh 4057 redis-server 5 0 / proc / 4057 / stat 2360 redis-server 5 0 / proc / 2360 / stat 30668 sshd 4 0 / proc / sys / kernel / ngroups_max 30668 sshd 4 0 / etc / group 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd 4 0 /root/.ssh/authorized_keys 30668 sshd -1 2 / var / run / nologin 30668 sshd -1 2 / etc / nologin 30668 sshd 4 0 /etc/login.defs 30668 sshd 4 0 / etc / passwd 30668 sshd 4 0 / etc / shadow 30668 sshd 4 0 / etc / localtime 4510 snmp-pass 4 0 / proc / cpuinfo [...]
# Ext4slower 1 Rastreando operações ext4 com menos de 1 ms TIME COMM PID T BYTES OFF_KB LAT (ms) FILENAME 06:49:17 bash 3616 R 128 0 7,75 cksum 06:49:17 cksum 3616 R 39552 0 1.34 [ 06:49:17 cksum 3616 R 96 0 5,36 2 a 3-2,7 06:49:17 cksum 3616 R 96 0 14,94 2to3-3.4 06:49:17 cksum 3616 R 10320 0 6.82 411toppm 06:49:17 cksum 3616 R 65536 0 4.01 a2p 06:49:17 cksum 3616 R 55400 0 8.77 ab 06:49:17 cksum 3616 R 36792 0 16.34 aclocal-1.14 06:49:17 cksum 3616 R 15008 0 19,31 acpi_listen 06:49:17 cksum 3616 R 6123 0 17.23 add-apt-repository 06:49:17 cksum 3616 R 6280 0 18.40 addpart 06:49:17 cksum 3616 R 27696 0 2.16 addr2line 06:49:17 cksum 3616 R 58080 0 10,11 ag
# Biolatência -mT 1
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
21:33:40
Msecs: distribuição de contagem
0 -> 1: 69 | ********************************************
2 -> 3: 16 | ********* |
4 -> 7: 6 | *** |
8 -> 15: 21 | ************ |
16 -> 31: 16 | ********* |
32 -> 63: 5 | ** |
64 -> 127: 1 | |
21:33:41
Msecs: distribuição de contagem
0 -> 1: 60 | ************************ |
2 -> 3: 100 | ***********************************************
4 -> 7: 41 | **************** |
8 -> 15: 11 | **** |
16 -> 31: 9 | *** |
32 -> 63: 6 | ** |
64 -> 127: 4 | * |
21:33:42
Msecs: distribuição de contagem
0 -> 1: 110 | *********************************************
2 -> 3: 78 | ********************************
4 -> 7: 64 | *********************** |
8 -> 15: 8 | ** |
16 -> 31: 12 | **** |
32 -> 63: 15 | ***** |
64 -> 127: 8 | ** |
[...]
# Biosnoop TEMPO (s) COMM PID DISK T SETOR BYTES LAT (ms) 0.000004001 supervisionar 1950 xvda1 W 13092560 4096 0.74 0.000178002 supervisionar 1950 xvda1 W 13092432 4096 0.61 0.001469001 supervisionar 1956 xvda1 W 13092440 4096 1.24 0.001588002 supervisionar 1956 xvda1 W 13115128 4096 1.09 1.022346001 supervisionar 1950 xvda1 W 13115272 4096 0.98 1.022568002 supervisionar 1950 xvda1 W 13188496 4096 0.93 1.023534000 supervisionar 1956 xvda1 W 13188520 4096 0.79 1.023585003 supervisionar 1956 xvda1 W 13189512 4096 0.60 2.003920000 xfsaild / md0 456 xvdc W 62901512 8192 0.23 2.003931001 xfsaild / md0 456 xvdb W 62901513 512 0.25 2.004034001 xfsaild / md0 456 xvdb W 62901520 8192 0.35 2.004042000 xfsaild / md0 456 xvdb W 63542016 4096 0.36 2.004204001 kworker / 0: 3 26040 xvdb W 41950344 65536 0.34 2.044352002 supervisionar 1950 xvda1 W 13192672 4096 0.65 [...]
# Cachestat
HITS MISSES DIRTIES READ_HIT% WRITE_HIT% BUFFERS_MB CACHED_MB
170610 41607 33 80,4% 19,6% 11 288
157693 6149 33 96,2% 3,7% 11 311
174483 20166 26 89,6% 10,4% 12 389
434778 35 40 100,0% 0,0% 12 389
435723 28 36 100,0% 0,0% 12 389
846183 83800 332534 55,2% 4,5% 13 553
96387 21 24 100,0% 0,0% 13 553
120258 29 44 99,9% 0,0% 13 553
255861 24 33 100,0% 0,0% 13 553
191388 22 32 100,0% 0,0% 13 553
[...]
# Tcpconnect PID COMM IP SADDR DADDR DPORT 25333 recordProgra 4 127.0.0.1 127.0.0.1 28527 25338 curl 4 100.66.3.172 52.22.109.254 80 25340 curl 4 100.66.3.172 31.13.73.36 80 25342 curl 4 100.66.3.172 104.20.25.153 80 25344 curl 4 100.66.3.172 50.56.53.173 80 25365 recordProgra 4 127.0.0.1 127.0.0.1 28527 26119 ssh 6 :: 1 :: 1 22 25388 recordProgra 4 127.0.0.1 127.0.0.1 28527 25220 ssh 6 fe80: 8a3: 9dff: fed5: 6b19 fe80 :: 8a3: 9dff: fed5: 6b19 22 [...]
# Tcpaccept PID COMM IP RADDR LADDR LPORT 2287 sshd 4 11.16.213.254 100.66.3.172 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 2287 sshd 6 :: 1 :: 1 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 2287 sshd 6 fe80 :: 8a3: 9dff: fed5: 6b19 fe80 :: 8a3: 9dff: fed5: 6b19 22 4057 redis-server 4 127.0.0.1 127.0.0.1 28527 [...]
# Tcpretrans TIME PID IP LADDR: LPORT T> RADDR: ESTADO DE RUA 01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABELECIDO 01:55:05 0 4 10.153.223.157:22 R> 69.53.245.40:34619 ESTABELECIDO 01:55:17 0 4 10.153.223.157:22 R> 69.53.245.40:22957 ESTABELECIDO [...]
# Gethostlatency TIME PID COMM LATms HOST 06:10:24 28011 wget 90.00 www.iovisor.org 06:10:28 28127 wget 0.00 www.iovisor.org 06:10:41 28404 wget 9.00 www.netflix.com 06:10:48 28544 curl 35.00 www.netflix.com.au 06:11:10 29054 curl 31.00 www.plumgrid.com 06:11:16 29195 curl 3.00 www.facebook.com 06:11:24 25313 wget 3.00 www.usenix.org 06:11:25 29404 curl 72.00 foo 06:11:28 29475 curl 1.00 foo [...]
# Runqlat -m 5
Rastreamento da latência da fila de execução ... Pressione Ctrl-C para finalizar.
Msecs: distribuição de contagem
0 -> 1: 2085 | ********************************************
2 -> 3: 8 | |
4 -> 7: 20 | |
8 -> 15: 191 | *** |
16 -> 31: 420 | ******** |
Msecs: distribuição de contagem
0 -> 1: 1798 | **********************************************
2 -> 3: 11 | |
4 -> 7: 45 | * |
8 -> 15: 441 | ********* |
16 -> 31: 1030 | ********************** |
Msecs: distribuição de contagem
0 -> 1: 1588 | ************************************************
2 -> 3: 7 | |
4 -> 7: 49 | * |
8 -> 15: 556 | ************** |
16 -> 31: 1206 | *********************************
[...]
# Perfil
Amostragem em 49 Hertz de todos os tópicos pelo usuário + pilha de núcleo ... Pressione Ctrl-C para finalizar.
^ C
[...]
Ffffffff811a2eb0 find_get_entry
Ffffffff811a338d pagecache_get_page
Ffffffff811a51fa generic_file_read_iter
Ffffffff81231f30 __vfs_read
Ffffffff81233063 vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f4757ff9680 read
- dd (14283)
29
Ffffffff8141c067 copy_page_to_iter
Ffffffff811a54e8 generic_file_read_iter
Ffffffff81231f30 __vfs_read
Ffffffff81233063 vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f407617d680 lido
- dd (14288)
32
Ffffffff813af58c common_file_perm
Ffffffff813af6f8 apparmor_file_permission
Ffffffff8136f89b security_file_permission
Ffffffff81232f6e rw_verify_area
Ffffffff8123303e vfs_read
Ffffffff81234565 SyS_read
Ffffffff818739bb entry_SYSCALL_64_fastpath
00007f407617d680 lido
- dd (14288)
39
[...]
$ more tools/biolatency.py #!/usr/bin/python # @lint-avoid-python-3-compatibility-imports # # biolatency Summarize block device I/O latency as a histogram. # For Linux, uses BCC, eBPF. # # USAGE: biolatency [-h] [-T] [-Q] [-m] [-D] [interval] [count] # # Copyright (c) 2015 Brendan Gregg. # Licensed under the Apache License, Version 2.0 (the "License") # # 20-Sep-2015 Brendan Gregg Created this. [...]
$ more tools/biolatency_example.txt
Demonstrations of biolatency, the Linux eBPF/bcc version.
biolatency traces block device I/O (disk I/O), and records the distribution
of I/O latency (time), printing this as a histogram when Ctrl-C is hit.
For example:
# ./biolatency
Tracing block device I/O... Hit Ctrl-C to end.
^C
usecs : count distribution
0 -> 1 : 0 | |
2 -> 3 : 0 | |
4 -> 7 : 0 | |
8 -> 15 : 0 | |
16 -> 31 : 0 | |
32 -> 63 : 0 | |
64 -> 127 : 1 | |
128 -> 255 : 12 |******** |
256 -> 511 : 15 |********** |
512 -> 1023 : 43 |******************************* |
1024 -> 2047 : 52 |**************************************|
2048 -> 4095 : 47 |********************************** |
4096 -> 8191 : 52 |**************************************|
8192 -> 16383 : 36 |************************** |
16384 -> 32767 : 15 |********** |
32768 -> 65535 : 2 |* |
65536 -> 131071 : 2 |* |
The latency of the disk I/O is measured from the issue to the device to its
completion. A -Q option can be used to include time queued in the kernel.
This example output shows a large mode of latency from about 128 microseconds
to about 32767 microseconds (33 milliseconds). The bulk of the I/O was
between 1 and 8 ms, which is the expected block device latency for
rotational storage devices.
The highest latency seen while tracing was between 65 and 131 milliseconds:
the last row printed, for which there were 2 I/O.
[...]
$ nroff -man man/man8/biolatency.8 | more
biolatency(8) biolatency(8)
NAME
biolatency - Summarize block device I/O latency as a histogram.
SYNOPSIS
biolatency [-h] [-T] [-Q] [-m] [-D] [interval [count]]
DESCRIPTION
biolatency traces block device I/O (disk I/O), and records the distri-
bution of I/O latency (time). This is printed as a histogram either on
Ctrl-C, or after a given interval in seconds.
The latency of the disk I/O is measured from the issue to the device to
its completion. A -Q option can be used to include time queued in the
kernel.
This tool uses in-kernel eBPF maps for storing timestamps and the his-
togram, for efficiency.
This works by tracing various kernel blk_*() functions using dynamic
tracing, and will need updating to match any changes to these func-
tions.
Since this uses BPF, only the root user can use this tool.
REQUIREMENTS
CONFIG_BPF and bcc.
OPTIONS
-h Print usage message.
-T Include timestamps on output.
[...]
1 #! / Usr / bin / python
2 # @ lint-avoid-python-3-compatibilidade-importações
3 #
4 # biolatência Resuma a latência de I / O do dispositivo de bloco como um histograma.
5 # Para Linux, usa BCC, eBPF.
6 #
7 # USO: biolatência [-h] [-T] [-Q] [-m] [-D] [intervalo] [contar]
8 #
9 # Direitos autorais (c) 2015 Brendan Gregg.
10 # Licenciado sob a Licença Apache, Versão 2.0 (a "Licença")
11 #
12 # 20-Set-2015 Brendan Gregg Criou isso.
13
14 de __future__ import print_function
15 do BPC de importação do bcc
16 do tempo importar sono, strftime
17 importação argparse
18
19 argumentos
20 exemplos = "" "exemplos:
21 ./biolatency # resume a latência de bloqueio I / O como um histograma
22 ./biolatência 1 10 # imprimir 1 segundo resumos, 10 vezes
23 ./biolatency -mT 1 # 1s resumos, milissegundos e timestamps
24 ./biolatency -Q # inclui o tempo de espera do SO no tempo de E / S
25 ./biolatência -D # mostra cada dispositivo de disco separadamente
26 "" "
27 parser = argparse.ArgumentParser (
28 descrição = "Resumir a latência de I / O do dispositivo de bloco como um histograma",
29 formatter_class = argparse.RawDescriptionHelpFormatter,
30 epilog = exemplos)
31 parser.add_argument ("- T", "--timestamp", action = "store_true",
32 help = "incluir timestamp na saída")
33 parser.add_argument ("- Q", "--queued", action = "store_true",
34 help = "incluir tempo de espera do sistema operacional no tempo de E / S")
35 parser.add_argument ("- m", "--milliseconds", action = "store_true",
36 help = "histograma de milissegundo")
37 parser.add_argument ("- D", "--disks", action = "store_true",
38 help = "imprimir um histograma por dispositivo de disco")
39 parser.add_argument ("interval", nargs = "?", Default = 99999999,
40 help = "intervalo de saída, em segundos")
41 parser.add_argument ("count", nargs = "?", Default = 99999999,
42 help = "número de saídas")
43 args = parser.parse_args ()
44 countdown = int (args.count)
45 debug = 0
46
47 # define o programa BPF
48 bpf_text = "" "
49 #include <uapi / linux / ptrace.h >>
50 #include <linux / blkdev.h>
51
52 typedef struct disk_key {
Disco de 53 caracteres [DISK_NAME_LEN];
Ranhura 54 u64;
55} disk_key_t;
56 BPF_HASH (início, pedido de estrutura *);
57 ARMAZENAMENTO
58
59 // bloqueio de tempo I / O
60 int trace_req_start (struct pt_regs * ctx, struct request * req)
61 {
62 u64 ts = bpf_ktime_get_ns ();
63 start.update (& req, & ts);
64 retornam 0;
65}
66
67 // saída
68 int trace_req_completion (struct pt_regs * ctx, struct request * req)
69 {
70 u64 * colher de chá, delta;
71
72 // buscar timestamp e calcular o delta
73 tsp = start.lookup (& req);
74 se (tsp == 0) {
75 retornar 0; // problema perdido
76}
77 delta = bpf_ktime_get_ns () - * tsp;
78 FATOR
79
80 // armazenar como histograma
81 LOJA
82
83 start.delete (& req);
84 retorna 0;
85}
86 "" "
87
88 # substituições de código
89 se args.milliseconds:
90 bpf_text = bpf_text.replace ('FATOR', 'delta / = 1000000;')
91 label = "msecs"
Mais 92:
93 bpf_text = bpf_text.replace ('FACTOR', 'delta / = 1000;')
94 label = "usecs"
95 se args.disks:
96 bpf_text = bpf_text.replace ('ARMAZENAMENTO',
97 'BPF_HISTOGRAM (dist, disk_key_t);')
98 bpf_text = bpf_text.replace ('STORE',
99 'chave disk_key_t = {.slot = bpf_log2l (delta)}; '+
100 'bpf_probe_read (& key.disk, sizeof (key.disk),' +
101 'req-> rq_disk-> disk_name); Dist.incremento (chave); ')
Mais 102:
103 bpf_text = bpf_text.replace ('ARMAZENAMENTO', 'BPF_HISTOGRAMA (dist);')
104 bpf_text = bpf_text.replace ('STORE',
105 'dist.increment (bpf_log2l (delta));')
106 se debug: 107 imprimir (bpf_text)
108 109 # load BPF program 110 b = BPF (texto = bpf_text) 111 se args.queued: 112 b.attach_kprobe (evento = "blk_account_io_start", fn_name = "trace_req_start") Mais 113: 114 b.attach_kprobe (evento = "blk_start_request", fn_name = "trace_req_start") 115 b.attach_kprobe (evento = "blk_mq_start_request", fn_name = "trace_req_start") 116 b.attach_kprobe (evento = "blk_account_io_completion", 117 fn_name = "trace_req_completion") 118
119 imprimir ("Detecção de bloqueio do dispositivo I / O ... Pressione Ctrl-C para finalizar.")
120
121 # saída
122 saindo = 0 se args.interval else 1
123 dist = b.get_table ("dist")
124 enquanto (1):
125:
126 sleep (int (args.interval))
127, exceto KeyboardInterrupt:
128 saindo = 1
129
130 imprimir ()
131 if args.timestamp:
132 imprimir ("% - 8s \ n"% strftime ("% H:% M:% S"), final = "")
133
134 dist.print_log2_hist (rótulo, "disco")
135 dist.clear ()
136
Contagem regressiva 137 - = 1
138 se sair ou contagem regressiva == 0:
139 exit ()
# Biolatência
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
^ C
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 1 | |
128 -> 255: 12 | ******** |
256 -> 511: 15 | ********** |
512 -> 1023: 43 | ******************************* |
1024 -> 2047: 52 | ***************************************
2048 -> 4095: 47 | *************************************
4096 -> 8191: 52 | ****************************************
8192 -> 16383: 36 | *******************************
16384 -> 32767: 15 | ********** |
32768 -> 65535: 2 | * |
65536 -> 131071: 2 | * |
# Biolatência -D
Rastreamento do dispositivo do bloco I / O ... Pressione Ctrl-C para finalizar.
^ C
Disk = 'xvdb'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 18 | **** |
128 -> 255: 167 | **********************************************
256 -> 511: 90 | ********************* |
Disk = 'xvdc'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 22 | **** |
128 -> 255: 179 | **************************************************************************
256 -> 511: 88 | ******************* |
Disco = 'xvda1'
Usecs: distribuição de contagem
0 -> 1: 0 | |
2 -> 3: 0 | |
4 -> 7: 0 | |
8 -> 15: 0 | |
16 -> 31: 0 | |
32 -> 63: 0 | |
64 -> 127: 0 | |
128 -> 255: 0 | |
256 -> 511: 167 | **********************************************
512 -> 1023: 44 | ********** |
1024 -> 2047: 9 | ** |
2048 -> 4095: 4 | |
4096 -> 8191: 34 | ******** |
8192 -> 16383: 44 | ********** |
16384 -> 32767: 33 | ******* |
32768 -> 65535: 1 | |
65536 -> 131071: 1 | |
Comentários
Postar um comentário