- 博客(38)
- 问答 (1)
- 收藏
- 关注
原创 把kvm变成真正的内核态虚拟机
不过,要实现一个真正的内核态虚机,远非模拟外设这么简单,下面我会一一列举其中的关键点。源码目前在devel分支上,分支做过一次重做,所以部分日期并不准确;整个开发过程利用工作间隙,从24年10月开始,到26年年初停止;项目的初衷是想要开发一种基于vmcall机制的guest 文件系统,这里可以参考commit列表中kvmfs的部分,例如其中第一条实现了一个基于vmcall的rpc机制,后来基于vmcall机制,又做了一个console,
2026-02-10 14:44:12
758
原创 Intel APIC Virtualization 机制梳理
可以看到中断处理过程中,核心卡点是VPPR,它决定了RVI是否可以触发后续中断处理,所以,凡是会修改到VPPR的,都会触发Evaluation of Pending Virtual Interrupts,也就是以上步骤1到步骤4,并决定后续的步骤5和步骤7的Virtual-interrupt delivery能否进行;对于MMIO和MSR两种访问方式,上文中提到的特殊处理,取决于APIC-register virtualization和Virtual-interrupt delivery这两个配置,
2025-12-18 17:14:29
562
原创 nohz_full与isolcpus可以确保cpu上无任何活动吗?
在之前的分析文章中,我们列举了nohz_full与isolcpus的区别,其关键是其实几个flag,确保相关活动仅在housekeeping cpu进行,mce_timer_fn()这里使用的TIMER_PINNED,该timer必然是本cpu的,该timer间隔较长,不影响观察效果,所以,没有做消除。smp_call_function机制,通过ipi机制,在对应cpu的中断上下文执行一个函数,并通过spin的方式等待其完成,对mlx5驱动做以下修改,让其comp eq遵循housekeeping机制,
2025-12-17 15:39:16
729
原创 Linux Kernel PCIe SRIOV机制分析
参考《Single Root I/O Virtualization and Sharing Specification Revision 1.1》,本质上,SRIOV提供了一种在硬件层面实现的资源共享方式;与在主机上通过软件方式实现资源共享不同,的实现方式对于主机的资源消耗更低,尤其是CPU资源。
2025-12-02 17:47:19
939
原创 Linux KVM mmio模拟流程详解
接下来,当handle_ept_violation()执行完之后,guest会重新执行原指令,然后再读触发vm exit,此时会进入handle_ept_misconfig()处理,参考上面的handle_ept_misconfig()的代码片段,我们可以看到kvm_skip_emulated_instruction(),它就是用越过触发vm-exit指令的函数,从kvm_io_bus_read()就可以到用到我们通过kvm_io_bus_register_dev()注册的回调函数了。
2025-11-18 13:56:47
830
原创 qemu/kvm + netperf性能调优实践
no vhostvhost12814.1514422.4819442.0425421.7926221.9940718.8341420.2N/A12.55%34.80%30.76%3.15%55.29%1.72%lazy tscdeadline和vhost no notify都是每分钟几百万次的vm-exit的减少,但是对性能的影响非常小;halt polling和vhost polling的提升作用非常明显,进程上下文切换是依然是影响性能的第一因素;
2025-11-05 20:27:38
826
3
原创 Kernel FPU save/restore机制详解
在深入FPU上下文切换之前,我们首先要知道,内核并不能隐式的使用FPU,换句话说,绝大多数内核代码都不能会使用FPU,个别需要使用的需要显式的调用kernel_fpu_begin()/kernel_fpu_end(),例如raid6和crypto;总结起来就是,在引入了XSAVEOPT指令之后,FPU save/restore完全由硬件完成,效率很高,同时,Lazy FPU Restore机制有安全隐患,所以,换成Eger FPU restore。KVM中是如何处理FPU的呢?
2025-10-16 19:42:27
1094
原创 Housekeeping机制简单分析
让housekeeping cpu运行非housekeeping cpu的task tick,而且每1秒运行一次;,选择idle load balance cpu时,只选择housekeeping cpu。,只有housekeeping cpu在进入idle时,会尝试做load balance。,unbound work仅会运行在housekeeping cpu上。,kthread仅会运行到housekeeping cpu上,,让timer安装到housekeeping cpu上,
2025-09-15 13:15:11
390
原创 xfs inode cluster lock order导致的死锁
xfs出现死锁后,成功获得了vmcore,经过分析之后,发现是xfs_buf的lock order问题。它在等的xfs_buf是ff3321c0f1279080,再用同样的方法追踪55547的调用栈,,就会回到63047,所以,问题的原因应该是它们两个之间的问题,拿到vmcore之后,我们可以进一步分析hung task的现场,在大量的hung task调用栈中,这个调用栈比较典型,那么问题的原因就是,xfs_link()函数中形成了一个在两个xfs_buf之间的ABBA型的死锁;
2025-09-08 17:46:20
464
原创 QEMU/KVM Device Passthrough详解
本文主要探讨了Qemu/KVM中PCI设备直通的技术实现,重点分析了Virtio协议、IOMMU机制和VFIO框架。文章首先介绍了PCI设备的枚举和配置过程,包括config space访问机制。在IOMMU部分,深入讲解了Intel VT-d技术的实现,包括地址转换、中断重映射和中断投递机制。最后,文章详细解析了VFIO框架的工作原理,包括driver override、container/group概念以及内存映射机制,并说明了Qemu如何通过这些技术实现设备直
2025-08-20 11:42:18
2211
原创 NFS writeback流程中的GFP_NOFS
当然,在实践中,我们使用cgroup v1,cgroup在mem和blkio两棵树种也是一一对应的,所以,可以在内核中做一些修改,完成两者的绑定,进而让cgroup v1也具备cgroup writback的能力。当shrink_page_list()通过PageReclaim标记,发现所有的page已经被轮了一圈, 就会认为脏页太多,且存储设备跟不上了,为了避免OOM,就让任务在这等一下writeback完成,进而减缓dirty page的速度。然而,同一年,又出现另外一个commit,
2025-03-13 20:45:20
935
原创 AMD-Vi completion-wait loop timed out
为啥机器上会有soft lockup,而且还一直在一个CPU上soft lockup。
2024-12-11 19:08:04
987
原创 3.10 内核 BUG_ON() at xfs_vm_writepage() -> page_buffers()
这个问题发生在3.10.0-514.el7上,并且在RHEL的知识库中快速找到了对应的案例以及解决方案,但是,理解问题如何发生和解决则着实费了些功夫。})
2024-11-27 16:21:11
1122
原创 QEMU Live-Migration Demo
我在测试的时候,其中一台作为nfs server,另外一台作为nfs client;我们来做一个简单的迁移demo,两台机器的环境都是Centos7,虚拟化组件都是系统默认;在迁移的两台机器上,创建相同的目录,例如:/media/nfs,然后分别进行挂载;所以,使用virsh edit加入了cache=none。
2023-11-07 19:50:26
610
原创 /proc/xxx从哪来?
在/proc目录下,除了/proc/sys、/proc/meminfo、/proc/slabinfo等系统级信息之外,系统中所有的存在的进程都会在这个目录下存在一个目录,而里面则有大量的进程级的信息;这些文件和目录都是什么时候创建的呢?
2022-09-29 15:50:28
283
原创 Exploring High Bandwidth Filesystems on LargeSystems
文章连接为https://www.kernel.org/doc/ols/2006/ols2006v1-pages-177-192.pdf这篇paper来自2006年(mainline 2.6),意在评估(自夸)XFS在性能上限。目录1 背景与目标2 测试方法3 测试结果4 负面因素及改进方案4.1 Spinlock in Hot Paths4.2 File Fragmentation4.2.1 Ext3的问题4.2.2 XFS的优化4.3 kswapd &...
2022-04-26 16:24:35
330
Intel Virtualization Technology for Directed I/O
2023-04-11
Virtualization Overhead of Multithreading in X86 State of the Ar
2023-01-06
Intel 64&IA-32 Architectures Software Developer’s Manual 3ABCD
2022-12-06
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