Encontrei um problema de OOM (isso acontece sempre que eu o executo) ao executar
grep -Fxvf file1 file2
tamanho do arquivo1: ~200MB
tamanho do arquivo2: ~300MB
número de registros em cada arquivo: ~300K
comprimento médio de registros: ~1K (somente caracteres ASCII)
a diferença entre dois arquivos é de aproximadamente 18K registros
Memória livre disponível: ~16GB
Tentei com diversas grep
versões diferentes e em VM, WSL e também em servidor físico, mas obtive o mesmo resultado.
Observe que executei o mesmo comando com apenas algumas linhas de ambos os arquivos para identificar que ele não entra em um loop infinito por ter algum caractere especial nos arquivos e foi bem-sucedido.
Isso é normal?
Estou tentando gerar registros file2
que não existem no arquivo file1
.
Já resolvi meu requisito no awk
mesmo ambiente e obtive a saída em menos de 10 segundos, mas estou me perguntando por que os grep
resultados em OOM.
Eu usei o mesmo comando quase sempre quando precisava consultar os mesmos requisitos e até comparei dois arquivos muito grandes, como dois arquivos com ~ 2 GB de tamanho e cada um com ~ 90 milhões de registros e registros contendo no máximo ~ 20 caracteres ASCII sem qualquer problema em as mesmas caixas.
Usei GNU grep
2.7, 2.16 no SLES12 e GNU grep
3.7 no Ubnutu 22.04 no WSL.