Ошибка AIX pthread_create с EAGAIN.Ограничения класса WLM для потоков? - PullRequest
1 голос
/ 29 июля 2010

Страница man AIX для pthread_create описывает следующие причины ошибки 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.

...