Um tmpfs pode se fragmentar?

6

Como um tmpfs existe apenas na memória, ele pode se tornar fragmentado como a memória pode? Existem mecanismos para desfragmentar automaticamente a memória e, assim, aumentar - mesmo que ligeiramente - a velocidade de acesso dos arquivos armazenados?

    
por Laurent Pireyn 30.06.2011 / 23:52

2 respostas

10

Até onde eu sei, não há maneiras de desfragmentar um sistema de arquivos tmpfs (pelo menos não no FreeBSD, Linux ou Solaris).

Dependendo da implementação subjacente, é possível que tmpfs se tornem fragmentados (por exemplo, algumas implementações tmpfs não estão na RAM - elas consomem espaço de swap: Dependendo do algoritmo de alocação, o espaço de swap alocado pode ser fragmentado e mostrar uma queda de velocidade perceptível ).

Também é possível que tmpfs na RAM se tornem "fragmentados", mas isso não é uma preocupação prática: a RAM é "rápida o suficiente" e você desperdiça mais tempo de CPU tentando "desfragmentar" do que perderia acessando Seções não contíguas de RAM (sem atraso rotacional para se preocupar, e a sobrecarga extra para o MMU ou equivalente para acessar seções não contíguas de RAM versus uma série contígua de páginas é pequena o suficiente para que você possa provavelmente negligenciá-la.

Francamente, se você está preocupado com este nível de desempenho, você não quer estar usando o tmpfs, porque a sobrecarga da camada VFS para fazer a RAM parecer um sistema de arquivos é muitas ordens de grandeza pior do que qualquer problema de fragmentação de memória que você possa encontrar (troca de contexto, etc.).

    
por 01.07.2011 / 00:10
1

Todas as implementações do tmpfs são suportadas pela memória virtual, não pela física. A questão, então, não faz muito sentido, já que áreas contíguas de memória virtual são muito improváveis de serem contíguas no nível físico e podem nem mesmo estar presentes na RAM, dependendo da demanda.

    
por 01.07.2011 / 00:23