问题标签 [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.
.net - 在持久 RAM 上运行 .NET?
我在内存中有大量索引,可以在庞大的数据集中快速搜索。构建索引需要很长时间,而且将它们的快照从磁盘反序列化到内存也需要很长时间。他们用掉了很多珍贵/昂贵的内存。我确实尝试使用一种自定义搜索阅读器直接从磁盘使用索引,该搜索阅读器只是即时反序列化所需的位。这工作得非常好,但在多线程环境中确实存在一些关于锁、并发、版本控制等严重缺陷。当然,它并不是超快的。
无论如何,我想知道“持久性 RAM”(NVMe、Optane..?)是否可以帮助我。我不确定我是否完全理解它们应该如何使用,但它们似乎填补了 HDD/SSD 和 DDR-RAM 之间的空白?它们的成本低于 RAM,但比 SSD 快,并且持久。
所以我希望以某种方式直接在持久 RAM 上运行 .NET 程序,使用我的索引,而不必在重新启动之间来回将其序列化到 SSD。那将是梦想成真!
如果不将整个 .NET 程序放在持久性 RAM 中,也许还有其他方法可以从 .NET 与其交互?即使它只是写入和读取字节?
amazon-web-services - AWS NVME 重启后挂载到不同的目录
我正在尝试将几个卷安装到我的实例上,它们都是 NVME。我读到 NVME 卷不会保持它们的映射相同,每次随机给它们序列号。关键是我需要保持映射一致,它用于一个 db 和 1 个卷假设保留数据。现在,如果我重新启动实例,卷就会混淆,因此具有数据的卷可能会挂载到不同的目录,因此 db 服务启动并且找不到任何数据。
当然,它也会在创建图像之后发生,所以我无法配置 1 个实例并使用图像进行更多操作。
如何强制映射保持一致?还是停止使用 NVME?(我读到这个随机序列化只发生在 NVME 上)
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 是否有人有任何解决方案可以让我以编程方式识别卷并安装它们?
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 队列至少会保持与单队列性能相同的带宽。带宽减少有点违反直觉。减少的可能原因是什么?
谢谢你。
ceph - 如何在 Ceph(章鱼版)中添加 SPDK 后端 OSD?
我有一个 NVMe SSD,想将它用作 OSD 后端,但是当我想启用 SPDK(它可以作为块设备工作)时,我无法创建 OSD。
我做了以下事情:
启用 SPDK 构建 Ceph
我编辑 CMakeLists.txt 以确保编译 SPDK:
- 我通过 SPDK 脚本设置了我的 NVMe 设备,然后通过以下方式进行测试:
- 输出和测试结果看起来不错,但是当我尝试将 OSD 创建为Ceph docs时,我遇到了错误:
我尝试用序列号替换 PCIe-id 但输出是一样的,我做了一些其他尝试但都失败了......
我在Ceph 文档 » ceph-volume » 概述中找到了这个描述:
ceph-volume 被设计成一个模块化工具,因为我们预计人们将通过多种方式配置我们需要考虑的硬件设备。已经有两个:仍在使用且具有 GPT 分区(由 simple 处理)的遗留 ceph-disk 设备和 lvm。我们直接从用户空间管理 NVMe 设备的 SPDK 设备即将出现,LVM 将无法在那里工作,因为根本不涉及内核。
所以我想知道我应该怎么做,或者 Octopus() 不支持 SPDK?
这困扰了我好几天,任何帮助将不胜感激!
linux - 在 max_sectors_kb 处写入 IO
在 Linux(使用 5.9)上,如果我的 NVMe 磁盘有max_sectors_kb == 2048
but logical_block_size == 512
,那是否仍然意味着如果我提交 2048KB 的写入,那么...
- 如果驱动器的内核写入队列已饱和,整个操作将失败 (
nr_requests == 256
)
或者
- 整个 2048KB 写入将被写入并且永远不会小于 2048KB?
我正在使用 io_uring 和O_DIRECT
.
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 绑定?
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 设备完成队列条目的选项。
任何帮助深表感谢。
谢谢。
linux - PCIe 热复位与插槽复位
我正在研究 linux PCIe 和 NVMe 驱动程序。我在 pci 驱动程序中遇到了一个函数pci_reset_bus(),它通过插槽或总线执行 pci 重置。我知道通过总线重置是 PCIe 规范中定义的“PCIe 热重置”。但我不确定什么是 pci 插槽重置(由__pci_reset_slot()实现)。
谁能帮我理解这一点?我也可以使用这个导出的符号,即pci_reset_bus()来进行 pci 热复位吗?我想在我的自定义 NVMe 驱动程序中使用它。