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

kernel源代码版本:git-v3.16.39 1.初始化 e1000_init_module下pci_register_driver注册驱动, [crayon-5df19ca07dc76648249431/] 在e1000_probe下,e1000_is_need_ioport为真时,执行 [crayon-5df19ca07dc7e495488715/] 这两个ops如下: [crayon-5df19ca07dc81622251198/] 二,网络设备打开 e1000_open是属于e...

代码版本:linux-git v4.10.0-rc3 1.kvm clock时钟 [crayon-5df19ca07e4c2975377220/] 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操作。如果你不作任何操作,内核还是会继续通知你的,所以,这种模式编程出错误可...

代码版本linux-3.16.37-git, qemu-v2.8-git 因为eventfd要与epoll配合使用,不清楚epoll的请参考epoll的linux内核工作机制。 一. Eventfd在QEMU下的使用 Eventfd在QEMU下的使用以这三个函数为基础:event_notifier_init和event_notifier_get_fd,以及event_notifier_set_handler。 在event_notifier_init中,初始化E...

源代码:linux-3.16.37-git, qemu-v2.7 1.vm启动时qemu的代码 virtio block的qemu cmd: [crayon-5df19ca08007a908540044/] qemu中virtio blk代码所在的重点文件如下: hw\virtio\virtio.c hw\virtio\virtio-bus.c hw\virtio\virtio-rng.c hw\block\virtio-blk.c hw\net\virtio-net.c 在type_ini...

ext2在设计之初的时候就是通过链表的方式管理目录下的文件项目,ext3,ext4也是直接继承过来了,但随着单个目录下管理的文件越来越多到几十万个,线性的链表查找文件,创建文件(先要查找同名文件)越来越慢,时间复杂的达到了O(n)的级别,尤其对于当前云存储大数据等概念,读写速度是不能接受的。 为了能快速...

Jprobe在之前经常使用用来对内核流程中的函数挂钩子,劫持相关参数,进行debug调试分析。 但在内核调试中经常碰到需要监视的模块数据,而这些数据往往在很多函数中修改,需要程序员人工从大量的内核代码中过滤出这些函数,使用jprobe就需要监控每个函数的入口,涉及的内容比较复杂,而且很多时候的函数符号并没有导出,...

经常我们碰到一些问题,进程的写文件,写入的速度非常慢,而且当时总的IO的数量(BI,BO)也非常低,但是vmstat显示的iowait却非常高,就是下图中的wa选项。 man vmstat手册如下解释: wa: Time spent waiting for IO. Prior to Linux 2.5.41, included in idle. CPU花费到IO等待上的时间,也就是说进程的io被CPU调...

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