问题标签 [nvme]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
54 浏览

.net - 在持久 RAM 上运行 .NET?

我在内存中有大量索引,可以在庞大的数据集中快速搜索。构建索引需要很长时间,而且将它们的快照从磁盘反序列化到内存也需要很长时间。他们用掉了很多珍贵/昂贵的内存。我确实尝试使用一种自定义搜索阅读器直接从磁盘使用索引,该搜索阅读器只是即时反序列化所需的位。这工作得非常好,但在多线程环境中确实存在一些关于锁、并发、版本控制等严重缺陷。当然,它并不是超快的。

无论如何,我想知道“持久性 RAM”(NVMe、Optane..?)是否可以帮助我。我不确定我是否完全理解它们应该如何使用,但它们似乎填补了 HDD/SSD 和 DDR-RAM 之间的空白?它们的成本低于 RAM,但比 SSD 快,并且持久。

所以我希望以某种方式直接在持久 RAM 上运行 .NET 程序,使用我的索引,而不必在重新启动之间来回将其序列化到 SSD。那将是梦想成真!

如果不将整个 .NET 程序放在持久性 RAM 中,也许还有其他方法可以从 .NET 与其交互?即使它只是写入和读取字节?

0 投票
1 回答
959 浏览

linux - 如何在 KVM-QEMU 中创建具有 4K 扇区大小的 NVMe

出于测试目的,我正在创建一个虚拟机,如下所示:

在机器内部启动时,我使用 fdisk 和 nvme-cli 检查扇区大小,但始终是 512B。

输出:

使用 nvme-cli 寻找可用的扇区大小模式(有关 NVMe 的详细信息,请参见此处此处)

返回输出:

这表明只有一个扇区配置文件退出。为了比较,为我的物理 NVMe 发出的相同命令的输出返回

任何帮助将不胜感激!

0 投票
1 回答
546 浏览

amazon-web-services - AWS NVME 重启后挂载到不同的目录

我正在尝试将几个卷安装到我的实例上,它们都是 NVME。我读到 NVME 卷不会保持它们的映射相同,每次随机给它们序列号。关键是我需要保持映射一致,它用于一个 db 和 1 个卷假设保留数据。现在,如果我重新启动实例,卷就会混淆,因此具有数据的卷可能会挂载到不同的目录,因此 db 服务启动并且找不到任何数据。

当然,它也会在创建图像之后发生,所以我无法配置 1 个实例并使用图像进行更多操作。

如何强制映射保持一致?还是停止使用 NVME?(我读到这个随机序列化只发生在 NVME 上)

0 投票
1 回答
498 浏览

amazon-web-services - 多个 nvme 的 AWS Terraform 自动化

我需要在 AWS 中使用 c5 实例类型,发现这破坏了我的 terraform 自动化。与每个引导序列在/dev下提供一致设备名称的 t2 实例不同。

在 ec2 实例上创建准确的/dev/xvd(x)设备。易于自动化。

但是,在使用多个(设备)的 c5 实例上,terraform /dev/xvd(x)设备会转换为/dev/nvme(x) ,并且在主机重启之间不一致。就我而言,我有多个卷,我正在尝试挂载。

从服务器端,我看不到任何可用于自动化的东西:

Terraform 代码(用于一卷资源):

用户数据脚本(用于一个卷资源):

使用 Terraform 是否有人有任何解决方案可以让我以编程方式识别卷并安装它们?

0 投票
1 回答
111 浏览

operating-system - 增加 I/O 队列数时 NVMe SSD 的带宽会降低

据我从所有有关 NVMe SSD 的相关文章中了解到,NVMe SSD 的好处之一是多队列。利用多个 NVMe I/O 队列,可以极大地利用 NVMe 带宽。然而,我从自己的实验中发现的并不同意这一点。

我想从 NVMe SSD 进行并行 4k 粒度顺序读取。我正在使用三星 970 EVO Plus 250GB。我使用 FIO 对 SSD 进行基准测试。我使用的命令是:

下面是我测试 1/2/4 并行顺序读取的结果:

numjobs=1:1008.7MB/s

numjobs=2:927 MB/s

numjobs=4:580 MB/s

