项目发布后,处于短暂休息期,老大去北京出差,周三才回来。之后又要开始新一轮的项目规划。本来打算这两天写点自己的代码,但是吧,貌似我要做的事情,在公司不太方便,哎,想想,还是乖乖地整点公司的事情。
下午主要是把我的开发机环境clean 了下,之前编了太多版本的kernel,导致很多版本,我自己都不知道是加了哪些patch的。现在已经同步到线上的版本了,由于有段时间没编kernel了,命令都生疏了,特整理下来,以方便后面查询。
编译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值。
今天初步试验了下,由于还要赶回家写自己的代码,暂时写到这。等确定方案了,在详细讲解。