Есть ли альтернатива для 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.