New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
msg/async: ibverbs/rdma support #11531
Conversation
a good sharp to merge, pass ceph_test_msgr, basic cluster io tests. |
Hi Haomai,
|
1d212b0
to
5828f28
Compare
@avnerbh sorry, the later tests failed to adopt new interface, fixed ! |
10x - compilation now succeeded! |
Looks great! i see in Infiniband.cc MAX_SHARED_RX_SGE_COUNT = 1; is scatter gather supported? Thanks, Adir |
Can you squash down the 'make sure enough buffert' commit? |
@liewegas done |
hmm, actually we don't need this because sender memory won't be multi sge On Sun, Oct 23, 2016 at 5:27 PM, Adir lev notifications@github.com wrote:
Best Regards, Wheat |
@yuyuyu101 @avnerbh @Adirl independent of the specific merits of this change, what do we all think (esp., Mellanox) the larger concentration of effort should be in the codebase for infiniband/roce support over time? That is, I'm not wedded to every detail of XioMessenger, but it feels like there's a case to be made that libxio's solutions for buffer management and credit management, in particular, are best of class; more broadly, is encapsulation within AsyncMessenger rather than as a distinct Messenger implementation actually the best layering going forward? OTOH, question for the Mellanox folks: is libxio no longer a preferred approach for you all? from an architecture viewpoint, at the moment, I'm tempted to say that the general approaches being taken (esp. buiding on RC) are mostly going the same direction as libxio, but with less maturity. OTOH, areas for improvement in XioMessenger integration involved overall resource management and buffer lifecycle--how much easier, if any, does pulling verbs into a single Messenger make things, and in what ways? many of the problems appear to me to be convergent, like different buffer lifecycle and 0-copy strategies; What are we missing? |
@mattbenjamin from my current view, I have two thoughts:
|
Via developing async msgr, I think the most difficult thing for a new msgr needs to go though enough qa rounds. Most magic things are coming from session management not network io path. That's why I thought multi backend under async msgr is better. |
@mattbenjamin @yuyuyu101 Adir |
I get link errors when building with "-DWITH_RDMA=ON" about unresolved symbols for symbols that should come from libibverbs.so. ( The location of libibverbs.so in my installation is /usr/lib/ ) Below, is an example of the link errors:
|
@yuyuyu101 there doesn't seem to be a likelihood that Ceph will say "no" to anything a Messenger implementation wants to carefully do, but I do think the Messenger and Dispatcher abstractions are valuable, and it would be worth examining how to strengthen it/remove magical aspects, if we know of them. |
@mattbenjamin sorry, I agree your point. But I'm more focus on that we can uses this shortly. Hmm, I guess you mean Messenger and Dispatcher is valuable to pontential backend? Yes, but I don't have clear mind how to redefine interface to separate session semantics and io path. Maybe I can have a try in msgr2 define. We can move magical things into a common component and make backend can have a more rich semantics. |
@avnerbh ah, I tried locally, it seemed ok to me: |
@yuyuyu101
TIA, |
I just wanted to chime in regarding the xio vs async messenger question. I'd say let the people that are motivated develop each approach and let's see where we end up. There's enough complexity here that we might find unexpected benefits/downsides to either and encouraging people to follow their own instincts can only help us in the long run. |
|
@markhpc I realize that's where we'll end up. So my constructive thinking is, a) as already written, let's not neglect Messenger, Dispatcher, etc, abstractions; b) from RDMA viewpoint, maybe we haven't done as much as we could to discuss the underlying implementation choices and techniques--if we have some time for that, it may help all efforts. |
@yuyuyu101 anyhow, "make ceph-osd" does succeed in my environment; Hence, the problem is related only to test applications Also notice, that even on machine in which I didn't add /usr/lib to /etc/ld.so.conf I still succeed to see libibverbs with ldconfig:
|
Oh, big sorry! Because my coding env and build env is two different machine, I
diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
index 4617c70..482e855 100644
--- a/src/CMakeLists.txt
+++ b/src/CMakeLists.txt
@@ -555,7 +555,7 @@ endif (WITH_MGR)
set(librados_config_srcs
librados-config.cc)
add_executable(librados-config ${librados_config_srcs})
-target_link_libraries(librados-config librados global
${BLKID_LIBRARIES} ${IBVERBS_LIBRARIES}
+target_link_libraries(librados-config librados global
${BLKID_LIBRARIES} ${RDMA_LIBRARIES}
${CMAKE_DL_LIBS})
install(TARGETS librados-config DESTINATION bin)
@@ -683,7 +683,7 @@ set(ceph_osd_srcs
add_executable(ceph-osd ${ceph_osd_srcs}
$<TARGET_OBJECTS:common_util_obj>)
add_dependencies(ceph-osd erasure_code_plugins)
-target_link_libraries(ceph-osd osd os global ${BLKID_LIBRARIES}
${IBVERBS_LIBRARIES})
+target_link_libraries(ceph-osd osd os global ${BLKID_LIBRARIES}
${RDMA_LIBRARIES})
if(WITH_FUSE)
target_link_libraries(ceph-osd ${FUSE_LIBRARIES})
endif() I forget to submit this change to PR! |
Signed-off-by: Zhi Wang <wangzhi@xsky.com>
Signed-off-by: Haomai Wang <haomai@xsky.com>
Signed-off-by: Haomai Wang <haomai@xsky.com>
…uilt Signed-off-by: Haomai Wang <haomai@xsky.com>
Signed-off-by: Haomai Wang <haomai@xsky.com>
Signed-off-by: Haomai Wang <haomai@xsky.com>
Signed-off-by: Haomai Wang <haomai@xsky.com>
@yuriw |
No description provided.