在做KVM模块热升级的过程中碰到了这个坑,通读代码时本来以为msr在vcpu load和vcpu exit中进行切换,便忽略了kvm_shared_msr_cpu_online,没想到它能直接重置了host,连投胎的过程都没有,直接没办法debug,还是要多亏这个问题在某种情况下不必现,chengwei才更快找到原因,顺便看了一下kvm_shared_msrs机制,理清楚了问...

问题不是出在upstream的版本上,而是内部开发的一个产品。在KVM这个系统里面,很多时候牵一发动全身,某些改动貌似是正确的,其实则不然,内核的其他模块也是类似的系统化,Jike说的“正是内核的开发门槛很高才保证了内核当前的质量”也是有道理的。 进入正题,产品要求VCPU进入guest之前需要等待响应,当存在响应的时候...

在SIMICS软件里面模拟最新的CPU进行虚拟化测试的时候,先把Dave的kernel patches拿到手,打补丁到v4.1-rc2上,每次启动qemu-kvm的时候,console上就打印了一堆信息,然后panic了,信息简略如下: [ 26.998321] general protection fault: 0000 [#1] SMP [ 27.000140] [<ffffffffa0517f6b>] hardware_enable+0x...

工作环境正式切换到ubuntu下,之前使用SLES进行开发和服务器版本,如此可以直接下载debuginfo的rpm(比如glibc debuginfo)进行调试,suse都是有对应链接提供好的,但当前切换的ubuntu下就找不到哪里有debug版本的deb下载,网上各种介绍手工编译,一个包还好,多个包就太麻烦了,正要感慨ubuntu不适合进行服务器开发,却...

问题终于处理清楚了,如此坑爹的问题,陆陆续续的搞了有近月的时间,现在有时间写一个过程与总结。 问题现象:进程H需要每隔10s发消息给M(类似watchdog的功能),否则就会有功能异常的告警,业务发现了异常的告警,恰好OS监控日志中记录下了进程H当时是D状态,持续了约20s就恢复过来了,然后就没有然后,啥日志也没有...

话说产品的大哥转过来一个定时器失效的问题,当时还以为是内核的定时器,到手一看,居然是产品代码中的一个自写的定时器没有生效,被告知是调用的系统接口,看着令人头痛的CPP代码,咨询之后才知道是ACE(Adaptive Communication Environment)框架,然后再次被人用小学学到的对比法把问题丢给了自己,苦命的搞了内核还...

内核SLES10SP3的老版本内核2.6.16.60-0.54.5也是使用了很长时间了,虽然之前也有一些bug,不过都是组内单个patch自己编译内核搞定问题的,虽然内核用的是SLES,但补丁却不是同步的,没办法,业务模式不同,卖出去的服务器又不能像windows一样,开个后门远程打补丁,只能慢慢积攒影响一般的补丁,最后搞一次大的,把内核...

产品的老大直接找到了我:他们对reiserfs的一个分区写文件数据时返回失败,返回值是28,既是No space left on device,直接到产品环境上一看,12TB的空间用了不到10GB,自己顿时头大了,我一直对“设计精妙,代码残废”的reiserfs心怀敬畏(首席设计人员中途溜号,后面全靠开发人员脑补的复杂工程真是灾难),恰好还有其他...

这两天忙着定位一个reiserfs文件系统的问题,事情确是很简单:产品的服务器在测试业务时直接将服务器暴力下电了,结果挂载的磁阵就悲剧了,业内所知受部门物料成本限制,实验室的环境都是拼凑的,很神奇的是这个磁阵的电池被拔掉了,再次上电的时候OS就很规律的7min oops一次,问题很快(内核panic)就送到了额们组。当...