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

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

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

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

OR

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

Поскольку я новичок в nvme или ioctl, поправьте меня, если я ошибаюсь.


person Arjun G S    schedule 20.12.2017    source источник


Ответы (1)


Вы можете попробовать 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), расширение для Python. СПДК. Его IOWorker просто отправляет запросы в рамках отдельного процесса и qpair.

person Crane Chu    schedule 27.02.2019