Linux classifica todos os dados na memória

0

Para ordenar o comando do Linux, como forçar a classificação a carregar toda a entrada na memória e classificar supondo que eu tenha memória suficiente? Ou é melhor usar um RAMDISK para armazenar a entrada antes de alimentá-la para classificar?

    
por studiohack 11.06.2011 / 20:43

3 respostas

8

Você pode especificar o diretório temporário como inexistente e alterar o parâmetro do tamanho da memória principal. Isso fará com que a classificação falhe se você não tiver mem suficiente:

$ sort -S 1000 -T /nonexistant/dir /usr/share/dict/words | wc -l 
sort: cannot create temporary file in '/nonexistant/dir': No such file or directory
0
$ sort -S 10000 -T /nonexistant/dir /usr/share/dict/words | wc -l
98569

A unidade da opção -S é kB (veja o comentário abaixo).

    
por 11.06.2011 / 20:57
2

Lado de leitura

Exceto sistemas de arquivos muito fora do padrão, todo o shebang será armazenado em cache de qualquer forma (observe isto simples no htop).

Você pode ver a quantidade de buffer também em vmstat 1 output. Observe como o Linux irá simplesmente pegar toda a memória disponível (mesmo quando não endereçável a um único processo do cliente, por exemplo, ao executar um kernel do PAE em 32 bits, ou um kernel de 64 bits com 32 bits de espaço de usuário).

Observe como você pode forçar o cache a ser limpo emitindo echo 3 > /proc/sys/vm/drop_caches em outro terminal. (limpar cache de página, caches inode e dentry)

Escreva o lado

No lado da escrita, o recurso tmpfs no linux 2.4+ é perfeito. Ele faz o análogo do cache de leitura e você pode limitar manualmente seu tamanho. Esta é minha montagem padrão / tmp:

sudo mount -t tmpfs -o nodev,noexec,size=6g none /tmp

Normalmente, trabalho em / tmp por períodos mais longos do dia e uso o controle de versão para enviar coisas para um repositório (não volátil).

Takeaway

Então, tímido de / escrever você mesmo / soluções, você deve apenas usar os recursos do kernel que estão lá.

[1] Eu também simbolizo coisas como ~ / .cache ~ / .opera / cache etc. em / tmp / Realmente elimina o fardo de limpar, fazer as coisas voarem com desempenho e e mantém meus SSDs em condições saudáveis

    
por 11.06.2011 / 21:08
0

Se o diretório temporário "sort" usar suporta "alocação atrasada" - por exemplo, ext4 ou xfs, então ele fará isso de qualquer maneira!

Se o kernel decidir que há memória suficiente, não será necessário gravar os dados no disco; se o tipo acontecer de forma suficientemente rápida para que o kernel não grave os dados no disco, os arquivos serão excluídos, eles serão descartados e esquecidos sem nenhuma gravação.

    
por 13.06.2011 / 12:49

Tags