4.5可以修改cpu调度算法吗

后使用快捷导航没有帐号?
平板/笔记本
云服务专区
强烈要求华为工程师修改V8游戏时候CPU调度机制
&渐入佳境&
来自:荣耀V8 KNT-AL20
运行大型游戏的时候,Mate8可以满血2.3ghz运行,但是华为P9和V8一样运行大型游戏的时候CPU最高1.6gHz左右,Mate8是950,V8和P9都是955,更高级的CPU游戏性能还不如Mate8,玩大型游戏的时候简直被Mate8完虐,玩游戏太卡了,如果和Mate8一样的调度机制,V8就可以发挥更大的性能,我们都用的华为产品,为什么不能给消费者更好的体验?花粉们顶起来!!!!{:6_136:}{:6_136:}
width:100%">
&登堂入室&
来自:浏览器
width:100%">
&渐入佳境&
来自:荣耀V8 KNT-AL20
支持,虽然我不懂@_@
width:100%">
&独步江湖&
来自:浏览器
那955有个鸟用啊,高频率,不让跑到真的频率
他们为了耗电量,和发热,不得已而为之吧
width:100%">
&独步江湖&
来自:荣耀V8 KNT-AL10
尺寸大散热好,高频能更久点。
width:100%">
&渐入佳境&
来自:荣耀V8 KNT-AL20
泉水熊 发表于
尺寸大散热好,高频能更久点。
我对比了一下,Mate8和V8一样长,宽度比V8就宽了一点点,尺寸都差不多啊
width:100%">
&独步江湖&
来自:荣耀V8 KNT-AL10
强烈支持!!!
width:100%">
&渐入佳境&
来自:荣耀V8 KNT-AL10
唉,我都后悔买这个,就是玩游戏降频,感觉和810一个样,早&&泄男
width:100%">
老茶馆众生随拍:黑煤球的业余生活红枫《川西高原》潜伏墨荷墨荷
花粉客户端
Make it Possible
Make your device special
华为云服务
Huawei cloud services
音乐播放器
Huawei Music
Huawei Vmall
没有最新动态
关注花粉俱乐部
举报邮箱:
|关注花粉俱乐部:
Copyright (C)
华为软件技术有限公司 版权所有 保留一切权利vSphere中CPU的设置选择及运行流程
我的图书馆
vSphere中CPU的设置选择及运行流程
& 随着的普及,越来越多的服务器通过hypervisor被整合到了一起,解决了传统服务器CPU利用率常年不到15%的痛点。VM官方的建议是将CPU按照1:10的比例进行整合,整合后每一个的VCPU该如何选择,是单socket多core,还是多socket单core;性能怎么样,依据什么判断。本章就针对上述问题进行阐述。1.CPU的设置选择,是单socket多core,还是多socket多core?在设置CPU的前,需要说一下PCPU、VCPU和LCPU的概念:& & Socket:物理机的CPU插槽数。& & PCPU:物理机上实际的CPU,通常我们所说的core。& & VCPU:分配给虚拟机的CPU。& & LCPU:PCPU在实际执行时所需要用到的逻辑CPU。每一个VCPU最终都会反映到PCPU上,而每一个PCPU在执行时,都需要找到一个空闲的LCPU,在不开启超线程的情况下,每一个物理CPU(core)只有一个LCPU。当我们在创建一个虚拟机的时候,会让我们选择如何设置该虚拟机的CPU,如图所示:对上图中做提到的几个概念做下解释:& & LLC:全称last-levelcache,他仅局限VCPU的概念里。以单socket多core为例,当下一次VCPU需要PCPU的资源时会直接去LLC里面调用,减少了调度的时间。& & Muma:non-uniformmemory access,在物理机中,该技术将指定内存的访问直接定位到本地相关的CPU上,将指定的内存与相关CPU进行关联。我们可以将Numa看成一个资源包,里面包含了CPU和Memory,当一个Numa所提供的资源满足操作需求时,该操作会在这一个Numa中完成,而不再去做跨Numa的调度。& & vNuma:与物理机的Numa类似,当开启vNuma后,虚拟机VCPU的资源请求默认会被分配到一个Home节点中,节点内的Memory满足需求时,极大的降低了资源调度的延迟,只有当1个Numa节点不能满足需求时,才会跨Numa节点。Esxi5.5支持16个节点的Numa,Esxi6.0支持32个节点的Numa。抛开业务类型导向,单针对LLC,vNuma和超线程来说,推荐单socket多core。考虑到承载业务种类的不同,依据经验分布式业务、数据库业务推荐多socket单core,而wbe类型的业务推荐单socket多core。2.CPU在vSphere中的运行流程在讲述前,我们需要知道CPU在vSphere中的几种存在形式。CPU在vSphere中共有4种存在形式,分别为run、wait、costop、ready,其运行过程如下图所示:& & ready:虚拟CPU等待物理CPU的调度,在esxtop下表示为%rdy。& & run:不用多说,CPU正常运行,在esxtop下表示为%run。& & wait:当虚拟机不需要进行CPU调度的状态,最常见的表现形式为虚拟机的挂起,在esxtop下表示为%wait。&&& costop:虚拟机等待执行,但是由于此时空闲的PCPU数量小于该虚拟机的VCPU设置数量而被迫的等待,在esxtop下表示为%cstp。由上图我们知道,当开启一个新的虚拟机时,如果它能够找道空闲的LCPU就会直接进入run的状态,否则会进入ready状态直至它找道空闲的LCPU。所有的状态都可以由ready状态进入到run状态,由此我们知道,ready状态的值,是衡量CPU性能的一个重要参考。在client端和esxtop下能够查看CPU的ready值,由于单位不同,所以得到的值也不同,以一台名为BDC的虚拟机为例,如图所示:Client端ready值(以毫秒为单位)Esxtop命令下的ready值(以百分比为单位)由上图得知,同一虚拟机在client端得到的ready值为119ms,在esxtop下是0.59%,细心的人会发现在client端是以每20s为周期显示,由此我们得出:119÷95≈0.59%。通常情况ready的值小于1000ms即5%的时候,我们会认为虚拟机的CPU处在一个正常的状态,当他的值大于1000ms时,我们就要适当做出调整了,所以说,虚拟机的VCPU并不是越多越好。
TA的最新馆藏
喜欢该文的人也喜欢新手园地& & & 硬件问题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活动专区& & & 拍卖交流区频道交流区
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
本帖最后由 Huntsmen 于
00:21 编辑
之前接触的都是基于单核的嵌入式操作系统,建立的概念是任务调度器schedule在时间片定时器中断、中断返回、任务发消息时会被调用。
现在有了多核以后,有几个疑问:以4核举例
1,中断响应应该在哪个核上面执行,schedule是在哪个核上运行的,有固定的核吗?
2,cpu0上task A发了一个消息会触发scheduler,这个时候cpu 1上的task B也发了一个消息,也会去调用scheduler吗?这个时候是不是有竞争,需要做保护?
3,假设当前schedule在cpu0上运行,调度结果发现cpu0、cpu1的task都需要切换(因为有高优先级的任务),比如cpu0要从task A切到task B,cpu1要从Task C切到Task D,那cpu0的切换好说,因为在schedule就运行在cpu0上,直接将cpu0的pc从task A指到task B就可以了,关键cpu1的切换怎么做,cpu0肯定不能去修改cpu1的pc值,cpu1的pc是怎么从task C变成task D的
4,schedule运行在cpu0上,那它是怎么知道另外3个cpu的负载情况的?怎么知道别的cpu上有没有在做事情?
希望得到大牛的指点,谢谢
论坛徽章:6
之前接触的都是基于单核的嵌入式操作系统,建立的概念是任务调度器schedule在时间片定时器中断、中断返回、任务发消息时会被调用。
现在有了多核以后,有几个疑问:以4核举例
1,中断响应应该在哪个核上面执行,schedule是在哪个核上运行的,有固定的核吗?
2,cpu0上task A发了一个消息会触发scheduler,这个时候cpu 1上的task B也发了一个消息,也会去调用scheduler吗?这个时候是不是有竞争,需要做保护?
3,假设当前schedule在cpu0上运行,调度结果发现cpu0、cpu1的task都需要切换(因为有高优先级的任务),比如cpu0要从task A切到task B,cpu1要从Task C切到Task D,那cpu0的切换好说,因为在schedule就运行在cpu0上,直接将cpu0的pc从task A指到task B就可以了,关键cpu1的切换怎么做,cpu0肯定不能去修改cpu1的pc值,cpu1的pc是怎么从task C变成task D的
4,schedule运行在cpu0上,那它是怎么知道另外3个cpu的负载情况的?怎么知道别的cpu上有没有在做事情?
中断响应不再固定的核上,也可以指定在固定的核上。每一个进程都是调度的主体,所以schedule会运行在任何一个核心上。调度常见发送的地方如进程因为IO阻塞主动调用schedule、scheduler_tick定时检查当前进程的时间片是否需要调度等。
不同的CPU调度属于自己CPU的队列,当不均衡的情况下会从别的CPU核心上迁移进程到本地CPU上调度。这个过程需要锁的保护,而且为了防止死锁,约定获取cpu的调度锁的时候,必须从小到大。比如当前进程持有2号CPU锁,那么这个进程可以直接获取3号CPU锁,要想获取1号CPU锁,必须先释放2号CPU锁。
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
感谢瀚海书香 大侠的回复。
是不是可以这么理解:
是不是可以这里理解,如果有多个cpu同时触发了调度,他们都会调用schedule,多个schedule会同时在运行,在不发生进程迁移的时候,不需要加锁,因为各个cpu只会调度自己cpu上的进程。
另外有个问题想请教:
当不均衡的情况下会从别的CPU核心上迁移进程到本地CPU上调度。
这个不均衡的是由谁在监测的,迁移过程是怎样的?能说个大概的思路吗
非常感谢!
白手起家, 积分 134, 距离下一级还需 66 积分
论坛徽章:0
顶起来,别沉了
家境小康, 积分 1257, 距离下一级还需 743 积分
论坛徽章:0
你对SMP的概念可能有点模糊。所谓内核无非就是一个超级大的指令序列,每个CPU跑的都是这个超级指令序列而已。所以不存在scheduler跑在哪个核上的问题,应该是每个CPU都要调度,都使用相同的调度器。
稍有积蓄, 积分 383, 距离下一级还需 117 积分
论坛徽章:0
& & 1,中断响应应该在哪个核上面执行,schedule是在哪个核上运行的,有固定的核吗?
对与不同的arch中断有所不同,对于PPC为例,对于Linux的时钟中断,是用的DEC异常,这个是每个核都有一个,另外在说外部中断,完全取决中断控制器,还是以PPC的 MPIC控制器为例,开始外部中断都是报给CPU0,当然每个外部中断都有affinity, 通过这个你可以固定中断报给具体CPU。
2,cpu0上task A发了一个消息会触发scheduler,这个时候cpu 1上的task B也发了一个消息,也会去调用scheduler吗?这个时候是不是有竞争,需要做保护?
假设你说的scheduler,是一般嵌入式操作系统里面,context_switch,因为是每个线程都有kernel stack,所以单从context switch里说不需要保护,
3,假设当前schedule在cpu0上运行,调度结果发现cpu0、cpu1的task都需要切换(因为有高优先级的任务),
对于linux 来讲,每次调度的应该只从当前CPU的run quenue来取进程,如CPU1有高优先级进程,CPU1会处理。
比如cpu0要从task A切到task B,cpu1要从Task C切到Task D,那cpu0的切换好说,因为在schedule就运行在cpu0上,直接将cpu0的pc从task A指到task B就可以了,关键cpu1的切换怎么做,cpu0肯定不能去修改cpu1的pc值,cpu1的pc是怎么从task C变成task D的
4,schedule运行在cpu0上,那它是怎么知道另外3个cpu的负载情况的?怎么知道别的cpu上有没有在做事情?
每个schedule domain里面应该会有字段的信息,具体就要看load_balance函数了。
小富即安, 积分 3444, 距离下一级还需 1556 积分
论坛徽章:1
中断可以设置affinity,arm里面affinity默认是所有的core都可以响应,
由于isr处理通常很快,所以绝大部分时间core 0都是可以响应中断的,所以绝大部分的中断都会由core 0来响应,这样一来core 0上的app就被频繁的打断,这样core 0上的app的性能就低于其他core的app的性能了,所以需要将某些比较频繁的中断单独绑定到core 1上
如果不单独设置affinity到core 1上,那么就只能是在core 0处理某个中断的isr时,中断才会迁移到core 1上
这几率是很低的
北京盛拓优讯信息技术有限公司. 版权所有 京ICP备号 北京市公安局海淀分局网监中心备案编号:22
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处}

我要回帖

更多关于 linux cpu调度策略 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信