RH442-7 调度域和CPU集之三

 一、调度域(scheduler domains)和CPU集(cpusets

1.   调度域和CPUSET

l  通过cpuset对多cpu进行分组

Ø  每个cpuset代表一个调度域( Scheduling Domain 其实就是具有相同属性的一组 cpu 的集合可将进程放在一个调度域内。

Ø  支持多核CPUNUMA架构。

Ø  通过cpuset管理虚拟文件系统。

Ø  可将cpuset将其他调度选项相整合,如可将多cpu分组,也可将组内单个cpu分给进程。

 

l  cpuset层次结构支持嵌套,一个cpu可同时属多个cpuset

Ø  root()cpuset包括所有系统资源

Ø  cpuset可以嵌套

Ø  每个cpuset至少含有一个cpu和一个内存区域

Ø  可动态将任务分配到cpuset

 

l  优点:

Ø  可有效控制队列长度、缓存、NUMA区域等

Ø  根据CPU的不同特征,可将进程分配到不同的cpuset

 

2.   CPUSET配置

l  升级selinux policy

  selinux-policy-targeted-2.4.6-106.el5_1.3 or later

 

l  创建并挂载在root cpuset,

  [root@station9 ~]# mkdir /cpusets 

  [root@station9 ~]# grep cpu /proc/filesystems

  [root@station9 ~]# mount -t cpuset nodev /cpusets   

 #可同时写入/etc/fstab

  #默认root cpuset包含所有系统资源

   /cpusets/cpus/cpusets/mems/cpusets/tasks

 

l  创建子cpuset,并将任务分别给子cpuset

   [root@station9 ~]# mkdir /cpusets/rh442

   [root@station9 ~]# echo 0 > /cpusets/rh442/cpus  

#0cpu分配给rh442

   [root@station9 ~]# echo 0 > /cpusets/rh442/mems

 #0mem段分配给rh442

   [root@station9 ~]# echo 10892 > /cpusets/rh442/tasks  

#pid3388的任务分配给rh442, 要保证开机生效需写入到开机脚本/etc/rc.d/rc.local

   #获取pid并将其任务分配给rh442脚本

    for PID in $(pidof sshd);do

      /bin/echo $PID >/cpusets/rh442/tasks

Done

 

3.   调度域的重要文件

l  查看进程所用cpuset

   #cat /proc/pid/cpuset

 

  [root@station9 ~]# cat /proc/10892/cpuset

/rh442

 

l  查看进程所获得cpu和内存资源

   #cat /proc/pid/status |grep -i cpus_allowed

 

   [root@station9 ~]# cat /proc/10892/status |grep -i cpus_allowed

Cpus_allowed:   00000004

 

l  限制cpu只能属于一个cpuset,不能到其他cpuset里,即不支持嵌套

   /cpusets/cpu_exclusive       #1支持,0不支持

   /cpusets/rh442/cpu_exclusive

 

l  cpuset所有进程被关闭后内核自动清除cpuset以释放资源给其他任务使用,

   /cpusets/rh442/notify_on_release  #1支持,0不支

 

二、Virtual CPUs(虚拟CPU)(专用于虚拟机)

1.   虚拟cpu和物理cpu相对应

l  1个物理cpu可应多个虚拟cpu,可创建任意个虚拟cpu

l  用于SMP环境的测试

l  虚拟cpu的队列是对应物理cpu

l  默认所用domains所获取cpu资源权限相同

 

2.   为功能域调配单独的cpu

l  为重要功能域(虚拟机)多分配物理cpu资源

l  减少重要域的等待时间

l  将不同的域运行在不同的cpu

 

3.   配置vcpus

l  静态配置:

   /etc/xen/domain

   vcpus=4      #最大使用虚拟cpu的数量

   cpu0       #只使用一个第0号物理cpu

   cpus0,2-4  #虚拟机可使用物理第0、2、4号物理cpu

 

l  动态配置

Ø  #virsh setvcpus domain number-of-vcpus

 

Ø  通过virt-manager Gui配置  #仅支持半虚拟化

  

Ø  将虚拟cpu指向物理cpu

   #virsh vcpupin domain|domainid vcpu cpu,...

 

     [root@station9 ~]# virsh vcppin rhel5.5.0 4 0,1  

   #给虚拟机rhel5.5.0分配4个虚拟cpu,对应01号物理cpu



本文转自netsword 51CTO博客,原文链接:http://blog.51cto.com/netsword/643264

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值