2018年1月17日
摘要: 使用RDMA, 必然关系到内存区域(Memory Region)的注册问题。在本文中,我们将以mlx5 HCA卡为例回答如下几个问题: 1. 为什么需要注册内存区域? 首先,我们知道,由于DMA设备只访问物理内存地址,因此,DMA引擎需要主机系统内存的物理地址连续,这一点无可非议,因为如果物理地址不 阅读全文
posted @ 2018-01-17 10:24 vlhn 阅读(5809) 评论(0) 推荐(3) 编辑
  2017年12月26日
摘要: NVMe over PCIe最新的NVMe协议是1.3。 在7.2.1讲了Command Processing流程。有图有真相。 This section describes command submission and completion processing. Figure 251 shows 阅读全文
posted @ 2017-12-26 09:38 vlhn 阅读(4540) 评论(0) 推荐(0) 编辑
  2017年12月9日
摘要: Dissecting a Small InfiniBand Application Using the Verbs API Abstract | 摘要 InfiniBand is a switched fabric interconnect. The InfiniBand specification 阅读全文
posted @ 2017-12-09 10:20 vlhn 阅读(5208) 评论(0) 推荐(0) 编辑
  2017年12月7日
摘要: OFA定义了一组标准的Verbs,并提供了一个标准库libibvers。在用户态实现NVMe over RDMA的Host(i.e. Initiator)和Target, 少不了要跟OFA定义的Verbs打交道。但是,仅仅有libibverbs里的API是不够的,还需要对应的RDMA硬件的用户态驱动 阅读全文
posted @ 2017-12-07 09:02 vlhn 阅读(4952) 评论(0) 推荐(3) 编辑
  2017年12月6日
摘要: OFA定义了一组标准的Verbs,并在用户态提供了一个标准库libibverbs。例如将一个工作请求(WR)放置到发送队列的Verb API是ibv_post_send(), 但是在Linux内核,对应的API则是ib_post_send()。本文将使用Linux内核提供的mlx5卡(Mellano 阅读全文
posted @ 2017-12-06 16:59 vlhn 阅读(3544) 评论(0) 推荐(0) 编辑
  2017年12月5日
摘要: 在NVMe over PCIe中,I/O命令支持SGL(Scatter Gather List 分散聚合表)和PRP(Physical Region Page 物理(内存)区域页), 而管理命令只支持PRP;而在NVMe over Fabrics中,无论是管理命令还是I/O命令都只支持SGL。NVM 阅读全文
posted @ 2017-12-05 16:10 vlhn 阅读(8392) 评论(0) 推荐(1) 编辑
  2017年11月29日
摘要: 1. What is RDMA | 什么是RDMA RDMA is Remote Direct Memory Access which is a way of moving buffers between two applications across a network. RDMA differs 阅读全文
posted @ 2017-11-29 11:14 vlhn 阅读(3766) 评论(0) 推荐(0) 编辑
  2017年11月28日
摘要: 毫无疑问地,用来取代iSCSI/iSER(iSCSI Extensions for RDMA)技术的NVMe over Fabrics着实让RDMA又火了一把。在介绍NVMe over Fabrics之前,先科普一下RDMA。 1. DMA和RDMA的概念 1.1 什么是DMA? Direct Me 阅读全文
posted @ 2017-11-28 15:51 vlhn 阅读(13754) 评论(1) 推荐(5) 编辑
  2017年11月1日
摘要: UIO(Userspace I/O)是运行在用户空间的I/O技术。在Linux系统中,一般的设备驱动都是运行在内核空间,而在用户空间使用应用程序调用即可。而UIO则是将设备驱动的很少一部分运行在内核空间,而在用户空间实现驱动的绝大多数功能。那么,在内核空间UIO要做的事情就变得很简单,分为两种: 为 阅读全文
posted @ 2017-11-01 19:28 vlhn 阅读(5051) 评论(0) 推荐(1) 编辑
摘要: 在多核(SMP)多线程的情况下,如果不知道CPU乱序执行的话,将会是一场噩梦,因为无论怎么进行代码Review也不可能发现跟内存屏障(MB)相关的Bug。内存屏障分为两类: 跟编译有关的内存屏障: 告诉编译器,不要优化我,俺不需要 跟CPU有关的内存屏障: 告诉CPU, 不要乱序执行,谢谢 1. N 阅读全文
posted @ 2017-11-01 09:30 vlhn 阅读(3945) 评论(0) 推荐(0) 编辑