RH442-6 Linux进程调度(3)

来源:未知 责任编辑:责任编辑 发表时间:2014-03-23 22:30 点击:

==12949== L2d misses:       35,162,671  (          608 rd   +  35,162,063 wr)
==12949== D1  miss rate:    14.2% (  0.0%     +   99.9%  )  #L1丢失率
==12949== L2d miss rate:   0.8% (   0.0%     +         6.2%  )
==12949==
==12949== L2 refs:         562,501,464  (        1,280 rd   + 562,500,184 wr)
==12949== L2 misses:        35,163,300  (        1,237 rd   +  35,162,063 wr)
==12949== L2 miss rate:            0.3% (  0.0%     +   6.2%)   #L2丢失率
 
#cache使用率分析:#valgrind --tool=cachegrind programm_name
# --I1、--D1、--L2:匹配cpu的cache
 
五、Linux进程调度
1.   Linux内核进程的三种调度方法
l  SCHED_OTHER:分时调度策略
l  SCHED_FIFO: 实时调度策略,先到先服务
l  SCHED_RR:  实时调度策略,时间片轮转
 
#实时进程将得到优先调用,实时进程根据实时优先级决定调度权值。
#分时进程则通过nice和counter值决定权值,nice越小,counter越大,被调度的概率越大,也就是曾经使用了cpu最少的进程将会得到优先调度。
 
2.   所有任务都采用SCHED_OTHER(分时调度策略)调度策略
l  创建任务指定采用分时调度策略,并指定优先级nice值(-20~19)。
l  将根据每个任务的nice值确定在cpu上的执行时间(counter)。
l  如果没有等待资源,则将该任务加入到就绪队列中。
l  调度程序遍历就绪队列中的任务,通过对每个任务动态优先级的计算(counter+20-nice)结果,选择计算结果最大的一个去运行,当这个时间片用完后(counter减至0)或者主动放弃cpu时,该任务将被放在就绪队列末尾(时间片用完)或等待队列(因等待资源而放弃cpu)中。
l  此时调度程序重复上面计算过程,转到第4步。
l  当调度程序发现所有就绪任务计算所得的权值都为不大于0时,重复第2步。
 
3.   所有任务都采用FIFO调度(实时调度策略,先到先服务)策略
l  创建进程时指定采用FIFO,并设置实时优先级rt_priority(1-99)。
l  如果没有等待资源,则将该任务加入到就绪队列中。
l  调度程序遍历就绪队列,根据实时优先级计算调度权值(1000+rt_priority),选择权值最高的任务使用cpu,该FIFO任务将一直占有cpu直到有优先级更高的任务就绪(即使优先级相同也不行)或者主动放弃(等待资源)。
l  调度程序发现有优先级更高的任务到达(高优先级任务可能被中断或定时器任务唤醒,再或被当前运行的任务唤醒,等等),则调度程序立即在当前任务堆栈中保存当前cpu寄存器的所有数据,重新从高优先级任务的堆栈中加载寄存器数据到cpu,此时高优先级的任务开始运行。重复第3步。
l  如果当前任务因等待资源而主动放弃cpu使用权,则该任务将从就绪队列中删除,加入等待队列,此时重复第3步。
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
用户名: 验证码:点击我更换图片
最新评论 更多>>

推荐热点

  • /etc/fstab 详解
  • nginx主主集群
  •  LVS-NAT和LVS-DR模式的实现详解
  •  RHCE考试之磁盘配额
  • 学习笔记:ACL详解
  •  LVM逻辑卷管理器
  • suse linux双网卡双网关配置
  •  Nginx主主负载均衡架构
  • ubuntu学习Mysql

快速直达

操作系统导航

LinuxWindows虚拟机
网站首页 - 友情链接 - 网站地图 - TAG标签 - RSS订阅 - 内容搜索
Copyright © 2008-2015 计算机技术学习交流网. 版权所有

豫ICP备11007008号-1