摘要: 一 基础概念 1 外部快照 当一个快照被创建时,创建时当前的状态保存在当前使用的磁盘文件中,即成为一个backing file。此时一个新的overlay被创建出来保存往后的数据。 2 backing file和overlay 对基础镜像做外部快照,生成的快照文件被称为overlay,基础镜像成为b 阅读全文
posted @ 2025-09-12 17:21 dogonthemoon 阅读(173) 评论(0) 推荐(0)
摘要: 内核的io系统错综复杂,跟踪io并不像用户态使用gdb那么简单,也没有一种万能的工具可以做到。针对不同的子系统,我们需要挑选不同的工具来跟踪io,以达到监控性能、诊断故障或者了解工作原理的目的。 一 性能监测 iostat 是最常用到的io性能监测工具,它可以实时报告读写速率、块大小、时延等重要信息 阅读全文
posted @ 2025-09-09 15:00 dogonthemoon 阅读(158) 评论(0) 推荐(0)
摘要: 1 块设备自身慢 本地存储自身慢。 远端存储的网络慢。 设备驱动问题。 2 块层慢 scheduler,nr_requests,read_ahead_kb等与io相关的内核参数配置不优。 与脏页落盘相关的内核参数配置不优。 bio限速。 3 vfs层慢 本地文件系统的格式化参数不优。 网络文件系统负 阅读全文
posted @ 2025-09-08 12:24 dogonthemoon 阅读(30) 评论(0) 推荐(0)
摘要: 一 同步/异步 io 同步io 调用如 read()、write() 等系统调用时,进程会阻塞,直到数据读写操作完成后才返回。 期间进程无法做其他事情,等待 I/O 完成。 简单易用,但在高并发或慢设备场景下可能导致性能瓶颈。 异步io 进程发起 I/O 请求后,系统立即返回,I/O 操作在后台进行 阅读全文
posted @ 2025-09-08 11:45 dogonthemoon 阅读(16) 评论(0) 推荐(0)
摘要: /proc/diskstats 记录了所有块设备(如磁盘、分区等)的io统计信息。 /sys/block/$disk/stat 记录了某个块设备的io统计信息。 /dev/mapper/* 列举了lvm设备的名称。 /dev/disk/* 是 udev 生成的块设备符号链接目录。它记录了系统中所有磁 阅读全文
posted @ 2025-09-08 10:31 dogonthemoon 阅读(15) 评论(0) 推荐(0)
摘要: qemu version: 4.1.0 一 qemu主线程 以存储类型virtio-blk为例,guest内部发起io请求,当qemu主线程轮询到了ioeventfd,调用aio_dispatch_handlers处理io。 aio_dispatch_handlers ... virtio_queu 阅读全文
posted @ 2025-09-04 19:22 dogonthemoon 阅读(27) 评论(0) 推荐(0)
摘要: qemu支持大量的设备仿真,例如网卡,usb,磁盘等。这些设备的配置容易让人困惑,下面的内容有助于理解它们。 一 前端 前端指的是设备如何呈现给guest的,也就是guest系统内部看到的设备类型。qemu通过命令行 -- device指定前端设备,执行接“ -- device help”的qemu 阅读全文
posted @ 2025-09-02 17:09 dogonthemoon 阅读(38) 评论(0) 推荐(0)
摘要: kernel version: 4.18 qemu version: 4.1.0 一 前言 1 eventfd是什么? eventfd可以用于线程或者父子进程间通信,内核通过eventfd也可以向用户空间进程发消息。其核心实现是在内核空间维护一个计数器,向用户空间暴露一个与之关联的匿名fd。不同线程 阅读全文
posted @ 2025-09-02 15:54 dogonthemoon 阅读(26) 评论(0) 推荐(0)