Se você der uma olhada no diagrama que publiquei neste P & D Q & A intitulado: Diagrama do kernel Linux versus ferramentas de desempenho? mostra o subsistema do kernel do Linux em que cada uma dessas ferramentas está exibindo dados de desempenho.
iotop
objetivo principal é mostrar estatísticas do ponto de vista da interface do dispositivo de bloco. Então, esse seria seu disco rígido, por exemplo. Enquanto vmstat
mostra estatísticas do subsistema de memória virtual do kernel.
Este parágrafo da página de manual do iotop
também explica o que está acontecendo:
iotop displays columns for the I/O bandwidth read and written by each process/thread during the sampling period. It also displays the percentage of time the thread/process spent while swapping in and while waiting on I/O. For each process, its I/O priority (class/level) is shown.
Exemplo
Total DISK READ : 0.00 B/s | Total DISK WRITE : 36.93 K/s
Actual DISK READ: 0.00 B/s | Actual DISK WRITE: 0.00 B/s
TID PRIO USER DISK READ DISK WRITE SWAPIN IO> COMMAND
303 be/3 root 0.00 B/s 29.54 K/s 0.00 % 4.42 % [jbd2/dm-1-8]
29559 be/4 saml 0.00 B/s 7.39 K/s 0.00 % 0.00 % google-chrome-stable [Chrome_HistoryT]
Assim, no exemplo acima, o jdb2 gastou 4.42% do seu tempo esperando por recursos de E / S. Isso é sobre a sua vida, não neste momento particular.
A saída de vmstat
está mostrando as estatísticas em andamento da memória virtual, indicando as páginas que estão sujas ou precisam ser empurradas / extraídas da troca, portanto, você está vendo essas páginas sendo transportadas por lá. Você não tem indicações de vmstat
a que processo essas páginas pertencem, apenas que houve páginas trocadas in / out.
$ vmstat 5
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
r b swpd free buff cache si so bi bo in cs us sy id wa
2 0 2990956 1429112 45664 712416 8 15 50 149 7 33 34 5 60 2
0 0 2990948 1385392 45696 725096 0 0 2009 36 833 1556 6 1 92 1
0 0 2990948 1380700 45704 726516 0 0 0 16 700 1423 3 1 95 1
2 0 2990944 1386960 45760 724400 3 0 3 264 1075 1837 5 1 91 3
O si
& so
colunas são as estatísticas relacionadas a troca.
Então por que o si do vmstat mostra 0?
O valor relatado para si é, na verdade, uma taxa de valor de mudança (quantidade movida por segundo). Veja este artigo intitulado: Use o vmstat para monitorar o desempenho do sistema :
The swap section reports the rate that memory is sent to or retrieved from the swap system. By reporting “swapping” separately from total disk activity, vmstat allows you to determine how much disk activity is related to the swap system.
The si column reports the amount of memory that is moved from swap to “real” memory per second. The so column reports the amount of memory that is moved to swap from “real” memory per second.
Dado isso, é provável que, mesmo que um processo esteja relatando que está usando swap através de iostat
, esse uso de swap provavelmente não seja suficiente para ser capturado ao longo de um segundo que seria mostrado em vmstat
' s medição "si".