csatblogspotdotcom

Saturday, March 29, 2008

读《Intel Virtualization Technology》[1]

文章开头列举了虚拟化技术的3个用例模型。

1.Workload isolation。作者主要从安全的角度,说虚拟化技术使操作系统相互隔离开,更安全了。在操作系统层面上来看,确实隔离开了,确实安全一些,但作者没有考虑到因为使用虚拟化技术使计算机系统更复杂了,增加了VMM层,VMM及其相关部分也会出现安全隐患,可能出现漏洞的地方更多了,所以系统受到病毒、黑客侵扰的可能性反而增大而不是减小了。我想作者不应该从安全角度看Workload isolation,而应该从软件配置的角度。因为软件配置需要特定环境,一个配置好后可能破坏另一个已配好软件所需环境,而OS相互间的隔离恰能解决这个问题,使相互间所需环境互不交叉。

2.Workload consolidation。讲了3个方面,很全面。一个是节省资源,一台物理机并非所有时候都100%满负荷运行,所以可以把多个OS运行在一个物理机上(资源不够时还可以迁移),这对大企业来说是不小开销;另一个是系统升级兼容性问题,硬件或OS升级后软件可能有所不兼容,于是可以多开一个虚拟机,一个仍然运行老系统,另一个运行新系统;最后还有增加了管理员管理能力,在同一物理机上的几个虚拟机显然要比在不同物理机上的OS要好管理。

3.Workload migration。虚拟化技术使得计算机硬件和OS之间的耦合性大大降低,这样使得迁移成为可能。有了迁移技术不仅使硬件的维护工作的复杂程度有所降低,而且可以在不同物理机间实现负载均衡。

接着是实现虚拟化的方法。传统操作系统优先级从03,操作系统运行在ring0上而应用程序运行在ring3上,ring1ring2没有用到。而增加了VMM后,就要有所改变了。可以有3中方式。一种是0/1/3模型,让guest OS降低一个优先级,到ring1上运行,把ring0让给VMM,这样做使VMM较简单,但不能在32位处理器上运行64位模式;另一种是0/3/3模型,VMMring0,但guest OSring3和应用程序公用一个优先级;第三种是使用VT技术。前两个属软件实现,最后一种是硬件实现。

然后分别讲了用软硬件实现的思路并作了一些分析。

1.仅用软件方式实现Intel体系架构实现的虚拟化。

用软件实现存在一些难点,解决方法有两个:半虚拟化和二进制指令翻译。

半虚拟化例子有XenDenali,他们把OS稍微修改下,不需要修改应用程序,运行时效率也较高,但缺点是适用面不广,有的OS不好修改,如Windows

二进制指令翻译的例子有VMware产品、Virtual PC、微软的Virtual Server,这些VMM支持的操作系统更多,但有更多的额外开销。

2.用硬件实现虚拟化。Intel虚拟化技术的首要设计目标就是不用半虚拟化技术也不用二进制指令翻译技术,使VMM既能在不修改guest OS的情况下支持各种不同类型的guest OS,也能有很高级别的性能。于是接下来就介绍了IntelVT技术--用硬件的方法实现虚拟化。

Intel的虚拟化技术包括支持32位英特尔架构的VT-x和支持安腾架构(64位)的VT-i

VT-x用两种形式的CPU操作增强了Intel32位架构:VMX root操作和VMXroot操作。VMMroot操作级,而guest OS运行在非root操作级。这两种形式的操作都支持4个优先级,这样使guest OS能自由地运行在他原来的优先级上,同时VMM也可以很灵活地使用的4个不同优先级。VMX root操作和没有VM-xIA-32相似。在VMXroot操作级中运行的软件在某种程度上优先程度有所降低。VM-x定义了两个新的转变:一个是从VMX root操作到VMXroot操作的转变,另一个是从VMXroot操作到VMX root操作的转变,换句话说,一个是从VMMguest OS,叫VM切入(VM entry),另一个是从guest OSVMM,叫VM切出(VM exit)。

