Acabei de comprar um Phenom de 6 núcleos com 16G de RAM. Eu uso principalmente para compilação e codificação de vídeo (e web / db ocasional). Eu estou achando que todas as atividades estão ligadas ao disco e eu simplesmente não consigo manter todos os 6 núcleos alimentados. Estou comprando uma invasão SSD para ficar entre o HDD e o tmpfs.
Eu quero configurar um sistema de arquivos "em camadas" onde as leituras são armazenadas em cache no tmpfs, mas as gravações são seguras para o SSD. Eu quero que os arquivos (ou blocos) que não foram lidos recentemente no SSD sejam gravados em um HDD usando uma camada de bloco ou FS compactada.
Então, basicamente, lê:
- Verifique os tmpfs
- Verifique o SSD
- Verifique HD
E escreve:
- Direto para SSD (por segurança), então tmpfs (para velocidade)
E periodicamente, ou quando o espaço fica baixo:
- Mova os arquivos acessados com menos frequência para baixo em uma camada.
Eu vi alguns projetos de interesse. CacheFS, cachefsd, bcache parecem bem próximos, mas estou tendo problemas para determinar quais são práticos. O bcache parece um pouco arriscado (adoção antecipada), o cachefs parece estar ligado a sistemas de arquivos de rede específicos.
Existem projetos "union" unionfs e aufs que permitem montar sistemas de arquivos uns sobre os outros (dispositivo USB em DVD normalmente), mas ambos são distribuídos como um patch e tenho a impressão de que esse tipo de montagem "transparente" tornar-se um recurso do kernel em vez de um FS.
Eu sei que o kernel tem um cache de disco embutido, mas parece não funcionar bem com a compilação. Eu vejo uma melhoria de velocidade de 20x quando eu movo meus arquivos de origem para tmpfs. Eu acho que é porque os buffers padrão são dedicados a um processo específico e a compilação cria e destrói milhares de processos durante uma compilação (apenas adivinhando lá). Parece que eu realmente quero esses arquivos pré-armazenados.
Eu li que o tmpfs pode usar memória virtual. Nesse caso, é prático criar um tmpfs gigante com swap no SSD?
Eu não preciso inicializar o sistema de arquivos em camadas resultante. Eu posso carregar o grub, kernel e initrd de outro lugar, se necessário.
Então esse é o pano de fundo. A questão tem vários componentes, eu acho:
- FS e / ou camada de bloco recomendada para o SSD e o HDD compactado.
- Parâmetros mkfs recomendados (tamanho do bloco, opções etc ...)
- Tecnologia de cache / montagem recomendada para vincular as camadas de maneira transparente
- Parâmetros de montagem obrigatórios
- Opções / correções necessárias do kernel, etc.