classificar direto do GNU para usar muita memória e muitos núcleos

1

Eu tenho um arquivo de texto razoavelmente grande (19Gb, meio bilhão de linhas) e um servidor razoavelmente grande no qual o classifico (16 núcleos, 64Gb de memória) rodando o Ubuntu 12.04.

Qual é a melhor maneira de usar a linha de comando sort utility (é dos utilitários GNU principais) para classificar rapidamente este arquivo?

Acredito que posso usar --parallel 15 (deixando um núcleo livre), pode usar algo como -T /run/shm/sortTmp para manter arquivos temporários em um disco RAM (assim é rápido) 1 , pode usar -S 50G para utilizar a memória disponível e pode ajustar --batch-size=15 para reduzir o uso de arquivos temporários (aqui não tenho certeza de qual seria um bom valor ..).

Existem outras opções a serem consideradas? O que é uma boa escolha para --batch-size ? Há outras coisas que eu deveria considerar?

Não há mais nada que precise estar em execução na máquina enquanto estou fazendo o tipo, então posso usar todos os seus recursos.

1 -S em combinação com o disco de memória RAM para arquivos temporários é uma má ideia! O kernel provavelmente matará sort quando gravar no disco RAM e a memória estiver quase cheia (veja este comentário )

    
por drevicko 22.04.2015 / 02:52

1 resposta

0

Ninguém está respondendo, então foi o que eu fiz:

sort -T /mnt/tmp --parallel=14 -S 50G myBigFile.txt

Eu não usei --batch-size porque não tinha certeza do que seria um bom valor e, presumivelmente, sort é esperto sobre isso de qualquer maneira.

/mnt é montado em um grande disco efêmero (a máquina é uma VM na nuvem). Se /tmp estiver em um disco com muito espaço, você poderá deixar de fora -T . Se você tem um disco muito rápido com espaço suficiente, use isso.

Se bem me lembro, ele precisa aproximadamente do mesmo espaço que o tamanho do arquivo que está sendo classificado - basicamente ele divide o arquivo em dois ou mais pedaços que ele pode classificar em memória, armazena-os no disco temporário, em seguida, faz uma classificação de mesclagem para produzir a saída final.

    
por 05.05.2015 / 12:34

Tags