引入了一个新的概念:VM控制结构(VMCS),这是一个管理VM切入、切出以及VMXroot操作中处理器行为的新数据结构。它在逻辑上被分为两部分,guest状态区和host状态区。这些区域包含与不同处理器状态组成相对应的字段。VM切入时从guest状态区加载处理器状态,VM切出时把处理器状态保存在guest状态区,并从host状态区载入处理器状态。

VT-i包括安腾处理器硬件和处理器抽象层(PAL)的扩展。

最主要的硬件扩展是在处理器状态寄存器(PSR)中增加了一个新的位(vm),VMM运行对应PSR.vm=0guest OS运行则对应PSR.vm=1。并加入了一个新的指令vmsw以修改PSR.vm位,这样使切换开销较小。PAL固件层提供了一个对VMM进行编程的接口。

总之,这篇文章从介绍实现虚拟化技术的难点引出VT技术,把它和半虚拟化技术和二进制翻译技术作对比,夸了VT的好处:用VT技术,Intel能解决或更好地解决了虚拟化中半虚拟化技术和二进制翻译技术没有解决或者解决得不是很好的问题。


[1] Rich Uhlig, Gil Neiger, Dion Rodgers, Amy L. Santoni, Fernando C. M. Martins, Andrew V. Anderson, Steven M. Bennett, Alain Kagi, Felix H. Leung, Larry Smith, " Intel virtualization technology, " Computer, May 2005, Volume: 38, Issue: 5, pp. 34-45.

Labels:

Friday, March 28, 2008

WebOS

I-Cube
EyeOS
eXo Enterprise WebOS
Zimdesk
Glide OS
WidgetPlus
Peepel
Xindesk
YouOS
Widgetop
CorneliOS
JavaFlashBridge
Appmarks
Craythur
Desktoptwo
Ghost
Orca
SSOE
Purefect
Goowy
TomOS
Jooce

Labels:

iptables configuration

/etc/sysctl.conf
net.ipv4.ip_forward = 1
(echo 1 > /proc/sys/net/ipv4/ip_forward)

/sbin/ifconfig eth0:0 192.168.4.4 netmask 255.255.255.0

echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F
/sbin/iptables -X
/sbin/iptables -F -t mangle
/sbin/iptables -X -t mangle
/sbin/iptables -F -t nat
/sbin/iptables -X -t nat
/sbin/iptables -P INPUT ACCEPT
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD ACCEPT
/sbin/iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 211.69.198.***
/sbin/iptables -t nat -P PREROUTING ACCEPT
/sbin/iptables -t nat -P POSTROUTING ACCEPT
/sbin/iptables -t nat -P OUTPUT ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.4.0/24 -j MASQUERADE




后记:
来贴一下偶现在的iptables:
# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 23 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 115 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 115 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3389 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5800:5810 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 5900:5999 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT

Labels: ,

Thursday, March 27, 2008

读《Virtualization, Virtually at the Desktop》[1]

这篇文章讲了一下作者所在的瑞格林艺术与设计学院准备使用的虚拟化解决方案,分析比较了一下几种方案。

作者所在的瑞格林艺术与设计学院有着一个很好的计算机资源利用机制。先把最新最好的计算机图形工作站和笔记本给要求较高的实验室等使用,并保持较高的更新速率和较高的人均拥有率。使用两年后再把这些机器给对其那些要求较低的行政办公人员使用。但即使是这样,即使是实验室人员经常使用,这些较新的计算机图形工作站和笔记本的利用率仍然很低。所以想到了虚拟化技术。

目前,有不同层次的虚拟化技术:

1.硬件虚拟化:增加一层软件对底层硬件进行仿真,以使不同操作系统共享同一硬件资源。

2.系统级虚拟化:在一个单一操作系统实例的内核层上创建相互隔离的虚拟机。

