来自性能 POV 的 Tmpfs 与 NVME SSD

Pee*_*aha 5 performance ssd tmpfs

我有一个创建大型临时文件的脚本。

我倾向于使用tmpfs的这个,但是我做了tmpfs的性能快速搜索,发现其中报告速度约2GiB /秒。

现代 NVME SSD 具有相当的速度。撇开性能以外的差异(例如,通过不接触磁盘来延长 SSD 寿命,SSD 更大而 RAM 有限),与 SSD 相比,使用 tmpfs 是否有任何性能优势?

sho*_*hok 11

tmpfs,作为页面缓存的扩展,真正作为“透明”ramdisk 运行。这意味着它提供非常快的顺序读/写速度,但特别快的随机IOP(与存储设备相比)。

在带有普通内存的老化 Ryzen 1700 上收集的一些示例:

  • dd if=/dev/zero of=test.img bs=1M count=4096 显示 2.8 GB/s

  • dd if=/dev/zero of=test.img bs=1M count=4096 conv=notrunc,nocreat显示 3.5 GB/s覆盖刚刚分配的文件

  • fio --rw=randread(随机读取 IOPS)显示队列深度 1(单线程)工作负载为 492K iops,队列深度 8(8 线程)工作负载为 2.2M iops。这大大超过了任何基于 NVMe 闪存的磁盘(例如:Intel P4610)甚至基于 XPoint 的磁盘(例如:Intel Optane P4801X

为了获得可比的性能,您需要一组 NVMe 磁盘,或者更好的内存附加存储作为 NVDIMM。

简而言之:如果您可以忍受tmpfs易失性存储(即:如果断电,您将丢失任何写入的数据),则很难击败它(或一般的 ramdiss)。

但是,您询问了将文件写入tmpfs,这本身就是一个挑战:毕竟,写入 GB 大小的文件很容易占用您的可用内存大小(和预算)。


Joh*_*ald 8

您找到的一个数字不能代替测试。在您的硬件上运行您的工作负载并检查它是否令人满意。你是在做小的随机访问 I/O 还是整个文件?

是的,现代总线和互连意味着 DRAM 和 NVMe 都可以驱动 GB/s 级的顺序 I/O。DRAM 的某些读取比持久性固态存储快 10 到 100 倍也是事实。这对您是否重要取决于您的工作量。查看每个程序员应该知道延迟数的各种可视化,以了解数量级。

在确定性能之后,不应忽视操作方面的考虑。tmpfs 将在重新启动时消失。如果您的使用不能容忍没有耐用性,那很好,但通常这很烦人。是的,不写入 SSD 会减少它们的磨损。这是否重要取决于 - 您猜对了 - 您的工作量。