即使不会增加带宽,我预计增加 I/O 队列至少会保持与单队列性能相同的带宽。带宽减少有点违反直觉。减少的可能原因是什么?

谢谢你。

0 投票
0 回答
486 浏览

ceph - 如何在 Ceph(章鱼版)中添加 SPDK 后端 OSD?

我有一个 NVMe SSD,想将它用作 OSD 后端,但是当我想启用 SPDK(它可以作为块设备工作)时,我无法创建 OSD。

我做了以下事情:

  1. 启用 SPDK 构建 Ceph

    我编辑 CMakeLists.txt 以确保编译 SPDK:

  1. 我通过 SPDK 脚本设置了我的 NVMe 设备,然后通过以下方式进行测试:
  1. 输出和测试结果看起来不错,但是当我尝试将 OSD 创建为Ceph docs时,我遇到了错误:

我尝试用序列号替换 PCIe-id 但输出是一样的,我做了一些其他尝试但都失败了......

我在Ceph 文档 » ceph-volume » 概述中找到了这个描述:

ceph-volume 被设计成一个模块化工具,因为我们预计人们将通过多种方式配置我们需要考虑的硬件设备。已经有两个:仍在使用且具有 GPT 分区(由 simple 处理)的遗留 ceph-disk 设备和 lvm。我们直接从用户空间管理 NVMe 设备的 SPDK 设备即将出现,LVM 将无法在那里工作,因为根本不涉及内核。

所以我想知道我应该怎么做,或者 Octopus() 不支持 SPDK?

这困扰了我好几天,任何帮助将不胜感激!

0 投票
1 回答
116 浏览

linux - 在 max_sectors_kb 处写入 IO

在 Linux(使用 5.9)上,如果我的 NVMe 磁盘有max_sectors_kb == 2048but logical_block_size == 512,那是否仍然意味着如果我提交 2048KB 的写入,那么...

  1. 如果驱动器的内核写入队列已饱和,整个操作将失败 ( nr_requests == 256)

或者

  1. 整个 2048KB 写入将被写入并且永远不会小于 2048KB?

我正在使用 io_uring 和O_DIRECT.

0 投票
4 回答
1651 浏览

virtualization - 如何使用三星 PM1733/1735 NVMe SSD 设置 SR-IOV

三星 PM1733/1735 NVMe SSD 声明支持 SR-IOV。我希望用 PM1735 SSD 搭建一个 NVMe SR-IOV 环境。我的 SSD 的开发描述是 /dev/nvme1。

但是,我尝试使用 echo 4 > /sys/class/nvme/nvme1/device/sriov_numvfs.

dmesg 信息包含

可以lspci | grep Non发现

是否正确创建了 VF?

另一个问题是如何将命名空间与 VF 绑定。我曾经nvme-cli从 中创建命名空间/dev/nvme,但是如何将这些命名空间与 VF 绑定?

0 投票
1 回答
156 浏览

linux-device-driver - 我们有办法通过 nvmecli 读取 NVMe 驱动程序的完成队列条目吗?

我们有办法使用 nvme cli 读取 NVMe 设备的完成队列条目吗?

以下是使用 nvme cli 版本 1.6 和 1.9 shell 完成的步骤> sudo nvme id-ctrl /dev/nvme0 ... ... 这会根据要求提供所选设备的 nvme 识别 ctrl 信息。

从 nvmecli 命令行选项中,没有找到用于读取最后发布的 nvme 命令的 nvme 设备完成队列条目的选项。

任何帮助深表感谢。

谢谢。

0 投票
1 回答
212 浏览

linux - PCIe 热复位与插槽复位

我正在研究 linux PCIe 和 NVMe 驱动程序。我在 pci 驱动程序中遇到了一个函数pci_reset_bus(),它通过插槽或总线执行 pci 重置。我知道通过总线重置是 PCIe 规范中定义的“PCIe 热重置”。但我不确定什么是 pci 插槽重置(由__pci_reset_slot()实现)。

谁能帮我理解这一点?我也可以使用这个导出的符号,即pci_reset_bus()来进行 pci 热复位吗?我想在我的自定义 NVMe 驱动程序中使用它。