Muito vermelho no htop - isso significa que minhas tarefas estão tropeçando umas nas outras?

4

Euliqueacorvermelhaindica"processos do kernel". Isso significa que pequenos daemons estão regulando qual tarefa consegue usar a CPU? E por extensão, custos de transação em um sistema com excesso de assinaturas?

Estou executando alguns trabalhos de geoprocessamento em grande escala e tenho dois scripts em execução paralelamente ao mesmo tempo.

O primeiro script faz o processamento real, em todos os 96 núcleos. É responsável por quase todo o uso de memória.

O segundo script usa curl para baixar os dados para alimentar o primeiro processo, e faz isso em paralelo. Eu escrevi para fazer o download apenas até que haja n_cores * 3 arquivos baixados. Se essa restrição não for atendida, ela espera por um minuto ou mais e, em seguida, verifica novamente. Então, na maior parte do tempo, ele não está sendo executado - ou melhor, está executando o comando Sys.sleep() em R .

Eu experimentei usar menos núcleos para o processo de download. Quando faço isso, não consigo acompanhar o script de processamento (sou DLing do S3).

TL; DR: Meus processos seriam mais rápidos se eu conseguisse tornar htop menos vermelho? E eles são vermelhos porque existem mais processos do que núcleos?

    
por generic_user 20.02.2018 / 16:50

1 resposta

8

Vermelho representa o tempo gasto no kernel, geralmente processando as chamadas do sistema em nome dos processos. Isso inclui o tempo gasto em E / S. Não adianta tentar reduzir apenas para reduzi-lo, porque não é tempo desperdiçado - é tempo gasto pelo kernel fazendo coisas úteis (contanto que você não esteja se debatendo, então olhe o número de interruptores de contexto, etc.).

I've experimented with using fewer cores for the downloading process. When I do so, it can't keep up with the processing script (I'm DLing from S3).

sugere que sua configuração atual é equilibrada de forma equilibrada entre a E / S necessária para alimentar o processamento e o processamento em si, o que é um resultado bastante interessante. Se você suspeitar que tem muitos processos em execução e que isso causa desperdício (debulhando), tente reduzir o número de trabalhos de geoprocessamento para ver se a taxa de transferência geral aumenta. As dicas comuns de benchmarking se aplicam: identifique o que você vai ajustar, determine quais variações resultantes podem ocorrer e o que elas significam, apenas ajuste uma coisa de cada vez e meça tudo.

    
por 20.02.2018 / 18:55