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!