Насколько хорошо масштабируется одновременная запись с помощью io_uring?

Это похоже на сценарий, который отправляется в вычислительный кластер через что-то вроде SLURM. Вам следует поговорить с администратором вашей системы и спросить, установлена ​​ли R в кластере, и если да, то как разрешить доступ к ней в вашем скрипте.

В кластерах, к которым у меня есть доступ, некоторое программное обеспечение необходимо будет загрузить с помощью команды module load somesoftware/version, которая обновляет/устанавливает переменные среды, необходимые для запуска программного обеспечения.

2
28.09.2020, 16:50
1 ответ

Do most disks have some amount of hardware support for parallel writes? Or maybe SSDs do but spinning disks don't?

Почти -на всех дисках, независимо от того, вращающиеся они или твердотельные (даже вращающиеся диски имеют кэши, поэтому для небольших объемов данных они могут казаться не слишком медленными ). Дешевые USB-ключи или SD-карты будут обеспечивать плохой параллелизм, но определенный уровень параллелизма тоже будет... Что касается максимального количества параллельных команд для одного устройства, SATA может иметь до 32, SCSI имеет тенденцию варьироваться от 10 до 100, NVMe может доходить до 1000 (Я думаю, что спецификация ограничивает вас максимальным значением 65536, но я пока не знаю устройства, которое достигает такой высокой скорости ).

Do writes get pipelined (over the bus?) to the disk so the kernel doesn't have to wait for a round-trip response for each one?

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

Does the kernel itself end up queuing all of the syscalls requested via io_uring?

Возможно. io_uringзавершит встроенный ввод-вывод, если он не будет заблокирован, в противном случае он будет поставлен в очередь. Из Efficient IO with io _uring:«Что еще более важно, для операций, которые не будут блокироваться, данные обслуживаются в режиме реального времени».

Are there other bottlenecks I haven't considered?

Да. Также неясно, выполняете ли вы достаточно операций ввода-вывода в секунду, чтобы по-настоящему увидеть преимущества чего-то вроде io_uring... Кроме того, частые синхронизации, вероятно, ограничивают параллелизм в зависимости от частоты и того, как они выполняются. Если вы выполняете буферизованный ввод-вывод, ядро ​​выжимает параллелизм даже в синхронном режиме, потому что вы записываете в ОЗУ, а затем ядро ​​отключается от ОЗУ параллельно, где это возможно.(Обратите внимание, что предыдущие пункты не являются исчерпывающим списком)

(Вопрос из заголовка)

How well do concurrent writes scale with io_uring?

ОК или очень хорошо, в зависимости от того, какое ядро ​​вы используете и как вы отправляете ввод-вывод. См. ссылки и ссылки в этом ответе на вопрос «Действительно ли в Linux нет асинхронного блочного ввода-вывода?» .

Ссылки

1
19.03.2021, 02:29

Теги

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