330 likes | 520 Views
基于 XEN 虚拟机的 绿色计算. 项目组成员:杨嘉晨、丁一、梁昊 指导 老师:戚正伟 2010.07.05 – 2010.08.14. 项目回顾. 1~2 周:实验环境的搭建及熟悉 CentOS 操作系统安装 Xen 在 CentOS 上源码安装 SVN 平台建立 Xen 的基本指令的熟悉 网络文件系统( nfs , iSCSI )的搭建 在 VM 上安装不同的 OS ,并通过 Save / load 、 Migrate 、 Live migrate 三种迁移方式, nfs 、 iscsi 两种网络文件系统进行简单迁移,简单熟悉 xm api 阅读相关领域论文.
E N D
基于XEN虚拟机的 绿色计算 项目组成员:杨嘉晨、丁一、梁昊 指导老师:戚正伟 2010.07.05 – 2010.08.14
项目回顾 • 1~2周:实验环境的搭建及熟悉 • CentOS操作系统安装 • Xen在CentOS上源码安装 • SVN平台建立 • Xen的基本指令的熟悉 • 网络文件系统(nfs,iSCSI)的搭建 • 在VM上安装不同的OS,并通过Save / load、Migrate、Live migrate三种迁移方式,nfs、iscsi两种网络文件系统进行简单迁移,简单熟悉xmapi • 阅读相关领域论文
项目回顾 • 第3周 • 测试在两个机器之间来回迁移VM,并测试在迁移造成的down time。 • 明确了以Shares and Utilities based Power Consolidation in Virtualized Server Environments为指导论文,通过已搭建的环境,实现其算法并对所得结果进行分析,并尝试改进算法作为项目目标。
项目回顾 • 4~6周 • 使用PYTHON语言实现了论文提及算法,并加以实验。 • 通过算法,实现了一个简单的VM分配控制器。通过检测CPU利用率及功耗,此控制器可以根据VM的min,max,share值,分配VM至PM。达到绿色计算的目的。
系统功能 • 多种 VM分配算法的实现框架。 由于 VM 分配问题本质上是一个装箱问题,属于NP问题,故实现的算法都是启发式的搜寻算法而不是最优算法。 • 根据分配算法,分配 VM 到 PM 上运行 • 对分配到特定 PM 上的 VM 分配资源。系统实现了分配CPU利用率资源。 • 监视分配到 PM 上的 VM 的运行状态,根据 VM 分配算法的分配结果,执行对 VM 的控制。控制包括: • create创建 调用每个 VM 自身的创建脚本,在指定 PM 上创建该 VM 。创建之前保证 PM 上的资源足够容纳该 VM 。 • migration 迁移 将一台 PM 上的一个 VM 动态迁移live migration到另一台 PM 上。分配算法在不同初始条件的前提下,有可能将一台已经分配过的 VM 重新分配,考虑到迁移的效率远快于关闭并重新开启,并且迁移能够保证 VM 上的所有服务继续运行,故我们实现了虚拟机的动态迁移。 • close & destory关闭 如果分配算法决定排除一台已经分配到 PM 的 VM ,则将其关闭。 • ajustment调整 VM 的资源占用。实现中通过xm工具调整 VM 的weight与cap值来实现。 • VM 启动后的自动配置,运行指定服务。 • 收集 VM 的性能测量数据,包括 • VM 的cpu利用率 • VM 的http响应时间
Dispatching Server 分派服务器 • 职责 运行dispatcher分配算法,并运行所有参数收集程序的服务器。 • 软硬件环境 CentOS 5.5
Storing Server 存储服务器 • 职责 运行NFS服务,在nfs的根目录上保存所有系统代码,以及所有虚拟机的硬盘镜像,为系统运行提供持久存储。 • 软硬件环境 CentOS5.5 NFS 服务器
PM 物理机服务器 • 职责 运行xen,dom0中运行CentOS。其上运行monitor.py,监视分配给自己的VM的状态,并根据其状态控制VM的启动、迁移、关闭,并分配PM资源。 • 软硬件环境 Xen 3.4.3 CentOS5.5 linux-xen 2.6.18内核 dom0_mem = 1024 MB Intel Core 2 Due 双核处理器 2GB物理内存资源
VM 虚拟机 • 职责 运行虚拟机,其中运行测量虚拟机性能的各服务器组件。 • 软硬件环境 Archlinux 10 Python 2.6 虚拟机分配1个vcpu 128MB内存
组件模型 • 公用代码 公用代码供所有其余组件引用。
组件模型 • 测试 & 数据收集代码 这些代码在主框架之外,度量评估VM的性能参数。对于每一个参数,代码都是成对出现,一个位于VM中生成数据,一个位于 Dispatching Server上,收集来自所有VM的数据并记录。
组件间通信模型 • XenGreenCom系统是一个分布式系统,组件间的通讯方式分为两种: • 黑板模式 • http通讯
黑板模式 • 实现方式 每一个独立的组件,通过写入一个存放在nfs上、属于自己的黑板文件,来报告该组件的当前状态。每一个黑板文件的结构是定义了一些特殊变量的python脚本。其它组件通过读取并解析黑板文件上的内容,来决定自己的行为。组件之间避免直接通讯,通过黑板文件实现间接通讯。 • 优点 任何时刻,系统管理员可以手动修改黑板文件的内容,从而控制整个系统的行为。并且,关闭并修改任何一个组件,都不会影响到系统其余部分的正常运作,因为黑板文件的内容会保持不变。 • 缺点 周期性地检查黑板内容效率很差,且周期很长,实现中为了达到nfs同步的速度,周期至少是5s这样的数量级。 但是考虑到本系统组件的基本操作,比如虚拟机动态迁移的耗时是20s左右,虚拟机冷启动的耗时是40s左右,5s的周期性对于我们实现的系统而言不算是太大的缺陷。
http server/client通讯 • 实现方式 通过开放http服务,对外公布数据。 系统中引入这种通讯方式的地方,都是前述的,用于VM的性能等指标数据测量与收集的地方。 • 优点 该种方式建立起来的进程间通讯,无论从稳定性、速度等方面考虑都受到严格验证,并且只需要一个普通浏览器就可以很容易地调试。 • 缺点 解析http请求的方式实现复杂,占用一个通信端口。并且任何一端程序失败,都会导致链接断开。
系统运行流程 Monitors Dispatcher Plan PMs VM 1 stat VM 2 stat ... VM n stat Dispatcher Migrate/Create/Destroy Util_Data
系统运行流程 • 系统设置的第一步是建立起一个内部局域网,保证所有虚拟机的网络连接性,同时内部网路有助于维持虚拟机迁移时的稳定性。 • 网络正常配置之后,StoringServer开始提供NFS服务,为所有PM和VM提供统一的数据存储。
系统运行流程 • PM在CentOS启动时,通过/etc/fstab配置,自动挂接 nfs到/mnt/nfs位置上。 • 启动monitor.py,首先通过读取/proc的方式收集物理机的相关性能参数,包括cpu频率、ip地址等,写入server_ip文件。这一步是将PM注册给Dispatcher,DS会读取所有的server文件来获取可用PM列表。 • 随后monitor进入监视循环,每一次监视周期中,逐一读取每一个VM的状态,并执行相应操作。
系统运行流程 • VM创建脚本 • VM是通过arch.cfg脚本创建的。 • 在该脚本中,读取当前VM被分配的ip地址,并据此算出MAC地址,设置虚拟网卡。 • VM的MAC地址是IP地址的16进制表示,前缀00:1B形成的,在VM的OS启动时根据MAC地址再反向算出IP地址。 • VM arch 启动脚本 • 安装在VM中的arch被配置为自动登录,在登录的最后阶段,会执行/etc/vm/init.sh中的启动脚本。 • /etc/vm/init.sh执行以下序列: • 查询自己被分配的MAC地址并回算出IP地址。 • 用ifconfig重新设置IP地址。 • 挂载SS上的NFS到/mnt/nfs中。 • 调用lookup_vmname.py,在/mnt/nfs中,根据自己的IP地址推算出自己的hostname。 • 设置自己的hostname,并同时设置$VMNAME环境变量。 • 进一步调用位于/mnt/nfs/$VMNAME/init.py的python脚本。(该脚本目前为空) • 进一步调用位于/mnt/nfs/$VMNAME/init.sh的bash脚本。 • /mnt/nfs/$VMNAME/init.sh执行以下序列: • 检查/mnt/nfs/pubkey中是否存在自己的pubkey,若没有,调用ssh-keygen生成自己的dsa公钥密钥对。 • 收集/mnt/nfs/pubkey中的所有VM的公钥,记录到~/.ssh/authorized_keys,信任所有其它的VM。 • 开启VM 虚拟机中列出的所有http服务,开始监听相应端口。 • 开启HPL benchmark服务。
实验数据分析 图1 utility变化图 (VM每过定长时间增加一台,PM按需增长)
实验数据分析 图2 utility与VM个数
实验数据分析 图3 考虑功耗后的utility变化图
实验数据分析 图4 考虑功耗后 VM与utility关系图
数据分析 • BS,GM,GMM曲线 • 在X轴方向上长度较短 • 相同物理机数量上能够放置的VM数量较少 • 相同任务量的情况下这三种算法需要更多的物理机资源来完成。 • PEMM曲线 • 该曲线分为明显的3段 • 第一个折点 • 第二个折点 • PEMM在接受了更多的VM的情况下,utility还有上升的空间.
数据分析 • 新开物理机的能耗作为影响utility的参数 • 参数调小,曲线升高,反之参数调大,曲线降低 • 这个参数会影响到tradeoff的大小,可以在节能模式下将参数调大或者在性能模式下将参数调小.
数据分析 • PEMM算法改进设想: PM1 On PM2 On PM3 Off VM2 VM3 VM1 VM4 PM1 On PM2 On PM3 Off VM2 VM3 VM1 VM4