Eu sinto que isso é um pouco de uma duplicata de essa outra pergunta sobre tornar o cache mais agressivo , mas eu tentei muitas das sugestões e não consigo entender por que estou tendo problemas.
Meu cenário é que eu tenho o Ubuntu 12.10 em uma pequena unidade flash USB que mantenho no meu chaveiro. (Eu uso isso para momentos em que preciso resgatar o PC de alguém ou quando quero ter meu próprio desktop com minhas próprias configurações e favoritos, etc. não importa em que PC eu me encontro na frente).
O problema é que o sistema é terrivelmente lento.
Agora, a unidade flash USB é bastante lenta, então eu sei que tenho que fazer algumas concessões. No entanto, atualmente estou tentando executá-lo em uma máquina i7 com 8GB de RAM. "free" e "top" informam que o sistema está usando menos de 2,7 GB ...
total used free shared buffers cached
Mem: 7712 2742 4969 0 164 1838
-/+ buffers/cache: 740 6972
Swap: 0 0 0
... e "df" está me dizendo que o sistema de arquivos está usando 4.4GB . Então, deve haver memória RAM suficiente para armazenar todo o sistema de arquivos .
Com base nisso, acho que a única latência de E / S que eu experimento deve ser limitada ao tempo que levaria para ler os arquivos no cache pela primeira vez. Depois disso, eu não pensaria que seria necessário recuperá-los novamente, e todas as gravações poderiam ser armazenadas em cache em segundo plano, então eu não deveria ter que esperar por elas. (Claro, a grande espera provavelmente seria quando eu quisesse desligar, e 4GB de cache sujo precisavam ser gravados no flash).
Mas não é isso que estou experimentando. Em vez disso, tudo é agonizantemente lento. Mudar o foco para outras janelas faz com que todas as janelas fiquem "apagadas" por cerca de 10 segundos (o que o gerenciador de janelas precisa, para esta tarefa, do disco, que ele não escreveu lá certamente? E se escreveu isso anteriormente na sessão de janelas, por que não está no cache?), e fazer algo como usar o apt-get para instalar algo leva vários minutos após o arquivo .deb ser baixado (como é que .deb ainda não está no cache? Como os novos arquivos do pacote não estão sendo escritos para o cache? E não é que o instalador tenha que ler / var / lib / dpkg / available ou / var / lib / dpkg / status porque isso acontece com o cada pacote mesmo quando tento instalar um grupo de uma vez).
Eu mexi com /proc/sys/vm/vfs_cache_pressure
, /proc/sys/vm/swappiness, /proc/sys/vm/dirty_writeback_centisecs
, /proc/sys/vm/dirty_ratio...
all sem nenhum efeito significativo.
Eu claramente não entendo como funciona o cache de disco do Linux. Então, preencha-me. O pode ser configurado para o kernel (desde que ele tenha RAM suficiente para isso):
- Leia os arquivos do disco uma vez e mantenha-os em cache e
- Armazena todas as gravações em cache e as grava no disco durante o tempo ocioso (e, se isso for daqui a 20 minutos, tudo bem)?
E, se puder fazer isso, o que me falta?