Quero criar um ramdisk Linux de tamanho fixo que nunca troque para o disco. Note que minha pergunta não é "por que" eu quero fazer isso (digamos, por exemplo, que seja para fins educativos ou de pesquisa): a questão é como fazê-lo.
Pelo que entendi ramfs
, o tamanho não pode ser limitado, por isso não se enquadra no meu requisito de ter um ramdisk de tamanho fixo.
Parece também que tmpfs
pode ser trocado para o disco. Portanto, ele não se encaixa no meu requisito de nunca trocar para o disco.
Como você pode criar um ramdisk Linux de tamanho fixo que nunca é trocado para o disco?
É possível, por exemplo, criar tmpfs
dentro de uma ramfs
(essa solução atenderia aos meus requisitos) e, em caso afirmativo, como?
Observe que o desempenho não é um problema e o ramdisk fica cheio e desencadeia erros de "disco cheio" também não é um problema.
fonte
ram
dispositivodev
. Caso contrário, tentemodprobe rd
.Respostas:
Este é apenas um pensamento e tem mais de uma desvantagem, mas pode ser utilizável o suficiente de qualquer maneira.
Que tal criar um arquivo de imagem e um sistema de arquivos dentro dele, sobre ramfs, e montar a imagem como um dispositivo de loop? Dessa forma, você pode limitar o tamanho do ramdisk simplesmente limitando o tamanho do arquivo de imagem. Por exemplo:
No exemplo (um pouco longo) acima, o arquivo de imagem é criado para ter 2 megabytes e, ao tentar gravar mais de 2 megabytes, a gravação simplesmente falha porque o sistema de arquivos está cheio.
Uma redução óbvia de tudo isso é, obviamente, que há muita complexidade adicional, mas pelo menos para fins acadêmicos, isso deve ser suficiente.
fonte
O livro (datado!) "Linux Device Drivers" de Corbet, Rubini e Kroah-Hartman possui um exemplo de driver que apenas aloca uma área de memória fixa para brincar. Não é um sistema de arquivos, mas ...
fonte
Não pode ser feito. Toda a RAM está sujeita a paginação pelo design de hardware da CPU e pelo microkernel do Linux. Não há motivos legítimos para tratar a memória de outra forma. TODOS os algoritmos de software PODEM ser adaptados para usar o esquema de cache de arquivos e a memória paginada. Virtual é SEMPRE melhor e mais eficiente.
Os discos de RAM de tamanho limitado são contrários aos princípios básicos do mundo virtual. Você deve assumir que apenas solicitações de arquivos úteis estão sendo feitas para o sistema de arquivos host e que todas essas solicitações têm igual importância e prioridade no mundo virtual (o único modelo que conta).
Foi comprovado matematicamente que mesmo processos em tempo real se encaixam nessa regra. Se você tiver um problema de velocidade, NUNCA PODE resolver usando RAM como armazenamento == todo o sistema host precisa operar mais rapidamente da CPU para o barramento de E / S e para o dispositivo de armazenamento permanente. Todos os problemas de computação degenerados, exceto artificiais, têm ramificações e requisitos de E / S de arquivo suficientes para que o aumento da velocidade média do cache da RAM seja o melhor que você pode fazer.
fonte
mlock()
mlock2()
mlockall()