O Kernel continua matando o processo Java devido a falta de memória

1

Estou tentando resolver um problema do CPLEX usando a biblioteca Java, mas o kernel continua eliminando meu processo devido a "Memória insuficiente". Tentei definir limites de memória no programa CPLEX e tentei limitar o limite de tempo para 300 segundos, mas meu kernel continua dizendo:

Nov 18 07:44:01 node0 kernel: [4843935.635593] Out of memory: Kill process 4987 (java) score 979 or sacrifice child
Nov 18 07:44:01 node0 kernel: [4843935.635612] Killed process 4987 (java) total-vm:38252556kB, anon-rss:23959660kB, file-rss:764kB

O problema é que, quando um determinado experimento no meu CPLEX é incapaz de resolver o problema (devido a memória ou limites de tempo), quero que ele pare e continue o próximo experimento. No entanto, o kernel continua matando todo o meu processo Java, impedindo-me de tentar resolver as próximas experiências na linha.

Meus parâmetros do CPLEX são:

cplex.setParam(IloCplex.Param.TimeLimit, SimManager.timeLimit); // make sure it doesnt run longer than X minutes (less than 10)
cplex.setParam(IloCplex.Param.WorkMem, 4096); // limit to my server RAM
cplex.setParam(IloCplex.Param.MIP.Limits.TreeMemory, 4096); // limit to my server RAM
cplex.setParam(IloCplex.Param.MIP.Strategy.File, 0); // do not use file nodes, this should force CPLEX to give up once RAM memory is full and return a clean Out of Memory before solving the next problem

Alguém sabe como posso evitar que o kernel elimine o processo Java, portanto, sei se o CPLEX não conseguiu encontrar uma solução com o limite de tempo / RAM disponível e, assim, posso continuar o próximo experimento na linha?

lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 14.04.1 LTS
Release:        14.04
Codename:       trusty

uname -r
3.13.0-33-generic

Obrigado!

    
por Piet 19.11.2015 / 13:56

0 respostas