Como faço para descobrir o que está congelando minha máquina?

10

Estou executando o Arch nesta máquina:

3.40GHz i7 hexacore (4930K)

16GB DDR3 1600MHz RAM

2x SSDs Samsung 840 EVO em Raid0 (usando ataque BTRFS)

Quando executo o VMware no meu Arch com algumas VMs (2 ou 3), fornecendo a eles cerca de 2 a 4 núcleos cada e 2 GB de RAM cada, meu sistema começa a congelar aleatoriamente. A cada dois minutos, o sistema congela por 10 a 30 segundos e começa a se mover novamente, apenas para congelar 30 segundos depois até eu desligar as VMs. Quando o sistema congela, o mouse ainda se move bem, mas os aplicativos param de responder no host - o vmware não responde, o firefox (que também está aberto no host) não responde, etc.

Quando o congelamento acontece, se eu tiver o monitor de processo em execução, ele mostra vários núcleos estendidos pelo vmware, mas, ao mesmo tempo, existem outros núcleos não utilizados. Eu também tenho RAM mais que suficiente - as VMs usam um total de 6 GB e o host tem 10 GB restantes. Eu tenho 0 espaço de troca, então não há como a troca estar atrasando nada.

Há relatos de que, como o btrfs causa fragmentação de arquivos no nível do sistema de arquivos, as máquinas virtuais podem ficar lentas. No entanto, até onde eu sei, a fragmentação é apenas um problema nos discos rígidos tradicionais - os SSDs não têm cabeças de leitura que procuram, portanto, não se importam se um arquivo é altamente fragmentado.

Isso nunca acontecia quando eu estava executando o Debian 7, então tenho certeza que não é um problema de hardware.

Quais ferramentas posso executar para descobrir por que meu sistema continua congelando? Eu tentei top / htop e iotop (nada está escrevendo ou lendo excessivamente quando o sistema congela). Não parece haver nenhum tipo de monitor de atividade para o btrfs dizer se está tendo problemas para acompanhar a escrita / leitura de qualquer coisa. Há mais alguma coisa que eu possa tentar?

Tal
fonte
Pode estar relacionado ao uso associado ao LUKS: unix.stackexchange.com/questions/203677/…
brauliobo

Respostas:

15

Na página de dicas do btrfs :

Arquivos com muitas gravações aleatórias podem ficar muito fragmentados (mais de 10000 extensões), causando lixeira nos HDDs e picos excessivos de vários segundos de carga da CPU em sistemas com um SSD ou grande quantidade de RAM.

  • Em servidores e estações de trabalho, isso afeta bancos de dados e imagens de máquinas virtuais.

    • A opção de montagem nodatacow pode ser útil aqui, com dicas associadas.

    ...

  • Os sintomas incluem btrfs-transacti e btrfs-endio-wri, consumindo muito tempo da CPU (em picos, possivelmente acionados por sincronizações). Você pode usar o filefrag para localizar arquivos muito fragmentados (pode não funcionar corretamente com a compactação).

Eu tive problemas semelhantes aos que você descreve com o Virtualbox. A nodatacowopção para btrfs não ajudou de maneira perceptível no meu sistema. Tentei também a opção de desfragmentação automática (mencionada como uma possível solução para bancos de dados de aplicativos em ambientes de desktop), também sem resultados que tornariam o comportamento aceitável.

No final, reduzi minha partição btrfs e o Volume lógico em que ele vive, criei um novo LV e o formatou como ext4 e, em seguida, coloquei as imagens de disco da VM que tenho (VirtualBox) nessa "partição".

Anthon
fonte
Definitivamente, parece o meu problema. Na verdade, eu estava procurando uma maneira de verificar como um arquivo estava fragmentado, mas desisti quando li que a fragmentação não afeta os SSDs como os HDDs. Aparentemente, o lugar que li que não era totalmente exato - ainda afeta os SSDs - é muito interessante. Vou tentar o filefrag, e talvez redimensionar minha partição btrfs e mover minhas VMs para uma partição ext4 como você fez, e relatar de volta. Obrigado
Tal
0

Pode ser um problema transparente de grandes páginas, onde um thread do khugepaged está literalmente minerando sua RAM para desfragmentá-la ou criando páginas enormes a partir de 4K.

O kernel poderia ter decidido habilitar páginas enormes, dada a quantidade bastante grande de RAM do sistema.

Verifique o conteúdo desses dois ajustáveis ​​do kernel:

/sys/kernel/mm/transparent_hugepage/enabled
/sys/kernel/mm/transparent_hugepage/defrag

Se o conteúdo deles for always, você poderá alterar nevere ver se os picos / congelamentos da CPU desaparecem.

Marco De Lellis
fonte
o problema está em lags escrita e não relacionada ao uso de CPU
brauliobo
0

O problema foi completamente resolvido ao não usar LUKS na partição. Então, eu formatei a partição diretamente com BTRFS e não com LUKS primeiro.

Também montado com os seguintes parâmetros:

/dev/sda2 /           btrfs       rw,noatime,space_cache,compress=lzo,ssd,discard,autodefrag,commit=0,thread_pool=8 0 0

Relacionado ao desempenho de gravação Abysmal General dm-crypt (LUKS)

brauliobo
fonte