linux – 启用超线程 – 在Ubuntu Precise 64位上导致qthread创建错误

前端之家收集整理的这篇文章主要介绍了linux – 启用超线程 – 在Ubuntu Precise 64位上导致qthread创建错误前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我们最近为一些繁重的工作设置了HP ProLiant DL360p服务器.由于某种原因,我们在设置时禁用了系统B IOS中的超线程.作为双cpu 8核系统,它给了我们16个硬件线程. 32 GB RAM.我们正在运行64位的Ubuntu 12.04.

完成的大部分工作是通过VHDL“合成器”或编译器完成的.它是QT应用程序,但通常以命令行模式运行(无GUI).这个编译器在过去几周一直运行良好,由一个持续集成系统(Jenkins)启动.

今天我们重新启用超线程以访问所有32个硬件线程.但是现在这个编译器在我可以设想的每种情况下都会挂起以下错误

QThread :: start:线程创建错误:资源暂时不可用

该过程似乎停滞不前,并没有在任何cpu上忙,并且ctrl-c会中断它.

我做了一些在线搜索,看起来这可能与操作系统最大线程限制有关,但我不知道如何改变它.无论如何,默认值大约为800个线程,这对于只运行少量(可能是2?)的编译器来说应该足够了.

与此同时,我将不得不禁用超线程,但我想知道这是否是运行64位Linux的高端服务器的已知问题?有没有已知的解决方法?或者它更可能是特定应用程序的问题?

解决方法

你能描述一下这个过程是如何开始的,并从尽可能接近的上下文中为我们提供ulimit -a的输出吗?

正如pthread_create(3)解释的那样,你遇到了:

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.

猜你在找的Linux相关文章