0

I am looking for HPC networking library which can be more permanent than standard Java networking libraries.

I have checked out netutils and RockSaw but not sure whether they are maintained any more. Also not much a community behind them.

1 Answer 1

3

There are many alternatives but it rather depends on your requirements.

I would suggest kernel bypass adapters for low latency, in which cause the current libraries are supported, it is the hardware (and its drivers) which changes, not the library.

If you are concerned about throughput, any system should be able to make full use of a 1 Gb line and you can use a 10 Gb line with some tuning of your software (again another library won't help)

What extra library help with is lower level access, like packet sniffing, sending/receiving packet types not supported.

Where libraries can help is handing a very large number of connections. Plain IO can handle over 1000 connections fairly easily, and NIO can handle over 10K connections but if you need 100K connection it may struggle. If you need 1+ million connections, most likely you will need a custom C library. At this point I would suggest having more machines as you can't do much with a one millionth of a machine for each user.

In short, if you want high performance, look at your hardware first and then the software to support it. Just changing your software is unlikely to make much difference.

If you want to contact me, the best way is to look me up on the Performance Java User's Group.

Sign up to request clarification or add additional context in comments.

7 Comments

I am looking for few connection and high throughput and low latency. Also no GC pause (no GCable objects created under the hood)
You can do that with plain NIO and a kernel bypass network adapter. Solarflare and Mellanox support Java to Java on different boxes in under 10 micro-seconds. By reusing the direct ByteBuffers you avoid creating any garbage (or using the heap much at al) For other advice on how to write a HFT system in Java, check out my blog as I have been writing such systems for a five years.
BTW Here is the eden size of a HFT system a wrote a few years ago (which used kernel bypass) vanillajava.blogspot.de/2011/06/… As you can see it didn't GC (even a minor collection) all day. One Full GC per night when not trading.
Some of a re-development is; github.com/OpenHFT I need to move github.com/peter-lawrey/Java-Thread-Affinity to this group.
Chronicle is a low latency persistence library which is designed around event driven processing (or logging) You can send recorded IPC messages between threads/processes on the same machine with latencies around one micro-second. These messages can be replayed, by design, in near real time over TCP or off line on another system. Having complete visibility of the system is key IMHO to achieving low latency with a high degree of confidence.
|

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.