解析sql server 2012 数据引擎任务调度算法
SQL Server 2012 不仅延续现有数据平台的强大能力,全面支持云技术与平台,并且能够快速构建相应的解决方案实现私有云与公有云之间数据的扩展与应用的迁移。那下面小编来说说sql server 2012 数据引擎任务调度算法解析。
我们知道,在sql server 2008版本以后,引入了Resource Governor(简称RG),在2012版本中,微软就将Resource Governor这个特性应用到了任务调度算法中来,这里需要注意的是,如果没有开启RG功能,那么sqlos将会把default RG设置应用到算法中。
RG是一个对资源进行分配的设置选项,它可以对CPU或内存的最大、最小可用资源进行配置。每个scheduler也都有自己的目标资源池 ,每个SCHEDULER的资源池大小基本等于RG最大配置/scheduler总数的平均值
scheduler cpu pool=max cpu/scheduler count
图为default的RG设置
下面开始说明一下新的算法流程:
当需要给task指派一个scheduler的时候,如果首选preferred scheduler在添加这个task后,不会使得当前scheduler的平均任务资源利用率下降到当前NUMA节点内平均资源利用率的80%以下,则将任务指派给首选scheduler;反之,则将任务分配给同一NUMA节点中有最多可用资源的sheduler上。
如果写成逻辑公式则是这种计算方式:
if (preferred scheduler pool target/runable task+1)>avg (sum(scheduler pool target/runable task))*0.8
preferred scheduler task+1
else
most pool resource scheduler task+1
计算流程:2NUMA,四核,1433端口绑定到NUMA0,使用默认的RG设置(也就是MAX CPU=100%)
全局的平均值则=(5.56+4.55)/2=5.05,那么80%数据值为5.05*0.8=4.04
相关阅读:SQL Server 2008怎么下载呢