linux 降低进程优先级,Linux进程优先级系统——设置实时进程优先级

前言

最近研发的产品出了点小bug,最后查到根本缘由是,其中一个进程A使用基于FIFO的实时进程优先级,而另外一个进程B是使用普通调度的进程优先级,而A和B两个进程是互相通讯的,进程B会被饿死,而进程A也不能正常工做。分析问题过程当中查找了一些资料,如下记录一些特别注意的点。函数

Linux进程调度的三种策略

(1)SCHED_OTHER,分时调度策略spa

(2)SCHED_FIFO,实时调度策略,先到先服务.net

(3)SCHED_RR,实时调度策略,时间片轮转 线程

因为相关内容比较多,本人也末必比别人讲得更清楚,关于进程调度更详细的内容建议读《深刻理解Linux内核》,网上的不少内容都是今后而来,也不必定比这本书讲得好。另可参考此连接3d

https://blog.csdn.net/maximuszhou/article/details/42042161code

前面遇到bug的进程A就是使用SCHED_FIFO调度策略的,而进程B没有通过设置,默认是SCHED_OTHER。blog

如何设置为实时进程

查找资料的时候发现有个连接问,为何设置FIFO策略,但和预想的不一致。连接在此 http://ask.csdn.net/questions/254095进程

从代码看是由于设置的方法不对,直接上代码,能够设置进程和线程的调度策略

get

1 #include

2 #include

3 #include

4 #include

5

6

7 pid_t pid =getpid();8 structsched_param param;9 param.sched_priority = sched_get_priority_max(SCHED_FIFO); //也可用SCHED_RR

10 sched_setscheduler(pid, SCHED_RR, &param); //设置当前进程

11 pthread_setschedparam(pthread_self(), SCHED_FIFO, &param); //设置当前线程

能够经过top命令查看进程是否成功,若是为"rt"表示是实时进程了。若是不成功,多是权限问题,须要roo权限。产品

a98328b87f4c48d3b44670f231eaa59a.gif

调整进程优先级

若是不调整调度策略,也能够提高进程优先级,使得进程获得更多的CPU,特别是交互式程序,用户体检更好。代码很简单,只须要调用nice(int n)函数便可。n的有效范围是-20~19,数值越小表示优先级越高。具体内容不在此复制粘贴,仍是看《深刻理解Linux内核》比较靠谱。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值