04 2011存档
上周发现我的一个程序在测试并发压力时,在rhel4上性能不错但在rhel5上性能却下降很厉害,非常诡异。我们基本相信redhat不会有什么问题,那八成是我的kernel module写的有问题,于是我把module里对不同kernel版本的判断拿掉,再跑,还是性能低。这下要命了,如果是某些kernel module的接口变了,那查起来就费时间了。
还是史峰高超,他发现了随着并发的增加,性能会进保持在一个“高原”上,于是让我做个小实验:写一个程序,就调用ioctl故意触发module,多跑几个实例。这下问题明显了:这个测试程序,不管启动多少个实例,他们加起来耗费的CPU基本就是100%左右(甚至有时还低),问题明朗化了——看来ioctl八成有锁,多进程不能同时调用进去。
于是看kernel代码,原来从2.6.11开始,file_operations除了ioctl,还增加了一个接口——unlocked_ioctl(rhel5用的是2.6.18 kernel)。于是改我的module,原先实现ioctl接口,现在改为实现unlocked_ioctl,性能一下子上去了。感谢史峰!
性能问题解决了,但是还存有疑问,因为我发现rhel4(2.6.9 kernel)上的ioctl也是加了“大内核锁”的:
lock_kernel()
ops->ioctl()
unlock_kernel()
这太不公平了,rhel5上有lock_kernel,ioctl性能大降,rhel4u上也有lock_kernel,ioctl咋就性能还凑合呢?
查了ULK3,原来有个说法:大内核锁在2.6.11之前是一个高效的spinlock,而在此之后,由于大量的kernel代码都慢慢弃用大内核锁(比如改用unlocked_ioctl),大内核锁的实现就变为了可能引发睡眠的mutex(睡眠就睡眠呗,反正大内核锁现在处于“逐步弃用“的阶段,以后就没了),所以性能有退化。
上周做虚拟机的性能测试(主要测磁盘IO和网络),装了不少系统。总体感觉xen从console装rhel5还是很吃力的,因为它不支持....非得自己去改安装盘,或者改用图形界面安装,可惜我们的服务器都在千里之外,用X forward到本地那是非常的慢。
我们不仅测试了rhel,还测试了suse 11,还是这只变色龙更体贴,它认出了我们是console安装,自动启用了一个终端图形界面(就是ncurses做的那种),安装那个顺哪,是我上周最惬意的时刻。
但是在suse 11上装xen以后,针对虚拟机的bridge网络并没有自动配上(这是suse 11不如rhel 5的地方),需要手工运行:
/etc/xen/script/network-bridge
即可。
在suse 11上装上xen虚拟机,发现其它机器ping得通它,但是却ssh不上,八成是防火墙,于是service iptables stop,发现suse 11上没有这个服务,原来,它自己做了一个防火墙叫SuSEfirewall2,用
service SuSEfirewall2 stop
关掉了。
从一周多的测试看,KVM相比xen是更好的选择,尤其在一台实体机上启动多个虚拟机时,xen虚拟机的IO性能退化严重(哪怕是paravirt),而KVM就要好很多。
====== 2011.04.19 ======
由于chaos同学对我们的虚拟机性能测试结果存在怀疑,遂附上详细测试报表,在里面,我们测了
xen(hvm) xen(paravirt) kvm(rhel6 guest) kvm(rhel5u6 guest)四种组合,其中xen的host和guest都是rhel5u6。
报表里的seq read是sequence read的意思,ran read是random read的意思,详见fio
我们测read用的是:
fio -readonly -name iops -rw=[read/randread]
- runtime=200 -iodepth 1 -filename /dev/sda -ioengine libaio -direct=1
测write用的配置文件是:
[test]
rw=randwrite
size=800m
directory=/root/data
ioengine=libaio
direct=1
不知其他同学跟我测的结果是否有出入
周日我顺路,就想去社科院研究生院边上的“社科教育书店”(我承认名字很土,但里面的书很先进)转转,走到了才发现,书店没了,牌子还在,但里面在装修,一块“打字复印”的新店的牌子正准备挂上去。
折回的路上,我觉得很遗憾。遥想两年来从这里买了不少好书,老婆还劝我“多买一点,全当是支持一下“,我怕买多了看不完也是浪费,就没多买。没成想,一不留神,店没了。
后来,我很生气,我觉得百思不得其解——社科院的学生不需要看书吗?如果书店在学校,研究院边上都开不下去那他们还能在哪里开下去呢?为什么社科院外面的美发,饭馆,报刊厅甚至“章光101“生发水都能开下去,却独独容不下一个书店?我们就那么爱涂生发水吹新发型看时尚杂志外加大吃大喝但唯独不看书吗?
直到今天,我还没想明白,还是很生气,于是我打算去网上多买几本书,管他看不看得完,今天书店没了,明天说不定纸质书都没了。
可能有人要说,网上购书和电子书的流行慢慢会把所有小书店都挤垮这是历史趋势,但是我的朋友,请再想一想,速溶咖啡是历史趋势,那路边的咖啡店为何没被挤垮呢?有家庭影院的人那么多,电影院不也没关门吗?产品是不能代替服务的,网上购书也不能代替小小书店里那份宁静和充实。更别跟我说纸质书不环保电子书更低碳,现在很多人买个菜还开着自己的SUV乱转排着大团大团的废气,跟这点书相比,还是先劝有钱人别开车吧。