3.应用层虚拟化:让应用从操作系统分离,让这些应用像网络应用一样运行。

而作者所讨论的虚拟化技术是在后台提供一批强大的主机,在上面运行虚拟机;在前端每个人都有一个不那么强大的计算机,通过VNC之类的工具登录到后台的虚拟机上,当然也可以在本地运行一些要求不高的程序。

艺术与设计学院学生对计算机要求有别于一般情形,他们更多的是对图形图像的处理,要求更强大的CPU,更大的内存容量,更重要的是需要经常生成和访问数百MB的大文件。带宽虽然重要,但不是首要因素,于是现在不同方案下测试选出最好方案后再考虑带宽因素。

作者比较了VMwareVDI技术以及XenDDI技术,最后觉得在他们的校园里结合这两个技术更合理。但目前虚拟化技术还有一个缺点,即不能在苹果公司硬件系统上运行虚拟化软件,虽然可以有虚拟化软件让Mac OS运行Windows软件。

这篇文章写的比较浅,主要不是技术性文章,没有提出新的东西,只是介绍分析了一下虚拟化技术在一个校园里应用实例。

  1. Karissa Miller, Mahmoud Pegah: Virtualization, Virtually at the Desktop. Proceedings of the 35th annual ACM SIGUCCS conference on User services. Oct. 2007.

Labels:

Saturday, March 22, 2008

读《VMM-Independent Graphics Acceleration》[1]

这篇文章主要介绍了VMGL,基于OpenGL的独立于VMMGPU的虚拟化图形加速的解决方案。在作了一些背景知识介绍后,作者对VMGL进行了说明解释,并对其进行了性能评测,最后介绍了相关工作并给出未来的设想。

对于浮点运算,GPU性能要比x86架构的CPU好一个数量级。所以,在对图形处理有要求的应用中,GPU是必须的。而目前在虚拟机中,对GPU的虚拟化存在一些难处。

1.GPU的硬件接口都有专利保护,许多技术细节都被视为商业机密,而这些细节对于虚拟一个GPU来说又是有用的。

2.由于硬件接口是非公开的,GPU制造商随着他们产品的更新换代对这些接口作了很大的改动。因此,对这么多种类的接口进行虚拟存在难度。

3.设备驱动的闭源性(closed-source)使得一个VM的设备驱动不能被另一个VM所用。

总之,一个硬部件的虚拟化需要一个统一的接口标准,如x86指令集,或磁盘的IDESCSI接口,而GPU缺少这样的标准。

VMGLOpenGL软件接口进行了虚拟化,是在API层面上的虚拟化。这样,VMGL能同时支持多个guest OS,支持不同厂商提供的GPU,并有暂停和恢复功能,此外对多核也有支持。经过对它的性能评价,其性能要比用软件实现好两个数量级,而比起物理机其性能最多下降14%甚至持平。




1展示了VMGL的体系结构,这包括3个模块:VMGL库、VMGL stubVMGL 窗口服务扩展(VMGL X server extension)。在guest Os中,用VMGL库作为OpenGL的替代者。当应用程序启动时,在host Os端启动一个VMGL stub。当guest中的应用程序发出GL相关命令时,VMGL库则通过回环连接的网络传输把命令转发给VMGL stub。每个应用程序都有一个不同的VMGL stub,而且每个stubhost中都作为一个独立的进程。

host端有一个基于VNC的查看器,它显示有guest产生的2D输出,并捕获用户输入并传回给guestguest2D输出由一个X服务器产生,X服务器对虚拟2D帧缓冲区写入。如果没有虚拟帧缓冲,2D输出就有一个VNC X server产生。他们修改了VNC查看器,使之于VMGL stub交互。

为了整合查看器(viewer)的2D输出和VMGL stub3D GL输出,在guest端增加了一个VMGL扩展。当扩展把信息传给stub后,stub把当前用户不可见的冗余信息去除,把结果与window整合,再传回guest

