iotop mostra kswapd0 a 99.99% com 0% DISK READ e DISK WRITE

7

Eu tenho uma consulta pesada de postgres. Demora mais de dez minutos para ser executado. Eu gostaria de atualizar meu hardware para que ele seja executado mais rapidamente. Acho que mais RAM ajudará, mas minha placa-mãe está cheia, então precisarei de uma placa-mãe totalmente nova. Eu não quero investir a menos que eu saiba que terei melhores resultados. Aqui está o que eu vejo no iotop:

Total DISK READ:      46.81 M/s | Total DISK WRITE:       0.00 B/s
  TID  PRIO  USER     DISK READ  DISK WRITE  SWAPIN     IO>    COMMAND                                                                                                                                               
   27 be/4 root        0.00 B/s    0.00 B/s  0.00 % 99.99 % [kswapd0]
 2514 be/4 postgres   46.81 M/s    2.45 M/s  0.00 % 18.36 % postgres: postgres db1 127.0.0.1(55328) SELECT
    1 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % init
    2 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kthreadd]
    3 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/0]
    4 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/0:0]
    5 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/u:0]
    6 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/0]
    7 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [watchdog/0]
    8 rt/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [migration/1]
    9 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [kworker/1:0]
   10 be/4 root        0.00 B/s    0.00 B/s  0.00 %  0.00 % [ksoftirqd/1]

Observe como o kswapd0 está atingindo mais o disco rígido (99,99% IO). No entanto, o DISK READ e o DISK WRITE e o SWAPIN do kswap0 são todos zero. O que o kswap0 está fazendo? Isso está realmente batendo no meu disco rígido? Adicionaria mais RAM a este sistema de ajuda?

    
por User1 27.06.2012 / 20:54

4 respostas

2

Você está se aproximando disso do ângulo errado. Somente após otimizar seu SQL, você deve considerar lançar mais RAM / CPU / Disco (largura de banda de E / S) no problema - e resolver o problema como você o identificou.

Primeiro, peça ao Postgres para EXPLAIN (ou EXPLAIN ANALYZE ) como ele está realizando a consulta.
Otimize os gatinhos cada vez mais carinhosos e, se você ainda tiver problemas de desempenho, investigue mais para determinar onde está o gargalo ( sonassi deu a você algumas boas sugestões sobre coisas que você deve olhar além de iotop ).

Se você estiver executando sua pilha da web e banco de dados no mesmo servidor, agora é um bom momento para dividi-los também ...

    
por 27.06.2012 / 21:49
0

tem 110% de certeza de que não há problemas com o seu sistema IO-sub - por exemplo, todos os discos rígidos estão bem [autoteste de teste], o cache write-back está ativado [se você tiver cache suportado por bateria no cartão RAID] ?

o postgres não está saturando o IO por transferência de leitura de 48MB / s?

    
por 27.06.2012 / 21:02
0

O kswapd faz parte do trabalho necessário para lidar com a memória virtual no linux. Então, ter 100% poderia sugerir que está fazendo muito trabalho, embora também possa ser que esteja apenas morrendo de fome devido aos recursos tomados pelo seu processo de PG (por exemplo, não ter memória RAM para os buffers IO).

Eu verificaria quanta memória RAM é usada / não utilizada por meio das ferramentas usuais.

Em relação à falta de estatísticas além da coluna de E / S para o kswapd0, não estou certo de que a explicação a seguir esteja correta, mas pode ser que o kernel não possa rastrear o swapin / swapout no espaço do kernel (que é onde o kswapd reside), porque o Linux simplesmente não troca nada por páginas alocadas no espaço do kernel.

    
por 27.06.2012 / 21:05
0

Você não mencionou nenhuma outra informação importante para o diagnóstico.

free -m
cat /proc/meminfo
top -b

É provável que a E / S de kswapd esteja apenas sendo pseudo relatada em relação a postgres . Um dos processos provavelmente estará no estado D , mas todos os dados dos comandos acima serão confirmados. Embora seja curioso que swapin esteja vazio.

    
por 27.06.2012 / 21:08