Wednesday, March 04, 2009

Linux Scheduler

Dari milis
I have written a small thread program in C using the pthreads. I am able to set the threads priority with pthread_setschedparam() API when I login as ROOT. If I login as a normal user other than ROOT, then the API returns the error number 1 (EPERM). Please let me know whether a normal user can set the pthreads priority with pthread_setschedparam API or not.

Answer 1:
Yes, subject to certain restrictions, which are detailed in the sched_setscheduler() manpage. In particular, a non-privileged process cannot set the real-time priority higher than its RLIMIT_RTPRIO setting. You can change this with an "rtprio" entry in /etc/security/limits.conf (settings are applied on login, so changes won't affect existing login sessions). Privilege is determined by the CAP_SYS_NICE capability.

Asker response:
I am able to run the programs as a normal user after setting the soft as
well as hard values in /etc/security/limits.conf values. However, without setting the hard limit, I am not able to run the programs. So, by setting the soft and hard values to 100, I am able to run.

domain type item value
@srinivasg soft rtprio 100
@srinivasg hard rtprio 100

Thanks for the right information.

Pertanyaan dan jawaban yang baik.