Compreendendo a média de alta carga com vmstat, mpstat, sar e top

0

Estou tentando entender a média de carga do meu sistema quando ocioso. Aqui estão alguns resultados depois que o sistema foi executado por algumas horas, com quase nada instalado.

vmstat

root@arm:~# vmstat 1
procs -----------memory---------- ---swap-- -----io---- -system-- ----cpu----
 r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa
 0  0      0  62092  17860 135940    0    0     9    21  158  245  1  1 97  0
 0  0      0  62092  17860 135940    0    0     0     0  105  137  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  128  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  174  0  0 100  0
 0  0      0  62060  17860 135940    0    0     0     0  105  155  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  134  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  127  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  106  133  0  0 100  0
 0  0      0  62092  17860 135940    0    0     0     0  105  129  0  0 100  0
 0  0      0  62092  17868 135940    0    0     0    52 2101 4081  0  4 95  1
 0  0      0  62092  17868 135940    0    0     0     0  103  173  0  0 100  0
 0  0      0  62060  17868 135940    0    0     0     0  103  129  0  0 100  0

mpstat

root@arm:~# mpstat 1
Linux 3.10.0 (arm)  03/25/15    _armv7l_    (1 CPU)

20:02:04     CPU    %usr   %nice    %sys %iowait    %irq   %soft  %steal  %guest   %idle
20:02:05     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:06     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:07     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:08     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:09     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:10     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:11     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:12     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:13     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00
20:02:14     all    0.00    0.00    0.00    0.00    0.00    0.99    0.00    0.00   99.01
20:02:15     all    0.00    0.00    0.00    0.00    0.00    0.99    0.00    0.00   99.01
20:02:16     all    0.00    0.00    0.00    0.00    0.00    0.00    0.00    0.00  100.00

sar

root@arm:~# sar
Linux 3.10.0 (arm)  03/25/15    _armv7l_    (1 CPU)

17:53:42          LINUX RESTART

17:54:01        CPU     %user     %nice   %system   %iowait    %steal     %idle
17:55:01        all      0.25      0.00      0.63      0.00      0.00     99.12
17:56:01        all      0.07      0.00      0.47      0.00      0.00     99.47
17:57:01        all      0.25      0.00      0.43      0.02      0.00     99.30
17:58:01        all      0.20      0.00      0.47      0.03      0.00     99.30
17:59:02        all      0.13      0.00      0.30      0.03      0.00     99.53
18:00:01        all      0.08      0.00      0.36      0.02      0.00     99.54
18:01:01        all      0.12      0.00      0.45      0.02      0.00     99.4

Todas as três possibilidades têm resultados semelhantes. Agora para o topo ..

topo

top - 19:50:39 up  2:47,  1 user,  load average: 0.81, 0.77, 0.77
Tasks:  50 total,   1 running,  49 sleeping,   0 stopped,   0 zombie
%Cpu(s):  1.4 us,  0.8 sy,  0.0 ni, 97.3 id,  0.4 wa,  0.0 hi,  0.1 si,  0.0 st
KiB Mem:    251692 total,   189540 used,    62152 free,    17724 buffers
KiB Swap:        0 total,        0 used,        0 free,   135920 cached

  PID USER      PR  NI  VIRT  RES  SHR S  %CPU %MEM    TIME+  COMMAND                               
 5249 root      20   0  3100 1176  864 R  10.7  0.5   0:00.07 top                                   
    1 root      20   0  2104  708  612 S   0.0  0.3   0:01.16 init                                  
    2 root      20   0     0    0    0 S   0.0  0.0   0:00.01 kthreadd                              
    3 root      20   0     0    0    0 S   0.0  0.0   0:00.05 ksoftirqd/0                           
    5 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kworker/0:0H                          
    6 root      20   0     0    0    0 S   0.0  0.0   0:00.25 kworker/u2:0                          
    7 root      20   0     0    0    0 S   0.0  0.0   0:00.01 rcu_preempt                           
    8 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_bh                                
    9 root      20   0     0    0    0 S   0.0  0.0   0:00.00 rcu_sched                             
   10 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 khelper                               
   11 root      20   0     0    0    0 S   0.0  0.0   0:00.00 kdevtmpfs                             
  202 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 writeback                             
  204 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 bioset                                
  206 root       0 -20     0    0    0 S   0.0  0.0   0:00.00 kblockd                               
  235 root      20   0     0    0    0 S   0.0  0.0   0:00.00 khubd      

Observe que a média de carga é [0,81, 0,77, 0,77] !

Alguma ideia do que está acontecendo para causar uma "média de carga" tão alta?

EDIT: Esta pergunta não é sobre o que é a média de carga.

"carrega números médios que dão o número de trabalhos na fila de execução (estado R) ou espera por E / S de disco (estado D)"

Como pode haver processos de estado D se a E / S é quase zero e como há tantos trabalhos na fila de execução? Existe uma maneira de saber quais empregos estão lá?

    
por user791953 25.03.2015 / 21:38

2 respostas

2

média de carga é um termo relativo; é possível ter 0,01, 3,00, 14,00 - é apenas um indicador de quanto trabalho é feito em backup, que é uma função de quantos núcleos você tem disponível. Em um sistema de 4 núcleos, 3.9 significa que nada é feito backup (mas quase ...).

Analisando sua saída de top , vejo que você está usando 10,7% de sua CPU apenas por top . Eu vou adivinhar, mas você tem um núcleo final inferior. Nesse caso, as médias seriam fáceis de subir na faixa de 0,8.

É importante observar que a média de carga NÃO é diretamente compatível com a% não inativa da sua CPU, mas sim com a quantidade de trabalho que está passando e em qual nível a contenção está (se houver).

Aqui está uma resposta mais exaustiva para as complexidades de como o loadavg é realmente calculado: link

    
por 25.03.2015 / 21:51
0

Assumindo que o perf funciona no seu sistema (ele simplesmente cai no meu laptop antigo), você pode obter uma contagem de CPU mais refinada, que mostra% do total, ou seja, ignora todo o seu tempo ocioso, percentagens:

perf top --sort=comm

Eu acho que isso realmente não ajuda como se fosse mais relacionado a IO, apesar de que pelo menos irá destacar as principais tarefas que estão realmente acordando, e não apenas dormindo o tempo todo.

    
por 09.06.2016 / 09:27