代码版本:linux-git v4.10.0-rc3 1.kvm clock时钟 [crayon-5d12175177f46928145921/] 1)KVM clock 在guest中: kvmclock_init负责在guest启动过程中初始化kvm clock,首先更新了两个MSR值: #define MSR_KVM_WALL_CLOCK_NEW 0x4b564d00 #define MSR_KVM_SYSTEM_TIME_NEW 0x4b564d01 然后为每个CPU分配struct...

一. epoll用户态使用规范 epoll有2种工作方式:LT和ET。 LT(level triggered,水平触发)是缺省的工作方式,并且同时支持block和no-block socket.在这种做法中,内核告诉你一个文件描述符是否就绪了,然后你可以对这个就绪的fd进行IO操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可...

KVM下steal_time源代码分析 代码版本:https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git branch v4.3 刚好有人在其他文章评论下问到steal_time机制,顺便看了一下,总结如下。 steal_time原意是指在虚拟化环境下,hypervisor窃取的vm中的时间,严格讲就是VCPU没有运行的时间。 在guest中执...

又碰到一个神奇的进程调度问题,在系统重启过程中,发现系统挂住了,过了30s后才重新复位,真正系统复位的原因是硬件看门狗重启的系统,而非原来正常的reboot流程。硬件狗记录的复位时间,将不喂狗的时间向前推30s分析串口记录日志,当时的日志就打印了一句话:“sched: RT throttling activated”。 从linux-3.0.101-0.7...

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

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