VMGL中传统的GLXWireGL代替以高其性能。

VMGL支持VM的暂停、恢复功能,让用户会话被打断后能在不同计算机间移动。恢复后的图形状态和暂停前一样,而且保持硬件加速的能力。VMGL是通过一个叫影子驱动(shadow driver)的方法来实现的。当guest运行时,VMGL不断测探GL命令,以保持对一个应用程序整个OpenGL状态的跟踪。恢复VMGL保存的应用程序OpenGL状态的同时,VMGLhost端创建一个新stub

VMGL保存应用程序管理的所有OpenGL上下文(context),以及当前和这些上下文相关的所有窗口。对每一个上下文,保存一下3类状态:

1.全局上下文状态:包括当前矩阵栈、光源、可视属性等。

2.纹理状态:包括像素数据和参数如边界颜色。

3.显示列表:包括一系列以压缩格式存储在GPU存储器中的OpenGL调用。

实现OpenGL状态恢复的代码是在用户空间(userspace)实现的,这样使OSVMM保持独立。而且,OpenGL状态独立于它在GPU内存中的形式,与哪个厂生产的GPU无关,唯一的限制是恢复时目标机显卡需提供源机的一个超集,目标机支持的东西要包括源机支持的东西。

接下来是对VMGL的性能评测,证实了VMGL的确是个好东西。

作者从这几个角度,进行了评估:性能、移植性、暂停和恢复、对分辨率敏感程度、对多核的敏感程度、可扩展性。所用的benchmark包括游戏和娱乐,有4个:Quake 3EnemyUnrealMplayer。测试对象有物理机、用Mesa OpenGL库来软件实现3D加速的guest OS、用VMGL实现的guest OS。而且分别在高分辨率和低分辨率两种情况下进行了对比。

1.性能。用软件实现的3D加速性能要比其他情况差两个数量级,而用VMGL实现的性能最多比物理机差14%,甚至持平。

2.移植性。VMM移植性:Xen 在完全硬件虚拟化情况下的性能最差,Xen在硬件虚拟化时的半虚拟化性能和Xen半虚拟化性能最好,VMware Workstation性能与二者接近。guest Os间的移植性:在FreeBSDOpenSolarisLinux下性能都不错,明显比软件实现的图形加速效果好。

3.暂停和恢复。暂停时保存的OpenGL状态文件大小从十几兆到70兆不等。恢复时间从零点几秒到两秒多不等。这都说明暂停和恢复的效果是很好的。

4.对屏幕分辨率的敏感程度。出乎意料的是对于Xen+VMGL,高分辨率比低分辨率更合适。在除Enemy外的3benchmark中,增高的分辨率并没有明显影响其性能,其性能和物理机和接近。

5.对多核处理器的敏感程度。在双核情况下,网络利用率、CPU利用率、帧率都明显高于单核的情况。显然,VMGL更适合多核。

6.可扩展性(scalability)。随应用程序负载增加,可扩展性下降。

最后介绍了一下相关工作和他们还未完成的工作,并作了总结。

别人的一些解决方案有驱动VMdriver VM),即授权一个VM去直接操作GPU硬件。这样host也扮演驱动VM的角色。这样做的好处是避免不同domain的访问冲突,但同时也会降低安全性,而且能直接访问硬件的VM不能被安全的挂起(suspend)或被迁移到另外一个没有驱动支持的机器上。

另外的一些图形虚拟化集中在性能上,而不是提供VMMguest Os的独立性。

他们的工作目前集中在VMMguest Os的可移植性上,所以没有进行以牺牲可移植性性能为代价的性能优化。作者准备通过在更高层面上的并发来实现对某些高要求的应用进行优化,以便使其性能更接近物理机。

目前,VMOpenGL stub间总的带宽成为性能瓶颈。舍弃网络传输,用共享内存可以缓解该瓶颈

