在做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注册驱动,
static struct pci_driver e1000_driver = {
.probe = e1000_probe,
.remove = e1000_remove,
.shutdown = e1000_shutdown,
};
在e1000_probe下,e1000_is_need_ioport为真时,执行
//PCI 6个bar空间...
代码版本:linux-git v4.10.0-rc3
1.kvm clock时钟
struct pvclock_vcpu_time_info {
u32 version;
u32 pad0;
//guest的TSC时间戳,在kvm_guest_time_update中会被更新
u64 tsc_timestamp;
//guest的墙上时间(1970年距今的绝对日期),和上者在一起更新
//system_time = kernel_ns + v->k...
一. 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:
x86_64-softmmu/qemu-system-x86_64 -enable-kvm -cpu host -m 256 -smp 1 -drive file=~/vm/centos6-virtio.qcow2,if=none,id=drive-virtio-disk,format=qcow2 -device virtio-blk-pci,bus=pci.0,drive=drive-virtio-disk,id=...
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就恢复过来了,然后就没有然后,啥日志也没有...