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.

相关文章

/etc/sysctl.conf这个目录主要是配置一些系统信息,/etc/sys...
1.作用 useradd或adduser命令用来建立用户帐号和创建用户的起...
它们都是多模式编辑器,不同的是vim 是vi的升级版本,它不仅...
不管是我们在安装软件还是监测软件的使用性能,我们都要随时...
装好Tomcat7后,发现除了本机能访问外界访问不了,岂有此理。...
修改防火墙配置需要修改 /etc/sysconfig/iptables 这个文件,...