Почему pthread_setschedparam() выдает EPERM на opensuse 11.4

#linux #pthreads

#linux #pthreads

Вопрос:

Я пишу приложение на c и NetBeans на opensuse 11.4 с ядром 2.6.37.1-1.2 (вошел в систему как root). Это приложение создает поток и при запуске выдает этот результат:

     sched_param param;
    param.__sched_priority = -1;
    policy = SCHED_FIFO;
    param.__sched_priority = 50;
    result = pthread_setschedparam(m_thread,policy,amp;param);
  

результат = 1(EPERM (not permitted))

Почему?

Комментарии:

1. Вы уверены, что запускаете его от имени root?

Ответ №1:

эмм … потому что это не разрешено? Проверьте следующие настройки:

Непривилегированный процесс не может установить приоритет реального времени выше, чем его значение RLIMIT_RTPRIO. Вы можете изменить это с помощью записи « rtprio » в /etc/security/limits.conf (настройки применяются при входе в систему, поэтому изменения не повлияют на существующие сеансы входа).

Привилегия определяется CAP_SYS_NICE возможностями.

Что-то подобное должно быть в файле конфигурации:

 domain       type    item     value
@group       soft    rtprio   100
  

Данная группа будет иметь мягкое ограничение rtprio до 100.
Это сработает, если предположить, что ваша конфигурация PAM использует pam_limits.

Возможно, вам также придется убедиться в жестком ограничении:

 @group       hard    rtprio   100
  

Комментарии:

1. kernel.org/doc/man-pages/online/pages/man2 /… все подробности приведены в разделе «Привилегии и ограничения ресурсов».

2. извините за задержку, у моего младшего произошла более серьезная санитарная ошибка, и, как вы знаете, приоритеты реальной жизни каким-то образом переопределяют приоритеты реального времени 🙂 Сейчас завершены правки

3. он запускается от имени root с SCHED_FIFO в качестве приоритета. я воссоздаю fftw3.a со следующими конфигурациями: ./configure —enable-float —enable-threads —with-combined-threads —disable-fortran —with-slow-timer —enable-sse —enable-sse2 —enable-avx теперь среднее время ожидания составляет 0,4 мс! но поскольку я загружаю fftw.lib, я не знаю его конфигураций, которые являются наилучшей конфигурацией для максимальной производительности (с sse и нет mpi)?