Aiur

zellux 的博客

Xen 警告 Time went backwards 的暴力解决方法

前几天给测试Xen用的虚拟机挂了,只能用VMware的snapshot返回到之前的镜像,然后似乎因为时间问题启动Xen的时候总是会定时打印出类似 571 Timer ISR/0: Time went backwards: delta=-11072481 delta_cpu=298927519 shadow=196807680595 off=288495093 processed=197107247546 cpu_processed=196797247546 572 0: 196797247546 573 1: 197107247546 的信息,google了下发现是时间同步的问题,用ntp协议同步时间即可解决这个问题。另外这里再给出一个最暴力的解决方法:在linux-xen源码的arch/i386/kernel/time-xen.c文件中找到Time went backwards,把这行打印语句以及后面的循环打印删除,然后重新编译内核。x86_64体系结构也是修改这个文件。方法很暴力,也没真正解决问题,但是至少不影响我看/var/log/messages的输出了。 阅读全文 →

利用 VMware 的虚拟串口调试 Xen

VMware支持虚拟串口设备,对于调试内核或者虚拟机的帮助很大,具体设置如下(VMware Server 2, Xen 3.3): VMware中为虚拟机增加串口设备 Add Hardware->Serial Port,然后在设置中将Connection模式设为File,指定相应的文件路径(如[standard] debian-xen/serial-port.log) 修改虚拟机的grub启动参数,以我的/boot/menu/lst为例 title Xen 3.3.0 / Debian GNU/Linux, kernel 2.6.18.8-xen root (hd0,0) kernel /boot/xen-3.3.0.gz com1=115200,8n1 loglvl=all guest_loglvl=all console_to_ring console=com1,vga sync_console module /boot/vmlinuz-2.6.18.8-xen root=/dev/sda1 ro console=tty0 savedefault 重启虚拟机,即可在之前指定的文件中(Host机上的/opt/vmware/Virtual Machines/debian-xen/serial-port.log)中看到虚拟机的输出信息了。 阅读全文 →

Xen VCPU 笔记

绑定vcpu和cpu xm vcpu-pin 为domainU设置vcpu数 xm vcpu-set 注意这里的vcpu-id不能超过domainU配置中的vcpu数 xen中的不同domain的vcpu是独立的,或者说domain0的vcpu0和domainU的vcpu0不是同一个。在这个问题上犯过错,以至于设计接口语义的时候出问题了。 阅读全文 →

Xen DomainU自动测试脚本

写完代码测试时重复的最多的步骤就是 编译,复制vmlinuz和xen.gz 重启VMware虚拟机 启动domainU xm create domU.conf 4. 开一个screen窗口attach到domainU的console xm console #domid 5. 在domainU中运行测试程序 于是写了个自动执行3 4 5的脚步,主要用到了熊熊推荐的pexpect,这东东很赞啊 为了提高用户体验,读取domainU的启动信息时我采用的方法是读一行输出一行,读到结尾登陆字符时通过超时设置退出循环,这样可能效率比较低,不过测试脚本也不care这个了 实际使用时碰到了另一个问题,domainU执行完自动命令后命令行会出现很严重的对齐问题,最后发现登陆后运行一次reset就可以了。 脚本如下 #!/usr/bin/python # Automatic test script for Xen DomainU # Author: zellux import pexpect, os conf = { 'login_name' : 'm2-vm2', 'domainU_name' : 'R900-DomU0', 'domainU_conf' : '/home/wyx/domU1', 'domainU_id' : '2', 'domainU_user' : 'wyx', 'domainU_passwd' : 'wyx', } # Command to be executed after domainU starts cmd = """ cd m2 cd reg_test . 阅读全文 →

VMware上能跑起来的Linux Kernel配置

在默认的基础上,把这几个都改成built-in (*),通过Xen启动时就不需要额外加载initrd了 2010.1.19更新:支持网络 Device Drivers SCSI device support ---> <*> SCSI disk support <*> SCSI generic support SCSI low-level drivers ---> [*] LSI Logic New Generation RAID Device Drivers <*> Serial ATA (SATA) support <*> Intel PIIX/ICH SATA support Fusion MPT device support ---> <*> Fusion MPT ScsiHost drivers for SPI <*> Fusion MPT ScsiHost drivers for FC <*> Fusion MPT ScsiHost drivers for SAS (128) Maximum number of scatter gather entries (16 - 128) <*> Fusion MPT misc device (ioctl) driver <*> Fusion MPT LAN driver Network device support ---> Ethernet (10 or 100Mbit) ---> [*] EISA, VLB, PCI and on board controllers <*> AMD PCnet32 PCI support 阅读全文 →

Xen 学习笔记 2009-02-19

今天下午真是惊悚,我想把机房的winxp分区删了,ftp上好放点美剧,结果winxp的那个分区是扩展分区,删掉后导致linux的几个分区都消失了。赶紧把硬盘拆下来装到实验室用Disk Genius修复了下,数据基本没什么损坏,分区表还是有点问题。差一点俺就见不到这个博客了 =_= 然后把昨天折腾了一晚上没搞定的debian 4安装搞定了,关键在于netinst.iso的版本号要和hd-media的完全一致,4.0r7。 编译xen/linux所需的包 apt-get install gettext zlib1g-dev python-dev libncurses-dev libssl-dev libx11-dev bridge-utils iproute gawk 另外 initrd文件的生成需要安装initrd-tools包 kernel中memory barrier的实现很简单,barrier宏展开后就是 asm volatile(“” : : : “memory”) 这样就保证了在barrier()执行后,cpu不会直接读取寄存器中cache的内存值。 生成initrd mkinitramfs -o /boot/initrd-2.6.18.8-xen.img 2.6.18.8-xen syscall和m2_fastcall的性能测试 测的是getpid()函数,当然为了保证m2_fastcall不在运行逻辑上吃亏,它的对应功能仅仅是返回current->pid,第一次测出来的结果是syscall明显由于m2_fastcall。宋大牛指出很有可能是glibc做了缓存,果然,自己用汇编发软中断后的数据就正常了。 阅读全文 →