使用EAGAIN进行AIX pthread_create失败。 WLM类对线程的限制?

时间:2010-07-29 15:56:12

标签: pthreads aix

pthread_create的AIX手册页记录了EAGAIN pthread_create失败的以下原因:

       EAGAIN
            If WLM is running, the limit on the number of threads in the class is reached.
       EAGAIN
            The limit on the number of threads per process has been reached.

我在测试代码中看到这个,它启动了300个线程。奇怪的是,我可以创建一个最多2400个线程的测试程序(虽然我必须减少默认的堆栈大小以避免ENOMEM)并且我似乎没有遇到任何类型的线程每个进程限制,也没有WLM限制

由于它似乎不是我正在进行的每个进程限制的AIX线程,我想知道EAGAIN的其他AIX源代码,或者如何为特定进程配置WLM。我们的产品确实有WLM支持,我想知道这个测试代码是否意外地将自己配置为WLM类的一部分,以及这样做的机制是什么?

更新

我看到的EAGAIN是一些无法记录的pthread_create错误情况,而不是WLM,因为我看到了:

# wlmcntrl -q
1495-054 WLM is stopped

我还发现ps命令可用于查询与进程关联的WLM类,如

# ps -m -o THREAD,class -p 1040410
    USER     PID    PPID       TID ST  CP PRI SC    WCHAN        F     TT BND COMMAND         CLASS
 peeterj 1040410 2318428         - A    1  60  3 f1000602d5c19bb0   200801 pts/19   - /vbs/engn/sqo/t Unclassified
...

再次排除了WLM作为EAGAIN的来源。

0 个答案:

没有答案