首页
简 悦
取消

使用 io_uring 进行 NVMe 命令的异步透传

2024/03/27 更新:USENIX FAST’24 上的论文 I/O Passthru: Upstreaming a flexible and efficient I/O Path in Linux 详细介绍了 NVMe 驱动的 passthru。 Linux 5.19 开始加入了 IORING_OP_URING_CMD 的支持,该 io_uring 命令可以理解为异步的 i...

FEMU 代码分析

FEMU 是 FAST’18 上的一篇 SSD 模拟器论文(The CASE of FEMU: Cheap, Accurate, Scalable and Extensible Flash Emulator),在 QEMU 模拟器上实现。FEMU 使用内存模拟后端存储。时延的模拟是通过等待真实的时间流逝到期望的时延。FEMU 代码开源,源码仓库为:GitHub - vtess/FEMU,位于...

Ceph 块存储 RBD 在 RDMA 网络下的部署

这里记录一下 Ceph 的块存储 RBD 使用 RDMA 网络(RoCE v2)的配置过程。主要参考的是 Ceph 的官方文档(然而并没有 RDMA 配置部分)以及 Bring Up Ceph RDMA。 集群配置 刚开始尝试使用 cephadm bootstrap 命令配置,但可能是因为 RDMA 网卡没有暴露给 docker 容器的原因,这种方式没有配置成功。于是选择了手动配置。 ...

Obsidian 笔记自动转换为 Jekyll 博客

前言 之前一直想搭一个博客,搭了几次但一篇文章没写过🙃,最近在使用了 Obsidian 作为自己的个人笔记后感觉一些笔记内容可以直接写到博客里,但是直接把 Obsidian 中的 md 文件作为 Jekyll 博客的博文还是会有一些问题,所以就想着写一个脚本能够自动地转换 md 文件并且能够自动部署。折腾了半天最终可以实现一键转换和部署,其执行流程如下: 在 Obsidian 笔记...

Linux 硬盘恢复

2023 年 1 月 4 日记录一下硬盘分区表损坏以及文件系统损坏的恢复过程(虽然没有成功恢复 )。 起因是因为某同学切换内核不知道是怎么操作的导致服务器不能连接。去机房发现对应的机器卡在了启动界面,进入 BIOS 发现无法识别到 NVMe SSD 盘。引导进入 U 盘的 Ubuntu Server Live,在 Help 中进入终端,发现系统能够识别到 NVMe SSD 盘 /dev/n...

GEM5 环境配置

VSCODE 环境配置 Python 环境 GEM 5 的 SimObject Python 定义都在 m5.objects 包下,但 python 文件组织却不是按照目录进行的,每个 SimObject 虽然都属于 m5.objects 包,但其对应的文件却各自位于对应 C++ 源代码目录下。GEM 5 本身使用了其他的技巧来使得这些分散的 python 文件都置于 m5.object...

DMA 介绍

Intro DMA 是一种加速设备访问主机内存的技术。有两种访问设备的方式:DMA 以及 PIO (Programmed I/O)。MMIO 以及 PMIO 都属于 PIO。在没有 DMA 的情况下,为了让设备访问主机内存,需要 CPU 中的寄存器进行中转,在写设备时先将数据读取到 CPU 的寄存器中,再将寄存器中的内容通过 MMIO 或者 PMIO 写入到设备中。设备读取内存与写类似。 ...

Model/Mode/Type of Intel Optane Persistent Memory

Overview Name Description Content Operating Mode This is the mode associated with Intel DC PMM 1. Memory Mode (MM, 2LM)2. App Direct (A...