最后,作者相信把VMGL移植到WindowsMac Os上是没有障碍的,而且Direct3D API也可以用和OpenGL相似的方法被虚拟化。

[1] H. Andres Lagar-Cavilla, Niraj Tolia, M. Satyanarayanan, Eyal de Lara. ACM Press, Jun. 2007. Proceedings of the 3rd international conference on Virtual execution environments.

Labels:

Sunday, March 16, 2008

jump wire make grub wrong & loosen memory make computer fail to start

Today I want to add my former hard disk to my computer in the lab. But after I added it, the mainboard alarmed:di,di,di... So I had to use one disk. But it doesn't work. There was no signal to the display. I thought there must be something wrong with the video card while I knew later a loosen memory caused this. Then I tried two hard disk again and failed again. Thus I gave up that time. However, when I restart the computer it said error 18 and the subject is grub. Suddenly I remembered I jumped wire on the disk. I tried to jumped wire back. OMG! Succeed!
At the time of when the OS failed to start, I was really scared.

Labels:

读《Rethinking the Design of Virtual Machine Monitors》[1]

文章主要介绍了华盛顿大学搞的一个VMMDenali[2] VMM,说了它的一些优点,介绍了他们是怎么样在可伸缩性(scalability)和可扩展性(extensibility)两方面来优化VMM的。

他们的工作所基于的假设是:虚拟机抽象层有别于物理机是有可能也很有用的。从这个假设出发,他们在半虚拟化(paravirtualization)和硬件操作(hardware interposition)这两个方面得出了结论。

在半虚拟化中,虚拟硬件体系和下面的硬件体系是不同的。作者利用这个特征建立了一个能支持数百个并发执行虚拟机的可扩展VMMscalable VMM)。而硬件操作则让程序员能用虚拟硬件组件(如虚拟磁盘和以太网设备)的新的实现来对VMM进行扩展。

在文章开头,作者简要介绍了VMM历史并分析了VMM再度流行的原因:

1. 实施简单。避开了上面抽象层(如TCP/IP套接字和文件系统)的实施。

2. 提供完整的系统服务。提供一套完备的软件系统,包括操作系统和相应的应用程序套件。

3. 对多操作系统的支持。能让多个操作系统运行在一个物理机上。

4. 可以容忍的性能损耗。随着处理器速度的提高,以前的虚拟化开销变得可以被接受。

作者声称发现了困扰传统VMM的一些限制。并对Denali VMM进行了修改以克服这两个问题带来的挑战:可伸缩性(scalability)和可扩展性(extensibility)。

首先是可伸缩性。通过半虚拟化技术和idle-with-timeout指令的引入来实现。

传统的VMM都遇到了可伸缩性瓶颈,使实际可支持的VMM数量受到了人为的限制。问题的产生是由于VMM里时间的概念:物理机和虚拟机的时间概念不一致。为了解决这个问题,半虚拟化被提了出来。Denali所用到的半虚拟化概念和早期的不纯的虚拟机体系结构(impure virtual machine architectures)类似。一般物理机HAL(硬件抽象层hardware abstraction layer)直接识别物理硬件;传统的VMM则在HAL和硬件层间加了VMMHAL还是只识别硬件,只不过VMM代替了硬件,和HAL打交道;而在半虚拟化系统中HAL被修改了,只识别VMM,不能直接识别硬件。Denali把对操作系统的修改尽量限于HAL,以使之尽量简单。


1. System architecture comparison. (a) On a conventional operating system, the hardware abstraction layer is the only OS subsystem with knowledge of the underlying physical hardware. (b) A traditional VMM exposes an unmodified replica of the physical hardware architecture. (c) A paravirtualized VMM exposes a modified hardware architecture.

