我正在尝试使用
我的程序启动时,使用pthread库创建了一个低优先级任务的线程,而不改变调度策略,并将CPU亲和力设置为core 0。然后,父线程将其CPU亲和性设置为core 3,自己的调度策略设置为
程序本身运行良好。但是,如果我在程序运行时尝试第二次登录服务器,终端会无响应,直到我停止程序。就像调度程序试图在实时进程所在的同一核上运行其他进程一样。
以下是需要回答的问题:
SCHED_FIFO
,但我看到了一些意外的行为。我使用的服务器有12个核心,并已禁用超线程。所有可配置中断都被设置为在CPU 0上运行。我的程序启动时,使用pthread库创建了一个低优先级任务的线程,而不改变调度策略,并将CPU亲和力设置为core 0。然后,父线程将其CPU亲和性设置为core 3,自己的调度策略设置为
SCHED_FIFO
,使用sched_setscheduler()
,pid为零,优先级为1,然后开始运行非阻塞循环。程序本身运行良好。但是,如果我在程序运行时尝试第二次登录服务器,终端会无响应,直到我停止程序。就像调度程序试图在实时进程所在的同一核上运行其他进程一样。
以下是需要回答的问题:
- 我错过了什么?
- 调度程序是否仍会尝试在运行实时进程的核上运行其他进程?如果是,请问有什么方法可以防止这种情况发生?
- 在父进程中使用
sched_setscheduler()
设置调度策略是否会改变之前创建的子进程的行为?