PlatformLab/Homa

Running Homa DPDK code

qizhe opened this issue · 3 comments

qizhe commented

Hi,

Thank you for providing DPDK implementation of Homa. It is really helpful.

There are several issues I met.

  1. I used DPDK 18.11 and cmake 3.15 to build the code. I got this compile error and I am not sure if I missed something:

/home/qizhe/Homa/src/Drivers/DPDK/DpdkDriver.cc: In constructor ‘Homa::Drivers::DPDK::DpdkDriver::DpdkDriver(int, int, char**, const Homa::Drivers::DPDK::DpdkDriver::Config*)’: /home/qizhe/Homa/src/Drivers/DPDK/DpdkDriver.cc:96:54: error: expected ‘,’ before ‘)’ token static_assert(sizeof(members) == sizeof(Internal));

  1. I notice in Read-me, it says this implementation is incomplete. But can I still use this code to run some basic test-case? eg. I have 8 servers and simply want to run Homa among these 8 servers.

  2. In the Read-me, the second step for build is cmake -E chdir build; it should be sudo cmake -E chdir build cmake ..?

Thanks for reporting the issue.

  1. I've tried compiling the head of the master branch and I don't see the same compiler issue. Can you tell me which commit you are trying to compile and which compiler you are trying to use? I tested on g++ 6.3 just now.

  2. The README is correct. While there is enough functionality in the master branch to test simple RPC functionality, I wouldn't consider the implementation stable or ready for use yet. We are still working on various aspects that will change the API and performance of this library (most of which are being tracked in my own fork as I test stuff out). That said, you're welcome to try it out. I'd love to know what you think. What kind of tests did you want to run?

  3. Good catch. I think you are right though I'm not sure sudo is required. I'll fix that in the README shortly.

qizhe commented

Hi Collin,

Thank you for your prompt response!

I see. I used the old version of gcc. The issue is solved.

I have a simple topology which contains 8 end hosts and a single switch. I mainly want to run two tests:

all-to-all test: each end hosts send flows to the rest of end hosts. Basically, each end host is both the client and the server in Homa setting.

incast test: one end host receives traffic from the rest 7 end hosts.

Do you think it is doable based on the current stage of implementation?

Qizhe

The implementation should have enough functionality to work in the cases you describe but we haven't tested it ourselves and the performance is probably not yet on par with the first implementation that was part of the RAMClould project. We are just starting to do performance and full system testing now and are working on various changes to the implementation. If you do go ahead with these tests, I'd love to know what you think.