dig*_*280 6 c linux kernel real-time scheduler
我正在试验,SCHED_FIFO
我看到一些意想不到的行为.我使用的服务器有12个内核,禁用了超线程.所有可配置中断都设置为在CPU 0上运行.
我的程序启动使用pthreads库为低优先级任务创建一个线程,而不更改CPU关联设置为核心0的调度策略.然后,父线程将其CPU亲和性设置为核心3,并将其自己的调度策略设置为SCHED_FIFO
使用sched_setscheduler()
pid零和优先级1然后开始运行非阻塞循环.
该计划本身运行良好.但是,如果我在程序运行时尝试第二次登录服务器,则在我停止程序之前终端没有响应.这就像调度程序试图在与实时进程相同的核心上运行其他进程.
sched_setscheduler()
在父级中设置调度策略会更改之前创建的子级的行为?提前致谢.
sched_setscheduler
设置进程的调度程序,而不是线程.看到:
http://pubs.opengroup.org/onlinepubs/9699919799/functions/sched_setscheduler.html
如果要为线程设置调度程序,则需要在创建新线程之前使用属性对象上的pthread_attr_setschedpolicy
和pthread_attr_setschedparam
函数.
我不确定Linux是否符合这些要求,但至少应该首先确保您的代码符合规范,然后根据需要进行调整......
归档时间: |
|
查看次数: |
3407 次 |
最近记录: |