Life is too short for malloc.
IHFT is microframework & laboratory for low latency applications.
The IHFT framework requires:
- modern C++ compiler with -std=20 support (clang16+, gcc11+)
- cmake build system generator
- ninja build command line utility
- modern computer with linux x64 system
- dev compilation on macos x64|arm64 is also available
Configuration | Static Runtime | Shared Runtime | ASAN+UBSAN | TSAN |
---|---|---|---|---|
Linux(GCC11) | ||||
Linux(Clang18) | ||||
MacOS(Clang15) | - |
- 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
- Solarflare demo
- Mellanox 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
Agner Fog’s instruction tables
LLVM Machine Instruction Benchmark
OpenOnload is a user-level network stack
DPDK Accelerating Network Performance
Eric Rigtorp Low Latency Tuning
Red Hat Enterprise Linux-7 Low Latency Tuning
Red Hat Enterprise Linux-7 Performance Tuning Guide