(meio) pontos técnicos
Olinux (e outros sistemas semelhantes ao Unix, e provavelmente qualquer outro SO descendente para servidores) manterá os dados de arquivos usados recentemente / freqüentemente na RAM. No linux isso é chamado de " pagecache ".
Para diretórios, o linux também mantém nomes de arquivos pesquisados recentemente e diretórios listados recentemente em " dentry " (entrada de diretório). Desta forma, procurar o mesmo nome de novo e de novo não causa um acesso ao disco, e nem precisa passar pelo código da camada do sistema de arquivos específico (digamos, ext3).
Assim, o Linux mantém os dados de arquivos e metadados na RAM, se um arquivo é usado com freqüência. Isso ocorre no kernel, então:
- O Apache e outros processos do Linux não precisam fazer nada;
- diferentes processos compartilham os recursos de cache do sistema de arquivos linux; se alguns programas precisarem ler um arquivo que outro programa leu (ou escreveu) recentemente, ele se beneficiará do cache.
Se cada programa tivesse que implementar seu próprio cache de disco, cada um deles tiraria memória, mesmo que eles precisassem dos mesmos arquivos. (Também ficaria confuso se algum processo fosse swap-out, com seu cache de arquivos RAM!)
Mas o fato de um arquivo ser geralmente lido inteiramente, portanto é totalmente armazenado em cache na RAM, não significa que acessos repetidos somente para este arquivo não causam nenhum acesso ao disco: já que o linux como outro Un * x tem um conceito do último tempo de acesso do arquivo ( atime
), ele terá que atualizar os metadados do arquivo no disco regularmente - a menos que você desative o tempo de acesso atualizando no nível fs (opção noatime
). Antes de fazer isso, você terá que se certificar de que nada depende dos horários de acesso corretos. Isso é principalmente um problema com os computadores pessoais, onde atime
update impede a suspensão do disco, provavelmente não importa muito nos servidores. Eu mencionei isso principalmente para completar.
A verdadeira questão
Você fez o perfil do seu sistema? Você identificou problemas específicos de desempenho?