用Container实现Solaris10上的动态资源分配分析解析_第1页
用Container实现Solaris10上的动态资源分配分析解析_第2页
用Container实现Solaris10上的动态资源分配分析解析_第3页
用Container实现Solaris10上的动态资源分配分析解析_第4页
用Container实现Solaris10上的动态资源分配分析解析_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、用 Con ta in er 实现 Solaris 10 上的动态资源分配(2010-01-20 10:38) 分类:Solaris本文介绍了在Solaris 10 中如何运用虚拟化技术来实现动态 CPU资源管理。关键字:Solaris 10 , Con tai ner,资源管理,resource ma nageme nt, CMTSolaris 10中提供了一项强大的虚拟化技术:Co ntai ner (容器),通过使用 Con tai ner,我们可以在一个操作系统实例中虚拟出多个运行环境(Zo ne),每个Zone有自己的文件系统和网络地址,各个 Zone中运行的应用互相不影响,从而 实

2、现应用级的隔离,并提高了安全性。如下图所示, 在一个Solaris 10 的操 作系统中,划分了 3 个 Con tai ner,分别运行 AppServer, WebServer 和 Database Server。Con tai ner的使用非常简单,通常只需要5-10分钟的配置即可,所以Con tai ner 的虚拟化技术得到了广泛的应用。资源管理的作用 在缺省的情况下,各个Container都可以看见物理机器上的所有 CPU和内存, 也就是说物理机上的所有 CPU和内存在各个Contain er中是共享的。在实际运用 中,往往需要对各个Con ta in er使用的资源加以指定,以便确

3、保一些关键应用的 资源。另外一种场景是需要动态调节各个 Container中的资源,例如,在月末做 报表时,希望临时给数据库的Zone多分配一些CPU资源,在月末压力高峰之后, 就可以恢复成原来的CPU资源。动态资源调整(Dy namic Rec on figurati on )的 功能在中高端服务器上(如E25K M4000-M900C等)可由硬件实现,在其他中低 端类型的服务器中,我们可以用 Con tai ner来实现。ContainerSolaris 10的 Con tai ner 包括两层功能:Zo ne 和 Resource Man ageme nt(RM)bZone是指隔离的虚拟

4、运行环境,RM是以前版本的Solaris就有的功能,可以结 合Zone来动态分配资源。本文以T5220为例子加以说明,在实际中对所有运行Solaris10 的多处理器机器都适用,包括X86机器。T5220有一个UltraSPARC T2 处理器,可以拥有8个核心(cores ),每个核心有8个硬件线程,因此,T5220 可以拥有64个硬件线程,在操作系统中可以看到有 64个物理CPU如 # psri nfo0on-line si nee 04/08/2009 14:22:421on-line si nee 04/08/2009 14:22:45on-line since 04/08/2009

5、14:22:45on-line since 04/08/2009 14:22:45on-line since 04/08/2009 14:22:45on-line since 04/08/2009 14:22:45 ( 略去部分输出 )on-line since 04/08/2009 14:22:45on-line since 04/08/2009 14:22:45on-line since 04/08/2009 14:22:45创建 Zone1创建 Zone:mkdir - p /export/home/zones/zonelzonecfg -z zone1zone1: No such zo

6、ne configuredUse create to begin configuring a new zone. zonecfg:zone1createzonecfg:zone1set zonepath=/export/home/zones/zone1zonecfg:zone1set autoboot=truezonecfg:zone1add netzonecfg:zone1:netset address=zonecfg:zone1:netset physical=e1000g0 zonecfg:zone1:netendzonecfg:zone1verifyzonecfg:zone1commi

