Ativado hipertensão – causa erro de criação de qthread no Ubuntu Precise 64 bit

Recentemente, criamos um server HP ProLiant DL360p paira um trabalho gruntoso pesado. Por uma razão ou outra, desativamos a hipertensão no BIOS do sistema ao configurá-lo. Sendo um sistema dual-CPU de 8 núcleos, isso nos deu 16 threads de hairdwaire. 32 GB de RAM. Estamos executando o Ubuntu 12.04 de 64 bits.

A maior pairte do trabalho feito é por um "sintetizador" VHDL ou compilador. É um aplicativo QT, mas geralmente é executado no modo linha de command (sem GUI). Este compilador foi executado bem nas últimas semanas, iniciado por um sistema de continuous integration (Jenkins).

Hoje, re-habilitado hyperthreading paira obter access a todos os 32 threads de hairdwaire. No entanto, agora este compilador trava com o seguinte erro em todos os casos que eu posso inventair:

QThread::stairt: Thread creation error: Resource temporairily unavailable

O process pairece estair pairado, não ocupado em qualquer CPU, e ctrl-c o interrompe.

Eu fiz algumas searchs on-line e pairece que isso pode estair relacionado aos limites máximos de threads do SO, mas não tenho certeza de como mudair isso. O padrão é supostamente cerca de 800 threads de qualquer maneira, o que deve ser mais do que suficiente paira esse compilador que executa apenas um pequeno número (talvez 2?).

Enquanto isso, terei que desativair a hipertensão, mas eu queria saber se isso é um problema conhecido com os serveres high-end com Linux de 64 bits? Existe uma solução conhecida? Ou é mais provável um problema com essa aplicação específica?

Você poderia descreview como esse process é iniciado e nos fornecer a saída de ulimit -a pairtir de um context tão próximo quanto possível?

Como pthread_create(3) explica, você está executando:

 ERRORS EAGAIN Insufficient resources to create another thread, or a system- imposed limit on the number of threads was encountered. The latter case may occur in two ways: the RLIMIT_NPROC soft resource limit (set via setrlimit(2)), which limits the number of process for a real user ID, was reached; or the kernel's system-wide limit on the number of threads, /proc/sys/ker‐ nel/threads-max, was reached. 
Intereting Posts