内核版本与运行环境

要求: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. 多个选项间用空格隔开。

1、修改内容1 - 保留物理内存

NVMeVirt是基于DRAM的仿真器,需要为它保留一定量的物理内存,保留的大小即存储设备的大小。

例如我的服务器有约160GiB的物理内存,假如选择仿真一个64GiB的闪存存储,则可以:

GRUB_CMDLINE_LINUX="memmap=79G\\\\\\$82G"

这里总共预留了79GiB的内存,因为有部分用户不可见的SLC区域。

P.S. 预留好后重启可以通过 sudo cat /proc/iomem 查看当前的连续内存分布,以验证是否预留成功。

2、修改内容2[可选] - 为NVMeVirt的dispatcher和I/O thread预留专用core

为了避免NVMeVirt对应用的干扰,可以为dispatcher和I/O thread预留专用core:

GRUB_CMDLINE_LINUX="memmap=79G\\\\\\$82G isolcpus=7,8"

3、更新 grub 并重启系统

sudo update-grub
sudo reboot

下载源码

git clone [email protected]:DingcuiYu/ConZone.gi

编译