【发布时间】:2012-05-12 10:58:13
【问题描述】:
我正在试验SCHED_FIFO,我看到了一些意想不到的行为。我使用的服务器有 12 个内核,禁用了超线程。所有可配置的中断都已设置为在 CPU 0 上运行。
我的程序开始使用 pthreads 库为较低优先级任务创建一个线程,而不更改调度策略,并将 CPU 亲和性设置为核心 0。然后父线程将其 CPU 亲和性设置为核心 3,并将其自己的调度策略设置为 SCHED_FIFO使用 sched_setscheduler() 和 pid 零和优先级 1,然后开始运行非阻塞循环。
程序本身运行良好。但是,如果我在程序运行时第二次尝试登录服务器,终端将无响应,直到我停止我的程序。这就像调度程序试图在与实时进程相同的核心上运行其他进程。
- 我错过了什么?
- 调度程序是否仍会尝试在运行实时进程的核心上运行其他进程?如果是这样,有没有办法防止这种情况发生?
- 在父级中使用
sched_setscheduler()设置调度策略会改变之前创建的子级的行为吗?
提前致谢。
【问题讨论】:
标签: c linux kernel real-time scheduler