问题标签 [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.
infiniband - NVMoF:如何从响应胶囊中区分命令胶囊
假设我在 2 个节点 A 和 B 之间有 RoCEv2 流量。
- A 使用 RDMA_SEND 向 B 发送命令胶囊。
- 然后 A 从 B 接收一个胶囊(B 也使用 RDMA_SEND)。此时,A 怎么知道这是对其在步骤#1 中发送的命令的响应,还是来自 B 的新命令包?您知道,命令和响应之间的解码将完全不同。
谢谢。
c - OPAL-SED 库 ioctl 用法?
我正在尝试使用 linux-kernel 4.11 中添加的 sed-opal 库
为此,我编写了一个这样的基本程序:
当我想使用上面代码中提到的 sed-opal 库 ioctl 命令时,问题就来了。
这是发送安全 SEND/RECV 命令的正确方法吗?
如果是,错误的可能原因是什么?
任何帮助表示赞赏。:)
谢谢。
==================================================== ====
c - 如何让多个线程在 C 中的同一个 for 循环上工作,而循环又调用一个函数
此代码是 nvme-cli 的一部分(它建立在 linux api 上)
我正在尝试构建一个选项来重复 nvme-command 说线程数的n
时间。p
例如,如果我说用 5 个线程重复 50 次,那么 5 个线程中的每一个都应该单独重复 10 次。
因此,为此,我需要使用多个线程运行以下 for 循环。由于我是多线程的新手,所以我想到了使用 P 线程。我可以知道这样做的语法吗?
c - 我可以使用 pthreads 为具有不同线程的 nvme 调用 ioctl()(系统调用)吗
我正在为 nvme-cli 开发一个测试工具(用 c 编写并且可以在 linux 上运行)。
我有兴趣使用 't' 线程数重复 nvme 命令 'r' 次数。
下面的代码执行命令的重复以及线程,但这里的问题是并行执行时间与串行执行相比非常高。
根据我的观察,原因是ioctl()
从
err = nvme_identify(fd, 0, 1, data);
即nvme_identify()
轮流调用中调用系统调用ioctl()
。
那么我可以知道是否ioctl()
阻止了 nvme 吗?
我也可以有任何方法(解决方案)通过线程减少执行时间吗?
线程函数如下:
linux - 有没有办法让 ioctl() 带有新的(自定义)命令
我正在为 nvme-cli 开发一个测试工具(用 c 编写并且可以在 linux 上运行)。
出于 SSD 验证的目的,我实际上是在寻找自定义命令(例如 I/O 命令,写入然后读取相同,最后比较两个数据是否相同)
在用户空间中,我需要使用写入命令(nvme_cmd_write)调用至少 2ioclt()
个,使用读取命令(nvme_cmd_read)调用另一个并比较两个缓冲区内容。
问题实际上是当我想并行发送这个命令时。在块级别(使用ioclt()
),我们无法将此命令放在不同的 I/O 提交队列中。
所以我们可以有一个自定义命令(nvme_cmd_write_compare)从ioclt()
驱动程序级别发送并有一个新模块来处理这个新命令。
由于我是这个 nvme/ioctl() 的新手,如果有任何错误,请纠正我。
我想知道我们是否可以实现这一点。
linux - ioctl() 如何调用驱动代码
我正在为 nvme-cli 开发一个测试工具(用 c 编写并且可以在 linux 上运行)。
出于 SSD 验证的目的,我实际上是在寻找自定义命令(例如 I/O 命令,写入然后读取相同,最后比较两个数据是否相同)
对于读取,ioctl()
函数的使用如下面的代码所示。
为了理解读取,我可以到哪里执行控制。
我也想要另一个看起来像的命令
err = ioctl(fd,NVME_IOCTL_WRITE_AND_COMPARE_IO, &io);
这样我就可以在内部进行写入,然后读取相同的位置,最后比较两个数据以确保磁盘仅包含我想要写入的数据。
由于我是这个 nvme/ioctl() 的新手,如果有任何错误,请纠正我。
linux - linux中的ioctl()是否有任何替代方法可以与nvme驱动器交互
我正在为 nvme-cli 开发一个测试工具(用 c 编写并且可以在 linux 上运行)。
出于 SSD 验证的目的,我们实际上是在寻找将 I/O 命令发送到特定的提交队列(IO 队列对)。我们需要这个是因为我们想要线程化,但是为了实现线程化,我们需要将 I/O 请求发送到不同的队列,否则 I/O 请求将被串行处理。
那么有什么方法ioctl()
可以指定提交队列 ID 吗?
或者
还有其他类似于ioctl()
我们可以指定提交队列 ID 的地方吗?
由于我是 nvme 或 ioctl 的新手,如果我错了,请纠正我。
linux - linux中的ioctl()有什么方法可以为nvme IO请求指定提交队列ID
我正在为 nvme-cli 开发一个测试工具(用 c 编写并且可以在 linux 上运行)。
出于 SSD 验证的目的,我们实际上是在寻找将 I/O 命令发送到特定的提交队列(IO 队列对)。我们需要这个是因为我们想要线程化,但是为了实现线程化,我们需要将 I/O 请求发送到不同的队列,否则 I/O 请求将被串行处理。
那么在 ioctl() 中有什么方法可以指定提交队列 ID 吗?
这是请求 nvme IO 的方式ioctl()
这nvme_ioctl()
在驱动程序中调用!
nvme_ioctl()
实习生在这里调用nvme_submit_io()
函数!
nvme_submit_io()
有一个参数struct nvme_ns *ns
,其中结构在这里有一个字段名称queue
视图!
我想知道我们是否可以ioctl()
使用附加的新参数来调用,该参数queue_id
将分配给函数中的queue
字段。struct nvme_ns *ns
nvme_submit_io()
我能知道我们是否可以这样做吗?
如果是,请给我一些简短的步骤。如果否,请建议我任何可能的解决方案。
由于我是 nvme 或 ioctl 的新手,如果我错了,请纠正我。
mysql - NVME SSD 会加速繁重的查询,例如大偏移量/表扫描等的选择吗?
如果数据库数据将在 NVME SSD 上,假设它比普通 SSD 快 4 倍,那么查询SELECT something OFFSET 100000
之类的查询通常也会快得多(当然,当它们没有缓存/缓冲等时)?
python - 使用 Python 进行 NVMe 吞吐量测试
目前我需要做一些吞吐量测试。我的硬件设置是三星 950 Pro 连接到 NVMe 控制器,该控制器通过 PCIe 端口连接到主板。我有一个 Linux nvme 设备,对应于我安装在文件系统某个位置的设备。
我希望使用 Python 来做到这一点。我打算在安装 SSD 的文件系统上打开一个文件,记录时间,将一些 n 长度的字节流写入文件,记录时间,然后使用 os 模块文件操作实用程序关闭文件。这是衡量写入吞吐量的函数。
我的另一种测试方法是使用 Linux fio 实用程序。 https://linux.die.net/man/1/fio
在 /fsmnt/fs1 安装 SSD 后,我使用此作业文件来测试吞吐量
我注意到Python函数返回的写入速度明显高于fio。因为 Python 是如此高级,所以你放弃了很多控制权。我想知道 Python 是否正在做一些事情来欺骗它的速度。有谁知道为什么 Python 生成的写入速度会比 fio 生成的写入速度高得多?