echo: ошибка записи: недопустимый аргумент при настройке io_poll для NVMe SSD

Я использую следующую команду как пользователь root, чтобы включить опрос ядра Linux для устройства NVMe SSD.

# эхо 1> / sys / block / nvme2n1 / queue / io_poll

Я получаю следующую ошибку: bash: echo: ошибка записи: недопустимый аргумент

Сведения об ОС: Ubuntu 16.04, ядро ​​Linux 5.0.0+.

Есть указатели?

Ссылки на команду: https://itpeernetwork.intel.com/tuning-performance-intel-optane-ssds-linux-operating-systems/#gs.1yu3o1

https://lwn.net/Articles/663543/


person Nikhil Sambhus    schedule 18.03.2019    source источник
comment
Похоже, это вопрос использования, а не разработки. Вероятно, вам следует прочитать документацию или, если подходить к этому с точки зрения разработчика, найти и прочитать код, который генерирует эту ошибку, и попытаться выяснить, означает ли это то, что вы спрашиваете неправильно, или что вы просите что-то, что не поддерживается.   -  person Chris Stratton    schedule 18.03.2019
comment
Команда работает на других машинах, использующих ядро ​​4.15. Использование правильное, о чем также упоминается в ссылках.   -  person Nikhil Sambhus    schedule 19.03.2019
comment
Это не значит, что он будет работать с этим конкретным оборудованием или его драйверами.   -  person Chris Stratton    schedule 19.03.2019


Ответы (2)


Никхил опубликовал «Ошибка при включении SSD-накопителя <». a> в список рассылки блокировок Linux и получил ответ от Кейта Буша:

Обязательно включите очереди опроса в драйвере nvme. По умолчанию их нет. Параметр ядра для [sic] их включения:

nvme.poll_queues=X

Где «X» - количество очередей на опрос. Я бы порекомендовал хотя бы 1 на сокет ЦП, но лучше больше.

По внешнему виду ответ от Nik > кажется, что io_poll можно было установить в 1 после внесения вышеуказанного изменения.

Для контекста, просматривая исходный код ядра, вы можете Ядро 5.0 представило параметр NVMe poll_queues (это также упоминается в раздел хранилища журнала изменений ядра Kernel Newbies 5.0). Кроме того, 5.0 фиксация по умолчанию poll_queues в 0 (на момент написания в конце 2019 года мы в настоящее время используем 5.5-rc2, и это все еще случай).

Кроме того, похоже, что Фрэнк Обер (который отправил ответ на этот вопрос как @FrankO) спросил «почему было внесено изменение» в " Проведен опрос io для ядра Linux 5.x " Блокировка списка рассылки Linux, а также получено ответ Кита:

Исходная реализация опроса разделяла ресурсы, которые генерируют прерывания. Это не позволяет ему работать с максимальной скоростью, поэтому теперь используются выделенные очереди опроса.

person Anon    schedule 19.12.2019

Этот блог, на который вы ссылаетесь, родился во времена ядер 4.x, с тех пор концепции отправки ввода-вывода io_uring появились во временном интервале ядра 5.x.

Прочтите этот документ о io_uring: https://kernel.dk/io_uring.pdf

Вы должны протестировать оптический привод Optane с помощью: ioengine = io_uring

С хипри или без него, если вы хотите использовать bio_poll или нет.

Вот что должно сработать при переходе на fio:

[global]
direct=1
filename=/dev/nvme1n1
log_avg_msec=500
time_based
percentile_list=1:5:10:20:30:40:50:60:70:80:90:95:99:99.5:99.9:99.95:99.99:99.999:99.9999


[rand-read-4k-qd1]
runtime=120
bs=4K
iodepth=1
numjobs=1
cpus_allowed=0
ioengine=io_uring
hipri
rw=randread

uname -a 5.4.1-1.el8.elrepo.x86_64

CentOS 8

Удачи, Фрэнк Обер

person FrankO    schedule 16.12.2019