关于cpu 多核多线程调度调度关联性 问题 求教

2013年6月 Linux/Unix社区大版内专家分月排行榜第二2013年5月 Linux/Unix社区大版内专家分月排行榜第二2013年3月 Linux/Unix社区大版内专家分月排行榜第二2013年1月 Linux/Unix社区大版内专家分月排行榜第二2012年12月 Linux/Unix社区大版内专家分月排行榜第二2012年8月 Linux/Unix社区大版内专家分月排行榜第二2011年12月 Linux/Unix社区大版内专家分月排行榜第二2011年10月 C/C++大版内专家分月排行榜第二2011年10月 Linux/Unix社区大版内专家分月排行榜第二
2012年6月 C/C++大版内专家分月排行榜第三2012年6月 PHP大版内专家分月排行榜第三2012年5月 C/C++大版内专家分月排行榜第三2012年3月 Linux/Unix社区大版内专家分月排行榜第三2012年2月 Linux/Unix社区大版内专家分月排行榜第三2011年11月 C/C++大版内专家分月排行榜第三
2013年 总版技术专家分年内排行榜第三
2012年 总版技术专家分年内排行榜第七
2013年1月 移动平台大版内专家分月排行榜第二2012年12月 移动平台大版内专家分月排行榜第二
2014年1月 移动开发大版内专家分月排行榜第三2013年4月 移动平台大版内专家分月排行榜第三2013年3月 移动平台大版内专家分月排行榜第三2012年6月 移动平台大版内专家分月排行榜第三
本帖子已过去太久远了,不再提供回复功能。新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
家境小康, 积分 1939, 距离下一级还需 61 积分
论坛徽章:0
这是我有atop,抓的cpu的值,有没有大佬对核CPU调度有研究的.我这个机器两颗实体CPU,都是四核的,在跑一个大进程时,我看就一个CPU使用率特别高,别的比较少,这个cpu内部是怎么调试的呢,
有什么方法对这个CPU在八个CPU上平均使用呢,这样机器跑起来应该也会快些.
PRC | sys& &3.48s | user&&43.66s | #proc& & 290 | #zombie& & 1 | #exit& & 393 |
CPU | sys& &&&35% | user& & 432% | irq& && & 1% | idle& &&&28% | wait& & 305% |
cpu | sys& && &4% | user& &&&75% | irq& && & 0% | idle& && &2% | cpu000 w 18% |
cpu | sys& && &4% | user& &&&63% | irq& && & 0% | idle& && &3% | cpu005 w 30% |
cpu | sys& && &4% | user& &&&61% | irq& && & 0% | idle& && &4% | cpu003 w 32% |
cpu | sys& && &5% | user& &&&57% | irq& && & 0% | idle& && &3% | cpu002 w 35% |
cpu | sys& && &4% | user& &&&58% | irq& && & 0% | idle& && &0% | cpu004 w 38% |
cpu | sys& && &6% | user& &&&40% | irq& && & 0% | idle& && &5% | cpu006 w 49% |
cpu | sys& && &3% | user& &&&42% | irq& && & 0% | idle& && &4% | cpu007 w 51% |
cpu | sys& && &5% | user& &&&37% | irq& && & 0% | idle& && &6% | cpu001 w 52% |
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
稍有积蓄, 积分 312, 距离下一级还需 188 积分
论坛徽章:1
像这样的事,CPU说了不算,系统说了也不算,得看软件,它同意,CPU们才能一起干这活。
小富即安, 积分 4181, 距离下一级还需 819 积分
论坛徽章:3
这个的确是看程序怎么写的了
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处处理器(CPU)调度问题
由于处理机是最重要的计算机资源,提高处理机的利用率及改善性能(吞吐量、响应时间),在很大程度上取决于处理机调度性能的好坏,因而,处理机调度便成为操作系统设计的中心问题之一。
一、处理机调度的层次
1、高级调度:又称为作业调度或长程调度,其主要功能是根据某种算法,把外存上处于后备队列中的那些作业调入内存,也就是说,它的调度对象是作业。
①作业是一个比程序更为广泛的概念,它不仅包含了通常的程序和数据,而且还应配有一份作业说明书,系统根据该说明书来对程序的运行进行控制。在批处理系统中,是以作业为基本单位从外存调入内存的。
②作业调度:其主要功能是根据作业控制块中的信息,审查系统能否满足用户作业的资源需求,以及按照一定的算法,从外存的后备队列中选取某些作业调入内存,并为它们创建进程、分配必要地资源。然后再将新创建的进程插入就绪队列中,准备执行。因此,有时也把作业调度称为接纳调度。每次作业调度时都必须做出以下两个决定:决定接纳多少个作业、决定接纳哪些作业。然而在分时系统中,为了做到及时响应,用户通过键盘输入的命令或数据等都是被直接送入内存的,因而无需再配置上述的作业调度机制,但也需要有某些限制性措施来限制进入系统的用户数。
2、低级调度:又称为进程调度或短程调度,其主要功能是用于决定就绪队列中的哪个进程应获得处理机,然后再由分派程序执行把处理机分配给该进程的具体操作。主要完成以下几个任务:保存处理机的现场信息、按某种算法选取进程、把处理器分配给进程。
①进程调度中的三个基本机制:排队器、分配器和上下文切换机制。
②进程调度方式:非抢占方式、抢占方式
1)非抢占方式:一旦把处理机分配给某进程,不管它要运行多长时间,都一直让它运行下去,决不会因为时钟中断等原因而抢占正在运行程序的处理机,也不允许其它进程抢占已经分配给它的处理机。直至该进程完成,自愿释放处理机,或发生某事件而被阻塞时,才把处理机分配给其它进程。
在采用非抢占调度方式时,可能引起进程调度的因素可归结为如下几个:
正在执行的进程执行完毕,或因发生某事件而不能再继续执行;
执行中的进程因提出I/O请求而暂停执行;
在进程通信或同步过程中执行了某种原语操作,如p操作(wait操作)、Block操作、Wakeup原语等。
2)抢占方式:允许调度程序根据某种原则去暂停某个正在执行的进程,将已分配给该进程的处理机重新分配给另一进程。它是基于以下原则的:优先权原则、短作业(进程)优先原则、时间片原则。
3、中级调度:又称中程调度。主要目的是为了提高内存利用率和系统吞吐量。为此,应使那些暂时不能运行的进程不再占用宝贵的内存资源,而将它们调至外存上去等待,把此时的进程状态称为就绪驻外存状态或挂起状态。当这些进程重又具备运行条件且内存又稍有空闲时,由中级调度来决定把外存上的那些又具备运行条件的就绪进程重新调入内存,并修改其状态为就绪状态,挂在就绪队列上等待进程调度。
二、选择调度方式和调度算法的一些准则
1、面向用户的准则
①周转时间短:所谓周转时间,是指从作业被提交给系统开始,到作业完成为止的这段时间间隔。它包括四部分:作业在外存后备队列上等待调度的时间,进程在就绪队列上等待进程调度的时间,进程在CPU上执行的时间以及进程等待I/O操作完成的时间。
平均周转时间T=1/n(T1+T2+...+Tn);
带权周转时间为作业的周转时间T与系统为它提供服务的时间Ts之比,即W=T/Ts;
平均带权周转时间W=1/n(T1/Ts+T2/Ts+...+Tn/Ts);
②响应时间快:所谓响应时间,是从用户通过键盘提交一个请求开始,直至系统首次产生响应为止的时间,或者说,直到屏幕上显示出结果为止的一段时间间隔。它包括三部分时间:从键盘输入的请求信息传送到处理机的时间,处理机对请求信息进行处理的时间,以及将所形成的响应信息回送到终端显示器的时间。
③截止时间的保证:所谓截止时间,是指某任务必须开始执行的最迟时间或必须完成的最迟时间。
④优先权原则
2、面向系统的准则
①系统吞吐量高:吞吐量是指单位时间内系统所完成的作业数,因而它与批处理作业的平均长度具有密切关系。
②处理机利用率好
③各类资源的平衡利用
三、调度算法
1、先来先服务调度算法(FCFS)
2、短作业(进程)优先调度算法(SJ(P)F)
3、高优先权优先调度算法
1)调度算法类型
①非抢占式优先权算法
②抢占式优先权算法
2)优先权类型
①静态优先权:是在创建进程时确定的,且在进程的整个运行期间保持不变。
②动态优先权:在创建进程时所赋予的优先权,是可以随进程的推进或随其等待时间的增加而改变的,以便获得更好的调度性能。
4、时间片轮转法:一个可取的大小是,时间片略大于一次典型的交互所需要的时间。这样可使大多数进程在一个时间片内完成。
5、多级反馈队列调度算法,其按一下过程实施:
①设置多个就绪队列,并为各个队列赋予不同的优先级,第一个队列的优先级最高,一次类推。
②当一个新进程进入内存后,首先将它放入第一队列的末尾,按FCFS原排队等待调度,如果它在一个时间片结束时尚未完成,调度程序便将该进程转入第二队列的末尾,依次类推。
③仅当第1~(i-1)队列均空时,才会调度第i队列中的进程运行。如果处理机在第i队列中为某进程服务时又有新进程进入优先权较高的队列,则此时新进程将抢占正在运行进程的处理机,即由调度程序把正在运行的进程放回到第i队列的末尾,把处理机分配给新到的高优先权的进程。
四、实时调度
1、在实时系统中,系统处理能力必须要强。假定系统中有m个周期性的硬实时任务,它们的处理时间可表示为Ci,周期时间表示为Pi,则在单处理机情况下,必须满足下面的限制条件:C1/P1+C2/P2+...+Cm/Pm&=1系统才是可调度的。例如系统中有6个硬实时任务,它们的周期时间都是50ms,而每次的处理时间为10ms,则不难算出,此时系统是不可调度的。
2、实时调度算法的分类
1)非抢占式调度算法
①非抢占式轮转调度算法
②非抢占式优先调度算法
2)抢占式调度算法
①基于时钟中断的抢占式优先权调度算法
②立即抢占的优先权调度算法
3)最早截止时间优先即EDF算法
4)最低松弛度优先即LLF算法
(window.slotbydup=window.slotbydup || []).push({
id: '2467140',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467141',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467142',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467143',
container: s,
size: '1000,90',
display: 'inlay-fix'
(window.slotbydup=window.slotbydup || []).push({
id: '2467148',
container: s,
size: '1000,90',
display: 'inlay-fix'查看: 1521|回复: 1
关于CPU 调度关联性 问题 求教
发表于 4-27-:07
I7-950CPU 开启超线程&&请问下 这个应该怎么设置
12121.jpg (43.47 KB, 下载次数: 0)
4-27- 上传
发表于 4-29-:02
启用了关联性之后,将无法迁移。因此,不到必要,别用。真的要用,假设是2个vCPU,“0,1”、“0,2”这样填入。

我要回帖

更多关于 linux cpu调度 的文章

 

随机推荐