http://blog.csdn.net/wanjia19870902/archive/2010/10/26/5967467.aspx
编译Xen的话,如果需要从网上下载的话就按照Readme里面说的那样make world,make install 。但是通常情况,我们都会自己搞好源码包,那么直接make xen make tools make install-xen make install-tools
编译Dom0 kernel的话,有两种方法,一种是Readme里面说的,make linux-2.6-pvops build / install 我之前就这样编的,不过有些不方便,需要把你dom0 kernel的文件夹链到linux-2.6-pvops.git 。还有一种就是直接编译kernel,拷贝.config文件,make make modules_install make install。
最后重新mkinitrd -v -f --builtin=ehci-hcd --builtin=ohci-hcd --builtin=uhci-hcd --with=aacraid --with=sd_mod initrd-2.6.31.13-wj.img 2.6.31.13-wj,并修改grub文件。
好的,现在环境算是弄好了,把之前的kernel全删了,干净多了。
由于现在有个问题是,如何动态修改xen里面的rate limit。看了netback里面的代码,发现,是在前后端connect的时候,netback会去读xenbus里面的rate值,并在后面一段时间内的tx bytes进行监控,如果超出credit,则等待这段时间过去,重新计时监控。
目前貌似有两种想法:一种是detach vif 在attach vif,这样前后端会重新connect,读新rate,还有一种是让netback watch这个xenstore path被修改的事件,调用callback,改写内存中的credit值。
今天初步试验了下,由于还要赶回家写自己的代码,暂时写到这。等确定方案了,在详细讲解
接着昨天的写,由于detach,attach,重新建立后端和前端握手,对于Linux来说无所谓,windows的话,有点问题。所以采用第二种方法,register xenwatch,callback里面去重新read rate limit。废话少说,直接贴代码。
--- ../dom0_kernel_netback_rate/drivers/xen/netback/xenbus.c2010-10-26 18:50:33.000000000 +0800
+++ ../dom0_kernel_398819_20101019/drivers/xen/netback/xenbus.c2010-04-03 05:29:40.000000000 +0800
@@ -33,8 +33,6 @@
static void connect(struct backend_info *);
static void backend_create_netif(struct backend_info *be);
static void unregister_hotplug_status_watch(struct backend_info *be);
-static void unregister_rate_watch(struct backend_info *be);
-
static int netback_remove(struct xenbus_device *dev)
{
@@ -43,7 +41,6 @@
//netback_remove_accelerators(be, dev);
unregister_hotplug_status_watch(be);
-unregister_rate_watch(be);
if (be->netif) {
kobject_uevent(&dev->dev.kobj, KOBJ_OFFLINE);
xenbus_rm(XBT_NIL, dev->nodename, "hotplug-status");
@@ -355,15 +350,6 @@
be->have_hotplug_status_watch = 0;
}
-static void unregister_rate_watch(struct backend_info *be)
-{
-if (be->have_rate_watch) {
-unregister_xenbus_watch(&be->rate_watch);
-kfree(be->rate_watch.node);
-}
-be->have_rate_watch = 0;
-}
-
static void hotplug_status_changed(struct xenbus_watch *watch,
const char **vec,
unsigned int vec_size)
@@ -385,17 +371,6 @@
kfree(str);
}
-static void rate_changed(struct xenbus_watch *watch,
- const char **vec, unsigned int len)
-{
-
-struct backend_info *be=container_of(watch,struct backend_info, rate_watch);
-
-IPRINTK("rate changed/n");
-xen_net_read_rate(be->dev, &be->netif->credit_bytes,
- &be->netif->credit_usec);
-}
-
static void connect(struct backend_info *be)
{
int err;
@@ -426,16 +401,7 @@
be->have_hotplug_status_watch = 1;
}
-unregister_rate_watch(be);
-err=xenbus_watch_pathfmt(dev, &be->rate_watch,
- rate_changed,"%s/%s", dev->nodename, "rate");
-
-if(!err){
-be->have_rate_watch=1;
-}
-
}
重新编译内核之后,调用xenstore write /local/domain/0/backend/vif/id/0/rate "xxx,xxx",之后进入虚拟机,scp一个文件发现,果然重新限速了。Bingo!
分享到:
相关推荐
1. **内存管理优化**:Xen 4.0对内存管理进行了优化,引入了更高效的内存分配策略,如 balloon driver 和 memory ballooning,以动态调整虚拟机之间的内存分配,确保资源得到充分利用。 2. **网络虚拟化**:Xen支持...
Xen负责动态地调整这些映射,以优化内存使用和性能。 4. 内存超分与 ballooning: 为了提高资源利用率,Xen支持内存超分,即允许分配给Domain的内存总量超过实际物理内存。这种情况下,Xen会使用一种称为ballooning...
《Xen虚拟化实战》是一本深入探讨Xen虚拟化技术的专业书籍,旨在帮助读者掌握在实际环境中运用Xen的技巧。Xen是一款开源的全虚拟化解决方案,它允许在一个物理服务器上运行多个独立的操作系统实例,提高了硬件资源的...
此外,对于想要深入研究的读者,书中还会涉及Xen的最新发展,如动态资源调度、实时虚拟化和云计算集成等前沿话题。 2003-xensosp.pdf这个文件很可能包含了Xen早期的发展历史和技术概述,对于理解Xen的发展历程和其...
不过,为了能够在主机上安装Xen,通常需要对主机的操作系统内核进行一定程度的修改。因此,Xen主要适用于Linux、Unix等开源内核的操作系统,而对于Windows等非开源内核的操作系统则不支持。 #### 常见的虚拟机软件...
### Xen虚拟技术精要 #### 一、Xen虚拟化技术概述 本书《精通Xen虚拟技术》由William von Hagen编写,旨在为读者提供一套全面深入地了解Xen虚拟化技术的专业指南。Xen是一种开源虚拟机监视器,能够支持多种操作...
从标题来看,"XEN"可能是指一个特定的软件版本或平台,而"V1.0.7"表示这是其发展的第1.0.7个迭代。"[CyberNation]"可能是一个团队、组织或社区的名称,这通常与黑客、安全研究人员或者网络安全社区有关。"rat"通常在...
7. **动态调整资源**:通过Xen管理工具,可以实时调整虚拟机的CPU、内存等资源。 ### Xen的优势与应用 - **高效率**:由于Xen的微内核设计,它能提供接近原生的性能。 - **可扩展性**:Xen支持大规模的虚拟机...
在IT行业中,Xen是一种流行的开源虚拟化技术,它允许在一个物理服务器上运行多个独立的操作系统实例,称为虚拟机(VMs)。C语言是系统级编程的常用工具,因此使用C语言来监控Xen虚拟机可以实现高效且灵活的监控解决...
1. **高性能**: Xen 采用半虚拟化技术,允许操作系统修改少量代码即可支持虚拟化,从而实现接近原生的性能。 2. **广泛支持**: 众多操作系统和应用支持 Xen,包括 Windows 和各种 Linux 发行版。 3. **开放源码**:...
Ubuntu 10.04 安装 Xen 虚拟机 Xen 是一个开源的虚拟机监视器,可以在多种操作系统上运行。安装 Xen 虚拟机可以让我们在 Ubuntu 10.04 上运行多个虚拟机,从而提高系统的灵活性和可靠性。本文将指导您如何在 ...
半虚拟化要求 guest OS 进行修改以配合 Xen,以实现高效的资源调度和通信。全虚拟化模式则通过二进制翻译技术,使得未经修改的操作系统可以在Xen上运行。 **3. Xen的主要组件** - **Hypervisor(Xen内核)**:Xen的...
- `xenstore-write`: 修改XEN的状态信息。 - `xen-info`: 显示有关XEN的信息。 - `xm list`: 列出当前正在运行的所有虚拟机。 - `xm start <domain-id>`: 启动指定ID的虚拟机。 - `xm stop <domain-id>`: 停止指定ID...
【Xen 开发实践手册】是一本专注于Xen虚拟化技术的实践指南,涵盖了从安装、部署到开发和配置的全过程。Xen是一款开源的全虚拟化解决方案,广泛应用于云计算领域,为用户提供高效且安全的虚拟化环境。通过本书,读者...
API包括一系列的函数调用,涵盖了虚拟机生命周期的各个阶段,如启动、停止、迁移、配置参数修改等。Xen API的设计目标是提供一种安全、稳定且易于使用的接口,使得虚拟化管理软件能够无缝地与Xen集成。 **API主要...
本文档是关于Xen虚拟化技术中xm命令的手册,xm是Xen管理用户界面的主要工具,用于管理Xen域。该手册详细介绍了xm命令的使用方法,包括创建、暂停、关闭域,列出当前域,启用或锁定虚拟CPU,以及附加或分离虚拟块设备...
根据文档,可能需要对`hgext/inotify/linux/_inotify.c`文件中的头文件包含路径进行修改,即从`#include <sys/inotify.h>`更改为`#include <linux/inotify.h>`。 2. **Python开发环境**:确保安装了Python及相关...
Xen虚拟机配置文件xl_cfg详解 Xen虚拟机是当前最流行的开源虚拟机之一,它提供了强大的虚拟化功能和可扩展的架构。XL_CFG是Xen虚拟机的配置文件,它提供了域(Domain)配置文件语法说明的详细信息。通过学习xl_cfg...
为了使系统能够在启动时选择使用支持Xen的内核,需要修改GRUB配置文件`/boot/grub/grub.conf`。根据示例文本中的内容,可以看到已经为支持Xen的内核添加了相应的条目: ``` # cat /boot/grub/grub.conf ... title ...
《虚拟机Xen权威资料集合》是一份涵盖了广泛Xen虚拟化技术的资源包,包含了论文、用户手册等多种形式的文献。这些资料旨在为学习和研究Xen虚拟化技术的人员提供详实、全面的参考资料。 Xen是一种开源的全虚拟化解决...