传统的软硬件接口在这3个方面限制了可伸缩性:空载(idling)、中断(interrupts)和计时器(timers)。Denali引入了idle-with-timeout指令,让guest OS在一定时间期限后让出CPU。这个方法使性能有了很大的提高。图2就是实验的结果。实验是在一组运行有Web服务的虚拟机上完成的。可以看出损耗减少了66%(好像有些夸张)。


2. Benefit of idle-with-timeout instruction. The graph depicts the aggregate throughput across an increasing number of virtual machines, which run a custom Web server atop a lightweight operating system. Each Web server VM serves a static 130-Kbyte document. The x-axis reflects the number of VMs across which the workload is spread. Denali avoids a 66 percent throughput degradation for a large collection of Web server virtual machines.

顺便,作者还提到,paravirtualization使VMM变得更简单。Denali的虚拟体系结构忽略了几个很少用到的特征:如BIOS,保护环(protection rings)等;Denali把原本由硬件实现的TLB(页表缓存,translation lookaside buffer)改为由软件实现;半虚拟化技术也避免了不可虚拟的指令引起的问题,因为Denali并没有试图精确的对物理硬件进行仿真,所以绕开了这些问题。

其次是可扩展性问题。通过提供可编程API和硬件操作(hardware interposition)实现。

VMM的传统角色是针对多用户或多应用对单一物理机进行复用。而现在,其功能被扩展到了多个方面:迁移(migration)、入侵检测(intrusion detection)、配置调试(configuration debugging)、重放式登录(replay logging)、容错(fault tolerance)、性能分析(performance analysis)。传统的VMM可扩展性并不好,作者通过介绍μDenali系统来给出他们的解决方案。μDenali给新虚拟机服务的快速开发带来了便利。该系统通过两大部件来实现可扩展性。第一,给出了一组编程接口;第二,μDenali系统支持硬件操作(hardware interposition)。

μDenali的可编程API主要针对这VMM的这4个方面:

1. I/O设备。许多服务都必须能监控或修改I/O设备(如虚拟磁盘和以太网)的行为。

2. 给出虚拟机状态。μDenali在硬件或VMM中缓存了虚拟机状态,并提供API,使诸如断点检查(checkpointing)和迁移这些需要获知即时完整虚拟机状态的服务能够抽取相应状态。

3. 跟踪不确定性事件。像虚拟机重放和容错之类的服务需要不确定性事件精确的时间信息,例如时钟中断。

4. 控制虚拟机。开发人员可用μDenali的可编程API来开启、暂停和终止虚拟机。

[1] Andrew Whitaker, Richard S. Cox, Marianne Shaw, and Steven D. Gribble. Rethinking the Design of Virtual Machine Monitors. Proceedings of the USENIX Annual Technical Conference 2005 on USENIX Annual Technical Conference, Apr. 2005.

[2] 德纳里峰,又叫麦金利峰,是北美最高峰。想做北美最好的VMM


Labels:

Friday, March 14, 2008

读《Measuring CPU Overhead for I/O Processing in the Xen Virtual Machine Monitor》[1]

Measuring CPU Overhead for I/O Processing

in the Xen Virtual Machine Monitor[1]

该文主要在Xen的基础上,介绍了一个轻量级的监控系统,用于测量不同虚拟机的CPU利用率,包括在设备驱动域由I/O操作造成的CPU开销。这些性能研究的目的是针对一组I/O密集型负载量化这些开销并分析之。

传统的监控系统往往对调度程序分配给一个特定虚拟机的CPU时间进行报告。然而,这个方法也许并没有揭示有不同虚拟机引起的“事实上的”CPU利用情况,原因是I/O设备的虚拟化导致了一个这样的模型:数据传输操作涉及额外的系统部件,例如:虚拟机管理器和(或)设备驱动域,于是就有了这篇论文。

Domain0CPU时间可被分为两部分:处理共享同一设备驱动的虚拟机的I/O相关事件所花时间,和“管理”触发这些I/O事件的相应虚拟机所花时间。

