分享

关于linux中进程间切换的最小时间间隔

 Tornador 2015-04-30
 本帖最后由 cwang_sh 于 2014-08-12 15:14 编辑

大家好!

我想要做的是,将多个进程亲合到一个core上,并且使得他们之间公平地共享该核。

我目前的做法是使用round robin方式,让操作系统的scheduling policy来调度这些进程。在linux内核版本3.9以后,有一个文件/proc/sys/kernle/sched_rr_timeslice_ms用来指示round robin调度进程的间隔,这个间隔默认是100ms。假设有10个进程共享该core,并且每个进程通过sched_setscheduler将其设置成SCHED_RR,这样,在一秒钟内,每个进程将被轮询一次。

我的问题是:

1)我希望这个进程调度间隔是100微妙,即在1毫秒内,每个进程将被轮询一次。但是/proc/sys/kernle/sched_rr_timeslice_ms的数值不能被设置成小于1毫秒,否则就报错。我想确认,是否linux无法支持小于100ms间隔的进程调度?

2)不知道是否有人了解 windriver linux,它是windriver公司经过内核修改后的版本,主要用于嵌入式系统,它的进程调度的最小间隔是多少?

3)如果通过mutex机制,是否可以实现小于1ms的进程调度间隔?这种方法不是利用操作系统的调度策略,而是通过用户进程/程序的设计,当运行时间超过了100微妙后主动释放锁,而其他进程中的某个会获得锁。这个思路是否正确?

4)如果我把这10个进程变为一个进程的10个线程,有什么方法可以实现10个线程间的切换? 切换周期也要小于1ms

5)另外,set_scheduler()函数是不是只能使用于进程,而非线程?

万分感谢您的回复。

cwang_sh

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多