Unix sort out of memory

7

Estou classificando um arquivo de 25 GB contendo 200 milhões de linhas no Fedora 18 usando:

classifique -S 10G -T / bigfisk bigfile

e estou sendo processado devido a falta de memória. O processo não está maximizando minha memória RAM antes da morte (12 GB de espaço livre) e o espaço em disco está ok.

Qualquer sugestão sobre a causa é apreciada. Tenho certeza que o tipo pode gerenciar isso devido ao seu particionamento e mesclagem.

Mais informações de dmesg

[87278.935572] Out of memory: Kill process 1971 (sort) score 258 or sacrifice child
[87278.935574] Killed process 1971 (sort) total-vm:4512168kB, anon-rss:4237040kB, file-rss:584kB 
    
por Aiden Bell 15.03.2013 / 16:00

3 respostas

3

Não use -S 10G , é demais (e provavelmente não está fazendo o que você pensa). O lançamento de OOMkiller faz significa que seu sistema está usando toda a sua memória.

De acordo com o algoritmo usado por sort , usará a memória de acordo com o que estiver disponível : metade do maior número entre TotalMem / 8 e AvailableMem.

Portanto, por exemplo, se você tiver 4 GB de mem disponível (de 8 GB), sort usará 2 GB de RAM. Ele também deve criar muitos arquivos de 2 GB em / bigdisk e, finalmente, mesclá-los.

    
por 16.03.2013 / 19:00
1

Fazendo uma resposta do meu comentário:

Eu tive o mesmo problema quando usei /run/shm como meu /bigdisk para armazenar sort temp arquivos. /run/shm é um disco de memória RAM, portanto, quando a classificação é necessária para armazenar em cache resultados parciais no disco (o que ocorre quando a memória está quase cheia), a memória acabou. O kernel matou sort , pois era o processo que mais usava a memória.

Usar um local armazenado em um disco físico, em vez do disco RAM, resolveu isso.

    
por 05.05.2015 / 12:11
0

Tente definir vm.overcommit_memory = 1 : «…

When this flag is 1, the kernel pretends there is always enough memory until it actually runs out.

… »

E fazer usar swap.

    
por 16.03.2013 / 18:10

Tags