Skip to content

Allows Homa to be used as a transport with gRPC.

Notifications You must be signed in to change notification settings

danmanj/grpc_homa

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

89 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

This project adds Homa support to gRPC, so that gRPC applications can use Homa instead of TCP for transport.

  • This project is still in a relatively early stage of development, but C++ support is functional as of November 2021. Next up is Java support.

  • Please contact me if you have any problems; I'm happy to provide advice and support.

  • Known limitations:

    • grpc_homa currently supports only insecure channels.
  • Initial performance measurements show that short RPCs complete about 40% faster with Homa than with TCP (about 55 us round trip for Homa, vs. 90 us for TCP).

How to use grpc_homa

  • You will need to download the Linux kernel driver for Homa. Compile it as described in that repo and install it on all the machines where you plan to use gRPC.

  • Configure the Makefile as described in the comments at the top (sorry... I know this shouldn't need to be done manually).

  • Type make. This will build libhoma.a, which you should link with your applications.

  • When compiling your applications, use -I to specify this directory, then #include homa_client.h as needed for clients and #include homa_listener.h as needed for servers.

  • On clients, invoke HomaClient::createInsecureChannel to create channels instead of grpc::CreateChannel. It takes a single argument, which is a string of the form host:port identifying the Homa server. For an example of a simple but complete client, see test_client.cc

  • On servers, pass HomaListener::insecureCredentials() to AddListeningPort instead of grpc::InsecureServerCredentials(). For an example of a simple but complete server, see test_server.cc.

  • Once you have done this, all your existing gRPC-based code should work just fine.

About

Allows Homa to be used as a transport with gRPC.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • C++ 64.7%
  • Java 27.3%
  • Python 5.0%
  • C 1.3%
  • Makefile 1.0%
  • Perl 0.6%
  • Shell 0.1%