У меня есть дополнительные процессы, которые должны обмениваться файлами по сети IB. Затем файлы будут использоваться другими процессами.
Рабочий процесс следующий:
- Создавать файлы в /dev/shm
- Измените размер файлов соответствующим образом
- Файлы карты в виртуальной машине процесса
- Зарегистрируйте mmaped область с помощью ibv_reg_mr
- Инициировать операцию RDMA для передачи данных
Оказалось, что узким местом в моей схеме является ib_reg_mr (замерял отдельно регистрация 3Gb памяти занимает 1,78 секунды). Кажется, что это запускает сопоставление области памяти с адресным пространством процесса. К сожалению, эта операция не нужна, так как процесс-получатель не использует эту память. Память должна быть отображена и использована другими процессами позже.
Поэтому я подумал, что было бы разумно обойти изменение таблиц страниц для процесса получения, но я не смог найти, возможно ли это вообще.
Не могли бы вы посоветовать мне, есть ли способ инициировать передачу данных в области памяти без сопоставления ее с адресным пространством процесса?