![调用 sched_setscheduler 时使用什么优先级](https://linux22.com/image/1079553/%E8%B0%83%E7%94%A8%20sched_setscheduler%20%E6%97%B6%E4%BD%BF%E7%94%A8%E4%BB%80%E4%B9%88%E4%BC%98%E5%85%88%E7%BA%A7.png)
我正在编写一个服务器,我不希望它被任何其他用户进程或“低优先级”内核进程抢占。我使用的代码如下:
struct sched_param sched_param;
memset(&sched_param, 0, sizeof(sched_param));
sched_param.sched_priority = SOME_PRIORITY;
if(-1 == sched_setscheduler(0, SCHED_FIFO, &sched_param)) {
// ...
我的问题是,当我将 SOME_PRIORITY 设置为 99(最大值)时,似乎甚至调度程序进程也挨饿了,我的系统很快就变得无法使用(服务器进程的核心有一个 busywait 循环——我无法控制这个方面,它是一个第三方库)。
所以我的问题是,我可以使用 SOME_PRIORITY 的什么值来仅允许调度程序(以及可能的一小部分内核服务)抢占?