• This repository has been archived on 06/Mar/2023
  • Stars
    star
    152
  • Rank 244,685 (Top 5 %)
  • Language
    C++
  • License
    GNU General Publi...
  • Created about 14 years ago
  • Updated about 10 years ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Ultra low latency messaging kernel

NanoMQ

NanoMQ is a ultra low latency messaging kernel. It enables messaging between processes in much the same way as POSIX message queues but at sub-microsecond latencies. NanoMQ uses efficient wait-free ring buffers arranged in a complete graph. Each node can send messages to any other node, receiving nodes needs to exclusively own a CPU core or HyperThread. The ultra low latency can thus be achieved by avoiding context switches.

Building

Just run make. Requires recent GCC. Tests require Google Test.

Performance

On my Intel(R) Core(TM)2 Duo CPU T7500 @ 2.20GHz I get an average RTT of 250 ns and a throughput of 13M msg/s for a two node setup with 100 byte messages. It will be interesting to see measurements on multi CPU systems and the latency depending on which cache the cores share.

Use case

In high frequency trading (HFT) systems you want to separate feed handlers and order management systems (OMS) from strategy code in order to increase fault tolerancy and support live deployment of bug fixes or new strategies. NanoMQ allows you to separate these parts of a trading system into separate processes while keeping communication latencies to a fraction of a microsecond.

Resources

Git repository: http://github.com/rigtorp/nanomq

Copying

Free use of this software is granted under the terms of the GNU General Public License (GPL). For details see the file COPYING included with the NanoMQ distribution.

More Repositories

1

awesome-modern-cpp

A collection of resources on modern C++
HTML
11,654
star
2

awesome-lockfree

A collection of resources on wait-free and lock-free programming
1,752
star
3

MPMCQueue

A bounded multi-producer multi-consumer concurrent queue written in C++11
C++
1,160
star
4

SPSCQueue

A bounded single-producer single-consumer wait-free and lock-free queue written in C++11
C++
871
star
5

ipc-bench

Latency benchmarks of Unix IPC mechanisms
C
547
star
6

spartan

A collection of High-Frequency trading components
C++
270
star
7

udpreplay

Replay UDP packets from a pcap file
C++
256
star
8

HashMap

An open addressing linear probing hash table, tuned for delete heavy workloads
C++
197
star
9

Seqlock

An implementation of Seqlock in C++11
C++
179
star
10

c2clat

A tool to measure CPU core to core latency
C++
118
star
11

hiccups

Measures the system induced jitter ("hiccups") a CPU bound thread experiences
C++
104
star
12

efvicap

erfvicap is a packet capture tool for network adapters from Solarflare
C++
59
star
13

statkit

Statistics toolkit for JavaScript
JavaScript
51
star
14

TokenBucket

Lock-free implementation of the token bucket algorithm in C++
C++
50
star
15

Function

Heap allocation free version of C++11 std::function
C++
50
star
16

isatomic

Test if AVX vector loads and stores are atomic
C++
21
star
17

CharConv

Fast integer to string and string to integer conversion functions
C++
18
star
18

BinarySemaphore

Binary semaphore using futexes.
C++
9
star
19

RingMap

Hybrid data structure that acts like a ring buffer and map
C++
7
star
20

dotemacs

My emacs config
Emacs Lisp
6
star
21

go-pikchr

Pikchr wrapped for Go using WebAssembly. No cgo required.
Go
4
star
22

unats

A simple single threaded NATS client for C++.
C++
4
star
23

nordpool

Data preprocessing / munging scripts for Nordpool power market data
HTML
3
star
24

openonload

git import of https://www.openonload.org/
Shell
3
star
25

sfpl

Simple functional programming language
Python
2
star
26

go-graphviz

Graphviz wrapped for Go using WebAssembly. No cgo required.
CMake
2
star
27

spark-dht11

Spark app to read a DHT11 sensor and publish humidity and temperature as Spark variables
C++
2
star
28

gmbackup

Simple tool to backup a Gmail account
Go
2
star
29

t-amp

Tripath Class-T audio amplifier
1
star
30

anything-git

Anything sources for Git
Emacs Lisp
1
star
31

chipamp

A hand crafted power amplifier of the Gainclone type
1
star
32

sysjitter2

1
star
33

gccsense

Fork of http://cx4a.org/repo/gccsense.git
Emacs Lisp
1
star