O kernel do Linux pode usar tamanho de página de memória virtual padrão maior que 4KB sem modificação do kernel?

1

Estamos projetando uma CPU que se beneficiaria de um tamanho de página de memória virtual de 16 KB (ela tornará o acesso ao cache menor poder e melhorará o desempenho em nossas cargas de trabalho de destino, fragmentação de memória não é um problema). O tamanho da página padrão é de 4KB. A fonte do kernel tem uma maneira simples de configurar o tamanho de página padrão para 16KB? Ou precisaremos modificar a fonte do kernel para mudar de 4KB para 16KB? Quais efeitos colaterais involuntários aconteceriam, digamos, com sistemas de arquivos, por ter um tamanho de página de memória virtual de 16 KB?

Se você tem alguma URL para aprofundar isso no kernel do Linux, isso seria ótimo.

Obrigado: -)

    
por seanhalle 25.03.2018 / 03:29

1 resposta

1

Sim, o kernel do Linux tem suporte para tamanhos de página diferentes de 4KB e, em alguns casos, padrão para esses tamanhos de página.

Na arquitetura x86_64, apenas 4KB é suportado (AFAIK), já que é a única coisa que esses chips podem fazer ...

Como exemplo, a arquitetura ppc64 tem como padrão páginas de 64KB, embora haja uma configuração de tempo de compilação do kernel para usar páginas 4KB (embora seja menos testada que a de 64KB, então talvez não seja recomendada por esse motivo.)

Para a plataforma aarch64 (ARM) Acredito que o kernel tenha suporte para tamanhos de página de 4KB, 16KB e 64KB, por ter visto esses tamanhos de página no ARM com o Linux sendo executado neles. (Acredito que todos estão vindo do kernel upstream).

Você diz "estamos projetando uma CPU" e fala sobre modificações na fonte do kernel ... Bem, se for uma nova arquitetura, você precisará adicionar suporte a ela no kernel e isso inclui suporte ao tamanho da página! Se é uma implementação de uma arquitetura existente (como aarch64), então você pode ser capaz de usar o suporte existente, embora seja provável que você precise adicionar algo sobre sua CPU específica ao kernel para suportá-la ...

Em relação aos sistemas de arquivos, o tamanho do bloco do sistema de arquivos não precisa corresponder ao tamanho da página. É possível usar o ext4 formatado com o tamanho de bloco padrão de 4KB em máquinas com tamanho de página de 16 KB ou 64 KB.

Aquele em que esses dois tendem a se inter-relacionar é o uso de O_DIRECT para ignorar o cache de páginas ao ler / gravar no sistema de arquivos. Mas isso ainda funciona, os kernels mais recentes em geral requerem apenas alinhamento no limite de 512 bytes.

Em outras palavras, não há requisitos para que o tamanho da página e o tamanho do bloco do sistema de arquivos correspondam de alguma forma.

    
por 25.03.2018 / 05:43