作者做了两组关于网络和磁盘I/O的实验,主要是为了评估由Domain0中传输所导致的CPU使用情况。

首先是第一组与Web服务性能相关的实验,这组实验讲的较为详细。在guest domain(客户域)中运行Apache HTTP服务,同时运行发出客户请求的httperf测试工具。httperf以固定频率向服务器发出请求,以此来测量Web服务的请求吞吐率(request throughput)。测量过程中,线性增加httperf的请求速率,直至回复速率平稳且服务达到饱和。

实验使用了5中不同的工作负载,每种对应一个固定大小的文件:1KB10KB30KB50KB70KB。目的就是评估由这5种工作负载所引起的Domain0CPU开销。

每次传输的文件大小不同,瓶颈所在也会不同。1KB的文件大小时,文件多,CPU频繁操作,瓶颈在CPU;而70KB文件大小时,CPU操作随之减少,使瓶颈转移到网络I/O上。

其次是第二组与磁盘I/O传输相关的实验。测了不同文件大小情况下文件的传输时间、磁盘吞吐率、Domain0CPU利用率、内存页交换速率,并分别在两种情况下测了这些数据:虚拟机文件系统使用的是物理磁盘(”raw” disk),虚拟机文件系统作为一个文件系统挂载上去。(使用VMware workstation时,可以选择直接在物理机上安装虚拟机,或使用虚拟的文件系统安装虚拟机)

[1] L. Cherkasova and R. Gardner. Measuring CPU overhead for I/O processing in the Xen virtual machine monitor. In USENIX Annual Technical Conference, Apr 2005.

Labels:

Monday, March 10, 2008

Programs for Browsing Source Code

Source Insight: At most can be used for free for 1 month. What's more there is no coresponding version on Linux.

lxr[1]: A general purpose source code indexer and cross-referencer that provides web-based browsing of source code with links to the definition and usage of any identifier. Supports multiple languages.

hypersrc[2]: An open-source (GNU GPL) GUI program for browsing source code. It displays a list of sorted source code tags and a tree view of functions. You can click a tag to hyperlink to its line in a source code file. hypersrc uses Exuberant ctags which supports 33 programming languages though hypersrc additionally supports FORTH and M4.

Glimpse[3]: A very powerful indexing and query system that allows you to search through all your files very quickly. It can be used by individuals for their personal file systems as well as by organizations for large data collections. Glimpse is also the basis of WebGlimpse, which provides search for web sites, and it is the default search engine in Harvest.

vim+ctags/cscope: Hard to use.

[1] http://sourceforge.net/projects/lxr
[2] http://www.jimbrooks.org/web/hypersrc/hypersrc.php
[3]http://webglimpse.net/subfeatures/features.html

Labels: ,

external programs when programming using vim

ctags[1]:Ctags generates an index (or tag) file of language objects found in source files that allows these items to be quickly and easily located by a text editor or other utility. A tag signifies a language object for which an index entry is available (or, alternatively, the index entry created for that object).

cscope[2]:Cscope is a developer's tool for browsing source code.
* Allows searching code for:
* all references to a symbol
* global definitions
* functions called by a function
* functions calling a function
* text string
* regular expression pattern
* a file
* files including a file
* Curses based (text screen)
* An information database is generated for faster searches and later reference
* The fuzzy parser supports C, but is flexible enough to be useful for C++ and Java, and for use as a generalized 'grep database' (use it to browse large text documents!)
* Has a command line mode for inclusion in scripts or as a backend to a GUI/frontend
* Runs on all flavors of Unix, plus most monopoly-controlled operating systems.

[1] http://ctags.sourceforge.net/whatis.html
[2] http://cscope.sourceforge.net/

Labels: ,

Sunday, March 9, 2008

vim scripts

Place an script file in the directory where plugins are placed in the file system. Then it will automatically recognize & use the plugin.
Place the helpdoc in the directory where helpdocs are placed and run the command ":helptags .../doc" in which "..." stands for the path where your helpdocs are placed. Thus ":help ..." works.
project:Project management plugin.
taglist:Structural browsing of source codes.
cvsmenu:CVS integration