7、tzonecfg:zone1exit查看配置的 zone:ls -l /etc/zones/*xml可以看到 zone1.xml 的配置文件zoneadm list - cv可以看到刚刚配置好的 zone3安装 zone:zon eadm z zonel in stall检查 zone 状态可以看到 zone1 的状态为 installed# zon eadm list cv启动 zone:zoneadm - z zonel boot6首次启动需要初始化服务和配置,可用命令登陆console 监控:zlogin -C zone17. 系统会出现配置界面,如主机名,命名服务等。完成配置后, zo

8、ne 会重新启 动,即可完成系统的启动。8 .如果在zonel里面运行psrinfo 命令,可以看到64个CPU也就是说, global zone 和local zone 里面的CPU目前是共享的,下一步我们可以 把 zone 里的资源进一步限定。CPU资源分配假定我们需要给这个zone分配8个CPU资源(即一个core ),可以用以下资源 管理命令:1 .先检查资源管理服务是否启用:svcs -a | grep pooldisabledJan_03 svc:/system/pools:defaultdisabledJan_03 svc:/system/pools/dynamic:defaul

9、t如果显示 disabled ,则需要启用:svcadm enable poolssvcadm enable pools/dynamicsvcs -a | grep poolonlineJan_03 svc:/system/pools:defaultonlineJan_03 svc:/system/pools/dynamic:default启动资源管理功能和生成基本配置文件 :pooladm -epooladm -s创建资源池( pool ):# poolcfg - dc create pool pool1创建 CPU集 (pset),包括 8 个 CPU 其中 pset.min 和 pset

10、.max 限定了 CPU 的个数:# poolcfg -dc create pset pset1 ( uint pset.min=8; uint pset.max=8 )指定特定的CPU到CPU集中,此步骤可选,如果不指定 CPU编号,则系统自 动分配 CPU。为了使T5220的分区具有较好的性能,我们把同一个 core中的CPU分配到同一 个CPU集中:# poolcfg - dc transfer to pset pset1 ( cpu 0; cpu 1; cpu 2;cpu 3; cpu 4; cpu 5; cpu 6; cpu 7)把资源池pooll和CPU集 psetl作关联:# p

11、oolcfg - dc associate pool pool1 ( pset pset1 )保存配置到文件( save): # pooladm -s查看当前CPU资源的配置,可以看到pool1已经关联上pset1,pset1 中有 8 个 CPU(id : 0-7),而缺省的 pset_default 中只有 56 个 CPU 了:# pooladmsystem defaultstring mentint system.version 1 boolean system.bind-default true string system.poold.objectives wt-loadpool p

12、ool_defaultint pool.sys_id 0boolean pool.active true boolean pool.default trueint pool.importance 1string ment pset pset_defaultpool pool1int pool.sys_id 2 boolean pool.active true boolean pool.default false int pool.importance 1 string ment pset pset1pset pset1int pset.sys_id 1 boolean pset.default

13、 false uint pset.min 8 uint pset.max 8 string pset.units population uint pset.load 0 uint pset.size 8 string mentcpuint cpu.sys_id 5 string ment string cpu.status on-linecpuint cpu.sys_id 4 string ment string cpu.status on-linecpuint cpu.sys_id 7 string ment string cpu.status on-linecpuint cpu.sys_i

14、d 6 string ment string cpu.status on-linecpuint cpu.sys_id 1 string ment string cpu.status on-linecpuint cpu.sys_id 0string ment string cpu.status on-linecpuint cpu.sys_id 3 string ment string cpu.status on-linecpuint cpu.sys_id 2 string ment string cpu.status on-linepset pset_default int pset.sys_i

15、d -1 boolean pset.default true uint pset.min 1 uint pset.max 65536 string pset.units population uint pset.load 807 uint pset.size 56 string mentcpuint cpu.sys_id 13 string ment string cpu.status on-linecpuint cpu.sys_id 12 string ment string cpu.status on-linecpuint cpu.sys_id 15 string ment string

16、cpu.status on-linecpu cpucpuint cpu.sys_id 8 string ment string cpu.status on-linecpuint cpu.sys_id 11 string ment string cpu.status on-linecpuint cpu.sys_id 10 string ment string cpu.status on-linecpuint cpu.sys_id 21 string ment string cpu.status on-linecpuint cpu.sys_id 20 string ment string cpu.

17、status on-linecpuint cpu.sys_id 23 string ment string cpu.status on-linecpuint cpu.sys_id 22 string ment string cpu.status on-linecpuint cpu.sys_id 19 string ment string cpu.status on-linecpuint cpu.sys_id 18 string ment string cpu.status on-linecpuint cpu.sys_id 29 string ment string cpu.status on-

18、linecpuint cpu.sys_id 28 string ment string cpu.status on-linecpuint cpu.sys_id 31 string ment string cpu.status on-linecpuint cpu.sys_id 30 string ment string cpu.status on-linecpuint cpu.sys_id 25 string ment string cpu.status on-linecpuint cpu.sys_id 26 string ment string cpu.status on-linecpuint

19、 cpu.sys_id 53 string ment string cpu.status on-linecpuint cpu.sys_id 52 string ment string cpu.status on-linecpuint cpu.sys_id 55 string ment string cpu.status on-linecpuint cpu.sys_id 54 string ment string cpu.status on-linecpuint cpu.sys_id 49 string ment string cpu.status on-linecpuint cpu.sys_i

20、d 51 string mentstring cpu.status on-linecpuint cpu.sys_id 50 string ment string cpu.status on-linecpuint cpu.sys_id 61 string ment string cpu.status on-linecpuint cpu.sys_id 60 string ment string cpu.status on-linecpuint cpu.sys_id 63 string ment string cpu.status on-linecpuint cpu.sys_id 62 string

21、 ment string cpu.status on-linecpuint cpu.sys_id 57 string ment string cpu.status on-linecpuint cpu.sys_id 56 string ment string cpu.status on-linecpuint cpu.sys_id 59 string ment string cpu.status on-linecpuint cpu.sys_id 58string ment string cpu.status on-linecpuint cpu.sys_id 37 string ment strin

22、g cpu.status on-linecpuint cpu.sys_id 36 string ment string cpu.status on-linecpuint cpu.sys_id 39 string ment string cpu.status on-linecpuint cpu.sys_id 38 string ment string cpu.status on-linecpuint cpu.sys_id 33 string ment string cpu.status on-linecpuint cpu.sys_id 32 string ment string cpu.stat

23、us on-linecpuint cpu.sys_id 35 string ment string cpu.status on-linecpu cpucpuint cpu.sys_id 44 string ment string cpu.status on-linecpuint cpu.sys_id 47 string ment string cpu.status on-linecpuint cpu.sys_id 46 string ment string cpu.status on-linecpuint cpu.sys_id 41 string ment string cpu.status

24、on-linecpuint cpu.sys_id 40 string ment string cpu.status on-linecpuint cpu.sys_id 43 string ment string cpu.status on-linecpuint cpu.sys_id 42 string ment string cpu.status on-line配置Zone的CPI资源 此时,如果在Zone1中运行psrinfo 命令,会发现只有56个CPUT(8-63), 原因是 zone1 缺省情况下使用了 pool_default 这个资源池。我们用 zonecfg 命 令,把 pool1 分配给 zone1:# zonecfg -z zone1 zonecfg:zone1set pool=pool1 zonecfg:zone1commit zonecfg:zone1exit# zoneadm - z zonel reboot在Zone1重新启动后,我们在这个zone里可以看到只有8个CPU了:Zone1# psrinfoon-line since 04/08/2009 14:22:42on-line since 04/08/20

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论