Is it possible to use infiniband instead of TCP/IP with Akka? I want to use Akka for HPC on the local cluster and the network bottleneck is significant using TCP/IP...
-
According to the link below you can use Akka with Infiniband. I have never tried it though, but it appears possible. https://groups.google.com/forum/?fromgroups#!topic/akka-user/7z6xoShHg6c – cmbaxter May 23 '13 at 12:28
-
It doesn't seem very informative though :P – Felix May 23 '13 at 12:45
-
Ya, sorry, just wanted to let you know that it looks like it's possible. – cmbaxter May 23 '13 at 12:58
4 Answers
I can't really respond to this directly (infiniband) but Akka-ZeroMq (http://doc.akka.io/docs/akka/snapshot/scala/zeromq.html) is pretty good. https://github.com/mDialog/scala-zeromq is a lib my peers wrote that we've migrated to instead of the actual akka lib.
For infiniband zmq performance you'll want to check the docs to see if it fits your needs. http://www.zeromq.org/area:results
The only messages I can imagine being a problem over tcp are just absolutely gigantic messages in which case you probably want to reconsider what you're firing over the wire.
ZeroMq is your most performant bet relative to most other messaging but it's not the most obvious solution to devs used to good old fashioned persistent messaging systems.

- 5,794
- 4
- 39
- 67
To answer my own question, it seems you can use "ip over infiniband", so there's a good chance you can use akka "as-is" for cluster settings that provide this option. I will look into this with some benchmarking soon.

- 8,385
- 10
- 40
- 59
-
Currently I'm getting 82% vs 90% efficiency using Akka and MPJ Express respectively as backends for a parallel implementation of Floyd's algorithm. Need to do a bit of tweaking on the serialization in the Akka backend to make it fair, but seems like both run at very good speeds. – Felix May 27 '13 at 16:07
The new Akka Remoting for 2.2 is pluggable so you should be able to hook in your own Infiniband transport.

- 26,479
- 7
- 51
- 68
-
Are there any simple examples for pluggable transports, or a how to? The netty transport in the Akka source is nontrivial. – cc. Aug 03 '13 at 11:19
-
Creating a transport is nontrivial. What transport are you setting out to implement? – Viktor Klang Aug 03 '13 at 11:22
-
we have a distributed system using a home-grown inter-node communications layer. I want to implement new functionality using Akka actors. Ideally, we may move to Akka altogether, and could use the Akka-provided transport. For some transitional period, however, I'd like to tunnel Akka communication through our existing protocol, to avoid having to configure/open another port on each node. – cc. Aug 05 '13 at 08:20
-
(continued) This means I just need to map akka communication onto existing primitives. I have this working, but when two nodes try to "Akka-associate" with each other at the same time, or when a node goes down and comes back up, for some reason messages get swallowed. I am probably not keeping the right data structures or don't synchronize them properly. I'll probably be able to pull through using the netty transport example, but it way more abstracted than I need, so a simpler example or state machine description would be appreciated :-) – cc. Aug 05 '13 at 08:28
-
SO comments are not the best forum for this, we could continue the discussion on the Akka-dev ML at Google groups of you want. – Roland Kuhn Aug 05 '13 at 14:54