Labels: ,

Tuesday, March 4, 2008

text browsers:w3m, links & lynx

Text browsers have two advantages.
1. Fast. Because you needn't download images which consumes a large amount of time while you can still view images if you want. By the way, FireFox can also discard images by a simple setting.
2. Browse a web through another computer which may be conneted by an ssh connection. For example, in our univ. the connection to foreign website is usually slow and many even can't be accessed. Fortunately, unix-center provides some computer which registered users can use for free. Thus I can use remote text browsers through an ssh connection.
w3m is the default text browser of Ubuntu OSes.
links is the default text browser of Fedora Core OSes.
lynx is the default text browser of Solaris OSes.
The commands in w3m is similar to vi/vim. So it's more suitable for the one who have already been familiar with vi/vim.

Labels: ,

diff & colordiff

Something like windiff.exe. diff has the basic function. It can find the differences between two files. -p option can locate the function in a C/C++ file.
While colordiff is a perl script, which can improve the usage of diff:
1. colordiff file1 file2
2. diff file1 file2 | colordiff
The above two can both work.

Labels: , ,

Monday, March 3, 2008

vim folding settings

At first, I can't open foldings in a file as when it closed even after adding the two code as follow:
au BufWinLeave * mkview
au BufWinEnter * silent loadview
I guessed the settings must be recorded somewhere. Then I found there was a flash red before I closed a file but I couldn't get it clearly. I use the command "mkview" by accident. Thus found the hint:can't get into dir "~/.vim/view..." & there did wasn't the dir. After a mkdir of it I can record a file's folding information.

Labels: ,

vimrc

In Ubuntu OS, vimrc is in /etc/vimrc & in my home directory a file called .viminfo. At first I can't open the file into the line where I closed it as before. Then I scanned vimrc but found nothing exceptional. After some trying I found that when I use the prefix sudo I can enter a file at where I closed it. Thus I have seen that there must be something wrong with the authority of some file. Changed authority of vimrc to "cs cs", it doesn't work. At last I changed authority of .viminfo to "cs cs", succeed!

Labels: ,

scim hotkeys

Once I uninstalled the input-method SCIM & reinstalled it. But after that I can't input Chinese any more! I tried many times but it doesn't work. Because of this problem I even had the feeling that I couldn't use my Ubuntu. At last I found a web by accident & knowed that SCIM wouldn't set hotkeys by default & I didn't set neither. After a simple setting I have finally resolved this small by terrible problem!


后记:
今天又装SCIM,结果发现里面只有英文和一个什么raw什么什么的,没其它语言,后来发现安装时没装全,只是
yum install scim,这样好像只装了lib和scim两个。
接下来搜了一会儿没搜到到底应该装哪几个包,于是干脆
yum install scim*
嘿嘿,搞定了

Labels: ,

cvs

When several people or more develop a big program its indispensable.It synchronizes the project among developers.

Labels:

windiff.exe

windiff.exe compares two file and find the differences. It just in the Windows Operating system & very small & very convenient.

Labels: ,

an annoying thing

Recovering Windows make my blog draft missed:things in the world are not perfect & we must accept them especially something we feel hard to accept.

Labels:

About vs2005

errlook.exe in MS VS.NET 2005 is useful when a program tells a errno while a errstr is what you want.

MSDN & embedded browser:it calls IE in fact.

Labels: ,

Flash Disk safety

Flash Disk auto display off.
Configure regedit can take flash Disk with write protection.

Labels: ,

ssh -x/X

ssh -X
This option enables X11 forwarding.
ssh -x
While this option disables X11 forwarding.

Labels: ,

xmanager

Xmanager is a very powerful tool letting you connect to another computer.It can establish a Xwindow locally.

Labels: ,