您的位置:首页 > 其它

RH442-7 调度域和CPU集之三

2011-08-19 16:11 417 查看
一、调度域(scheduler domains)和CPU集(cpusets)

1. 调度域和CPUSET
l 通过cpuset对多cpu进行分组
Ø 每个cpuset代表一个调度域( Scheduling Domain 其实就是具有相同属性的一组 cpu 的集合)可将进程放在一个调度域内。
Ø 支持多核CPU和NUMA架构。
Ø 通过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
#将0号cpu分配给rh442
[root@station9 ~]# echo 0 > /cpusets/rh442/mems
#将0号mem段分配给rh442
[root@station9 ~]# echo 10892 > /cpusets/rh442/tasks
#将pid为3388的任务分配给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的数量
cpu=0 #只使用一个第0号物理cpu
cpus=0,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,对应0、1号物理cpu
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息