Hier sind einige Besonderheiten.Was sind die PCIe-Operationen in Infiniband-Verben?
Wenn ein Prozess ibv_post_send()
nennt, was passiert an der PCI-Schnittstelle zum HCA? Ist der WQE in der PCIe-Türklingel gekapselt und über programmiertes IO geschrieben? Oder wird der WQE in einem separaten DMA gelesen, der von der HCA gelesen wird?
Was passiert, wenn ein Prozess ibv_poll_cq()
ruft? Wie drückt der HCA CQEs in den Systemspeicher? Oder, wenn es Pull-basiert ist, wie erkennt die CPU neue CQEs in der HCA?
Danke! Das ist sehr hilfreich. Gibt es ein Dokument online, dass diese Interaktion erklärt (und bietet weitere nützliche Informationen über Infiniband-Hardware?). Ich habe einen "Verben-Implementierungsleitfaden" gefunden, aber selbst das hat nicht gesagt, wie der CQE vorangetrieben wird. –
Umgang mit CQEs/WQEs und anderen Dingen - all dies ist implementierungsabhängig. Jeder Anbieter kann tun, was er will. Wenn Sie verstehen möchten, wie Verben implementiert werden, müssen Sie nur den relevanten Quellcode überprüfen - alles ist offen. Zum Beispiel für Mellanox ConnectX Familie von HCAs: http://lxr.free-electronics.com/source/drivers/infiniband/hw/mlx4/ Wenn Sie mehr als das wissen wollen, benötigen Sie Gerät PRM (Programmierung Referenzhandbuch). Sie müssen sich an den Support Ihres Anbieters wenden und nach diesem Dokument fragen. – kliteyn