Maggie Blog

明哲而痴心

NVDIMM and acpi

QEMU QOM中 NVDIMM设备 系统发现和枚举NVDIMM设备流程 首先需要在ACPI namespace的 根节点 \SB下有 NVDIMM root device 该根设备的HID 为ACPI0012 (qemu中将该设备放在了SSDT中,不是DSDT中) ...

KSM

ksm 页面合并过程 开始扫描:从ksm_mm_head(mm_slot链表)中的头部开始扫描, 遍历整个链表 开始扫描的时候初始化一个“控制结构” ksm_scan,起始地址为0,ksm->rmap_list指向 mm_slot->rmap_list链表头部。 对于一个mm_slot:该结构是 ksm机制中回收对应的结构体, 该...

hugepage configuration

hugepages 查看大页内存配置 1 cat /sys/kernel/mm/transparent_hugepage/enabled always madvise: 避免改变内存占用 never 1 cat /proc/meminfo 启用大页 ...

linux memory management summary

linux内存管理总结 进程的地址空间分布 linux内存管理大图: RES 不下降到原来的值,原因 一个进程,malloc分配内存然后释放,使用top命令观察该进程的RES,没有下降,原因: 进程申请内存路径process -> Glibc -> kernel,Glibc的内存分配策略是ptmalloc kernel回收页面...

acpi summary

ACPI 术语: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 ASL : ACPI Source Language AML : ACPI Machine Language DSL : ...

vhost-user summary

vhost virtio e1000网卡:提供虚拟机与外界进行通信的能力。但是e1000网卡上也包含了复杂的io端口,寄存器,缓存配置,虚拟机每次收发包都会引起更多的io和mmio操作。 通过Virtio: 通过共享队列共享数据,减少IO,提高网络性能 采用virtio,需要从用户态(guest)到内核态(KVM),然后再进入用户态处理事件(qemu)。然后q...

virtio-pci-device summary

PCI设备 PCI配置空间 header-type=00h header-type=01h(pci-to-pci-bridge) PCI配置空间的访问方式 IO方式: CONFIG_ADDRESS=0xcf8, CONFIG_DATA=0xcfc,分别为地址和数据 ...

rust语言-条件编译

rust语言条件编译 rust中 所有的条件编译都由通过cfg配置实现,可以支持any、all、not等的任意组合和嵌套 1 2 #[cfg(any(not(unix), all(target_os="macos", target_arch = "powerpc")))] # fn foo() {} ​ cfg 也可以用在if-else语句中, 1 2 3 if ...

virtio-balloon分析

qemu-virtio balloon 数据结构 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 typedef struct VirtIOBalloon { VirtIODevice parent_obj; VirtQueue *ivq, *dvq, *svq; // 3个 virt queue //...