Как iOS регулируют с планировщика IO на scsi низкоуровневые драйверы

sed -et -e's|/|&\n|;//D' <in >out

... будет выведено все, что находится после первой косой черты в любой строке, содержащей косую черту, или все остальные немодифицированные строки. Если отбросить //, то будут выведены только строки, которые модифицируются.

Возможно, вам придется использовать литерал \newline вместо n в \n escape, хотя это зависит от версии sed.

Также, если вы укажете количество вхождений...

sed -et -e's|/|&\n|num;/\n/D'

...вы можете удалить до num-го слэша в строке, не затрагивая ни одной строки, которая не содержит хотя бы num слэшей.

0
01.09.2018, 02:23
1 ответ

Планировщики ввода-вывода могут быть "не сохраняющими работу -". То есть они могут решить не отправлять IO немедленно. Существует метод планировщика ввода-вывода, известный как «холостой ход». Это особенно полезно для вращающихся дисков (, то есть не для твердотельных накопителей ). Планировщики CFQ и BFQ используют холостой ход.


Также помните, что вызовы записи ()могут буферизоваться в кэше страниц до того, как они будут записаны обратно как запрос ввода-вывода. А под очередью блочных устройств может быть кеш записи устройства. Это все очень сложно и приводит к разным странностям в поведении :-).

Обратите внимание, что не все блочные устройства имеют глубину очереди по умолчанию, равную 32, это всего лишь обычная глубина очереди для SATA NCQ. Устройства SCSI TCQ могут позволить больше, по крайней мере, стандарт. (И устройства NVMe определенно могут поддерживать больше, а также могут иметь несколько параллельных очередей ).

0
28.01.2020, 04:13

Теги

Похожие вопросы