要求:v6.10以及以上(建议:v6.12.16)
我的环境:Ubuntu 22.04.5 LTS(6.12.16)
注意:如果使用较低版本内核,内核的代码/数据(Kernel Code)可能会占用预留的空间。原因请见https://github.com/snu-csl/nvmevirt/issues/60#issuecomment-2687864955。
grub
启动选项修改 /etc/default/grub
文件中的 GRUB_CMDLINE_LINUX
。P.S. 多个选项间用空格隔开。
NVMeVirt是基于DRAM的仿真器,需要为它保留一定量的物理内存,保留的大小即存储设备的大小。
例如我的服务器有约160GiB的物理内存,假如选择仿真一个64GiB的闪存存储,则可以:
GRUB_CMDLINE_LINUX="memmap=79G\\\\\\$82G"
这里总共预留了79GiB的内存,因为有部分用户不可见的SLC区域。
P.S. 预留好后重启可以通过 sudo cat /proc/iomem
查看当前的连续内存分布,以验证是否预留成功。
为了避免NVMeVirt对应用的干扰,可以为dispatcher和I/O thread预留专用core:
GRUB_CMDLINE_LINUX="memmap=79G\\\\\\$82G isolcpus=7,8"
grub
并重启系统sudo update-grub
sudo reboot
git clone [email protected]:DingcuiYu/ConZone.gi