GNU sort
(que é o padrão na maioria dos sistemas Linux), possui uma opção --parallel
. De link :
‘--parallel=n’
Set the number of sorts run in parallel to n. By default, n is set to the number of available processors, but limited to 8, as there are diminishing performance gains after that. Note also that using n threads increases the memory usage by a factor of log n. Also see nproc invocation.
Como sua CPU tem 2 núcleos, você poderia fazer:
sort --parallel=2 -uo list-sorted.txt list.txt
É melhor especificar o número real de núcleos, pois parece haver mais a ser devido ao processador ter hyper-threading .
Você também pode experimentar com nice
para influenciar a prioridade de agendamento do processador e ionice
para influenciar o agendamento de I / O. Você pode aumentar a prioridade sobre outros processos como este, eu não acho que isso vai te dar uma grande economia, pois eles geralmente são melhores para garantir que um processo em segundo plano não use recursos demais . Nunca, a menos, você pode combiná-los com algo como:
nice -n -20 ionice -c2 -n7 sort --parallel=2 -uo list-sorted.txt list.txt
Note também que, como Gilles comentou, usando um O único comando GNU sort será mais rápido do que qualquer outro método de decompor a classificação, pois o algoritmo já está otimizado para lidar com arquivos grandes. Qualquer outra coisa provavelmente vai atrasar as coisas.