Есть ли альтернатива для ioctl() в linux для взаимодействия с дисками nvme

Я работаю над инструментом тестирования для nvme-cli(написан на c и может работать на Linux).

В целях проверки SSD мы на самом деле ищем отправку команд ввода / вывода в определенную очередь отправки (пара очередей ввода / вывода). Нам это нужно, потому что мы хотели, чтобы потоки были выполнены, но для того, чтобы это происходило, нам нужно отправлять запросы ввода-вывода в другие очереди, иначе запросы ввода-вывода будут обрабатываться последовательно.

Так есть ли способ ioctl() где мы можем указать идентификаторы очереди отправки?

ИЛИ ЖЕ

Есть ли что-то похожее на ioctl() где мы можем указать идентификаторы очереди отправки?

Так как я новичок в nvme или ioctl, поправьте меня, если я не прав.

0 ответов

Вы можете попробовать SPDK ( https://github.com/spdk/spdk), который содержит драйвер NVMe в пользовательском пространстве. Он написан на C. Вы можете найти его API драйвера NVMe в spdk/include/spdk/nvme.h. Например, spdk_nvme_ctrlr_cmd_io_raw() используется для отправки любых видов команд ввода-вывода на устройство с любой созданной qpair.

Вы также можете попробовать Pynvme ( https://github.com/cranechu/pynvme), расширение SPDK для Python. Его IOWorker просто отправляет запросы внутри отдельного процесса и qpair.

Другие вопросы по тегам