Esse tipo de falta de resposta, embora a CPU seja limitada, geralmente é causada pela troca (ou seja, seu processo envia outras tarefas para o disco e faz com que elas voltem a ocorrer em muito tempo).
A melhor maneira de limitar seu uso de memória é normalmente de dentro do programa. Se isso não for possível e a memória for consumida lentamente (porque não é liberada), pode ser necessário matar o programa com tanta frequência e reiniciar. É claro que isso só funciona se resultados intermediários forem escritos regularmente.
Fora do programa, você pode limitar a quantidade de memória usando o script timeout
(esse não é o tempo limite de coreutils !) Ele tem uma opção -m
para limitar a memória e irá matar seu processo se ele começar a consumir muita memória.
Se você não puder reiniciar o processamento, suas opções serão
- comprando mais memória para sua máquina se ela puder ser instalada
- instalando um SSD SATA se o seu laptop suportar isso e colocar swap nele
- reescrevendo o software para trabalhar em partes menores