Лучший способ ждать завершения InfinBand на Linux?
Мы портируем Isis2 (isis2.codeplex.com), чтобы лучше использовать глаголы Infiniband и запустить наш код. Однако IB ориентируется на асинхронную модель приема, в которой вы публикуете группу приемных буферов, а затем, когда прием завершен, вы обрабатываете полученные данные.
Опрос идет медленно: если я использую блокирующее ожидание, скажем, 2 мс, я могу задержать до 2 мс, прежде чем увидеть данные IB. Так что это решение, но плохое. Что я действительно хочу, так это способ подождать, пока запись о завершении IB не будет завершена, и затем, чтобы мой поток мгновенно проснулся (в Windows это легко... в Linux это не так естественно). Кто-нибудь знает, как это сделать? При использовании глаголов дескриптор файла IB отсутствует, поэтому, очевидно, я не могу использовать select()
1 ответ
Не берите в голову; мы только что поняли, что они предлагают метод (ibv_reg_notify_cq) для этого. Мы попробуем это. Не самый лучший в мире документированный API...