Soltando memória cache no FreeBSD

4

Eu uso o servidor FreeNAS, que é construído na versão do sistema operacional FreeBSD 8.2-RELEASE-p6. Eu uso o sistema de arquivos ZFS com 13TB HDD na minha caixa de 8GB de RAM física instalada. Ele quase usa toda a RAM instalada enquanto processa alguma solicitação. No entanto, ele ainda usa a mesma quantidade de memória em tempos ociosos. Então isso está se tornando um problema às vezes.

No meu servidor web centos; Eu uso o seguinte comando para soltar a memória em cache com um cronjob;

sync; echo 3 > /proc/sys/vm/drop_caches

No entanto, este comando não funciona no meu servidor Freenas. Como posso deixar a memória em cache na minha caixa FreeNAS que é construída no FreeBSD 8.2

Obrigado

    
por user1066698 25.03.2012 / 15:48

3 respostas

7

Para começar, o CentOS é um sistema operacional Linux. O Linux é completamente diferente do FreeBSD (exceto pelos bits que o Linux emprestou do BSD, para fazer um sistema operacional completo, e ainda não substituiu seu próprio código).

Você realmente não precisa liberar essa memória em cache, provavelmente não precisa estar na sua caixa Cent, mas isso depende um pouco do que você está executando nela. Você só deve mexer no gerenciamento de memória quando tiver uma razão muito específica e boa para fazê-lo.

A primeira e única razão pela qual você gostaria de fazer isso em uma caixa de produção é que, se você tiver um aplicativo, as bases são seu próprio uso de memória na quantidade de memória livre. Eu não sei de nenhum programa * nix que faça isso, mas é possível que eles estejam por aí. Mesmo se este for o caso, você deve estar empregando limitação inteligente de memória nos caches do sistema, não liberando-os manualmente ou periodicamente.

O único outro motivo comum para liberar os caches é para fins de benchmarking e testes.

Se um dos dois acima não se aplicar, não libere seus caches.

Atualização:
Além dos comentários abaixo, deixe-me martelar a diferença de desempenho em casa com um teste simples.

dd if=/dev/zero of=/path/to/test.1g bs=1m count=1024
1073741824 bytes transferred in 20.998713 secs (51133697 bytes/sec)

dd if=/path/to/test.1g of=/dev/null bs=1m
1073741824 bytes transferred in 4.496601 secs (238789654 bytes/sec)

dd if=/path/to/test.1g of=/dev/null bs=1m
1073741824 bytes transferred in 1.071374 secs (1002210138 bytes/sec)

A primeira vez que leu o arquivo de teste, nada foi armazenado em cache; na segunda vez que já estava no cache, a operação de leitura foi concluída quatro vezes mais rápido. Em um servidor típico, 90% das leituras são de 1% dos arquivos / dados no disco. Se a maior parte desse 1% puder permanecer na memória cache, as leituras de discos serão geralmente 4x mais rápidas (pelo menos no meu servidor).

    
por 25.03.2012 / 16:06
2

Para aqueles que precisam derrubar o cache por motivos de teste, parece que não há uma maneira direta de descartar caches no FreeBSD.

Normalmente, o cache do os é o cache dos arquivos do sistema de arquivos (ou mmap ed files). O cache desses arquivos pode ser limpo desmontando a partição correspondente.

Fonte: link

    
por 12.11.2013 / 09:31
1

Só para esclarecer a desmontar solução : uma tentativa de desmontar o sistema de arquivos libera e limpa o cache desse sistema de arquivos, mesmo que a própria desmontagem NOT tenha que ser bem-sucedida.

cd /mnt
umount /mnt

O umount irá falhar porque o diretório de trabalho atual o mantém ocupado, mas qualquer dado em cache de /mnt é de qualquer maneira limpo .

Exemplo:

root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000
1048576000 bytes transferred in 10.012924 secs (104722255 bytes/sec)

root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000
1048576000 bytes transferred in 0.290137 secs (3614071699 bytes/sec)

root:/usr/home/user> umount /usr
umount: unmount of /usr failed: Device busy

root:/usr/home/user> dd if=test of=/dev/null bs=1048576 count=1000
1048576000 bytes transferred in 10.149973 secs (103308253 bytes/sec)
    
por 30.08.2017 / 15:05

Tags