proydakov / ihft

Yet another HFT framework

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

IHFT

BSD 3 License

Life is too short for malloc.

IHFT is microframework & laboratory for low latency applications.

Current building status matrix

Configuration Static Runtime Shared Runtime ASAN+UBSAN TSAN
Linux(GCC) Build Status Build Status Build Status Build Status
Linux(Clang) Build Status Build Status Build Status Build Status
MacOS(Clang) - Build Status Build Status Build Status

Goals

  • platform module
    • set cpu for current thread
    • set name for current thread
    • lock memory pages
    • status for isolcpus, nohz_full, rcu_nocbs
    • hyper-threading detector
    • cpu frequency scaling detector
    • swap detector
    • transparent huge pages detector
    • huge page system detector
    • core to core latency example
    • platform sysjitter example
  • channel module
    • one 2 one stream pod data queue
    • one 2 one stream moveable object queue
    • one 2 many stream pod data queue
    • one 2 many stream moveable object queue
    • one 2 each stream pod data queue
    • one 2 each stream moveable object queue
    • batch reader for all moveable object queues
    • python latency analysis tool
    • C++20 concepts
    • documentation with latency histograms
  • memory module
    • arena allocator
    • stream fixed pool allocator
    • page allocator for 4KB pages
    • huge page allocator for 2MB & 1GB pages
  • timer module
    • native cpu_counter
    • native cpu_pause
  • types module
    • box: placed object ownership
    • function_ref: non-owning reference to a callable
    • result: function output or error
  • misc module
    • simple human-readable TOML config system
    • sigaction based signal handler
  • logger module
    • simple client usage
    • non reliable delivery
    • smart serializer for input arguments
    • compile-time formatting pattern check
    • wait-free implementation
    • log pount source file and thread info
    • std::format as formatting backend
    • std::source_location as log point source
    • documentation with pictures
  • network module
    • udp demo
    • multicast demo
    • DPDK demo
  • engine module
    • logical cpu
    • task assignment
    • configuration verification
    • intelligent component loading
    • documentation with pictures
  • CI
    • github workflows CI
    • static binary
    • Clang support with libc++
    • GCC support with libstdc++
    • Catch2 unit tests
    • address sanitizer
    • thread sanitizer
    • ub sanitizer
    • clang format
  • DevOps
    • script for system latency optimization

Docs

Analytics

Channel

Compiler

Constant

Engine

Memory

Misc

Platform

Types

Dev Links

C++ reference

Compiler Explorer

Compiler Flags and Options

Agner Fog’s instruction tables

Intel Intrinsics Guide

WikiChip CPU information

Intel hardware information

AMD hardware information

LLVM Machine Code Analyzer

LIKWID tools

OpenOnload is a user-level network stack

DPDK Accelerating Network Performance

TOML config file format

DevOps Links

Osnoise tracer

Disable cpu frecuency scaling

Eric Rigtorp Low Latency Tuning

Red Hat Enterprise Linux-7 Low Latency Tuning

Red Hat Enterprise Linux-7 Performance Tuning Guide

People

Erik Rigtorp personal blog

Martin Thompson mechanical sympathy

Raymond Chen oldnewthing

About

Yet another HFT framework

License:MIT License


Languages

Language:C++ 89.9%Language:CMake 9.1%Language:Shell 0.4%Language:C 0.3%Language:Python 0.2%