Linux na memória iMX6 e CMA

2

Nós temos um sistema linux embutido (yocto 1.8) rodando em uma placa i.MX6 com 1GByte de RAM. O kernel está configurado para ter 320MByte de CMA reservado e sem swap. Kernel 3.10.53

Quando executamos uma pequena aplicação de teste apenas para consumir memória, vemos um comportamento estranho quando chegamos a cerca de 250MBytes livres, os buffers / caches começam a diminuir e a memória livre fica em torno de 250MByte. Se continuarmos alocando memória, o sistema se torna cada vez mais lento até que ele pare completamente ou o assassino da OOM entra em ação.

Eu acho que o que eu estou querendo saber é como o CMA realmente funciona, porque nós desativamos o CMA, nós vemos o mesmo comportamento acima, mas acontece quando temos cerca de 40-50MBytes livres, e eu acredito que é esperado . Depois de ler sobre CMA eu acredito que o pool não deve ser retido completamente do sistema, ele ainda deve ser viável para caches etc, mas no nosso caso, parece que o sistema descarta os caches enquanto ainda resta muita memória.

Alguém sabe se esse é o comportamento esperado ou se existe um lugar melhor para colocar essa questão?

Editar: Parece que alteramos o valor de vm.min_free_kbytes para 32MBytes. Mudar de volta para o valor padrão parece nos permitir usar toda a memória.

Ainda não temos certeza de como o CMA está realmente afetando o sistema, mas isso pode não ser tão importante mais.

    
por Bjorn Bosell 23.10.2015 / 08:33

0 respostas