Skip to content

Releases: aws-samples/trading-latency-benchmark

v1.0.0

11 Dec 19:20

Choose a tag to compare

Release v1.0.0

What's Changed

  • update macos base image for build workflow (22ef8af)
  • add type to instance list (11f21af)
  • change benchmark dir to default (18a2b6f)
  • limit test client runtime by test_size config value, support tcp ping test with payload size, support testing multiple endpoints with ansible playbook, generate report for multiple endpoints (ad467dd)
  • add base stack for 2 flavors of cdk stack (55c4d74)
  • adapt tune_os playbook to graviton and amd (c410312)
  • set memory and isolated cores dynamically in start scripts (11642c2)
  • clean up hunting stack (4167a8e)
  • fix histogram precision (135aaa3)
  • increase histogram precision (9d90b31)
  • remove formatting to milliseconds and add 10th percentile (3f9ea93)
  • fix(cdk): implement CloudFormation tag-based instance tracking for reliable deletion (74b25ac)
  • Fixed microsecond precision loss in millisecond latency reporting (bf993db)
  • Add latency hunting deployment with cross-region VPC peering support (4c1e01a)
  • Add OS-tuned AMI builder feature and enhance OS tuning (c5f804d)
  • Modify build workflow for dynamic linking and DLLs (e0e0490)
  • Refactor release workflow for dynamic linking (a630934)
  • chore(deps): bump actions/download-artifact from 4 to 6 (23490cc)
  • Add multi-platform build support for x86_64 and ARM64 (e718047)
  • cpp-client: implemented histogram reset between reporting intervals, removed duplicated print, increased max hist value (0359918)
  • add config to release (b3a34fc)
  • migrate from OpenSSL to rustls (04d302f)
  • CI/CD Improvements - New workflows for PR builds and automated releases (b5763d7)
  • update java dependencies (9bd892f)
  • fix(jna): resolve UnsatisfiedLinkError on macOS by updating JNA and Affinity (721fa8f)
  • implement cross-platform compatibility and upgrade to Netty 4.2.7 (c448824)
  • ci: scope down permissions for build-pull-request.yml (074660a)
  • ci: scope down permissions for close-stale-issues.yml (b3eb08e)
  • ci: scope down permissions for extract-snippets.yml (91a1112)
  • ci: scope down permissions for closed-issue-message.yml (10aae5f)
  • ci: scope down permissions for extract-snippets-dryrun.yml (51393c1)
  • chore(deps): bump actions/setup-node from 4 to 6 (d3a625e)
  • Updated the maven zip file version from 3.9.7 to 3.9.11. And added Benchmark start command in the README file (4efcf6b)
  • chore(deps): bump tj-actions/changed-files from 46 to 47 (0f8e285)
  • chore(deps): bump actions/setup-python from 5 to 6 (bd62398)
  • chore(deps): bump actions/setup-dotnet from 4 to 5 (5716b4e)
  • chore(deps): bump actions/setup-go from 5 to 6 (495309e)
  • chore(deps): bump actions/setup-java from 4 to 5 (0374e5f)
  • Added EC2 Timestamping Programs (86e9c48)
  • chore(deps): bump actions/checkout from 4 to 5 (985d784)
  • README.md (5904db8)
  • Eliminated 100ΞΌs sleep, Lock-free frame counter, Busy polling, Branch prediction, Memory prefetching, Cache-aligned data, Lock-free packet buffer pool, Relaxed memory ordering, CPU affinity, Thread-local destination cache, Optimized thread creation, Zero-copy packet processing, Fast UDP payload extraction, Inline packet processing (fc1d8a1)
  • initial runing echo client server af_xdp demo (174fd1f)
  • Started AF_XDP Zero Copy benchmarking demo (2f9429e)
  • chore(deps): bump aws-cdk-lib from 2.189.0 to 2.189.1 in /deployment/cdk (1a4e071)
  • Update README.md (f84f3b9)
  • Update README.md (7689553)
  • Modified README.md for HFT Client sequence diagram (ab0d5af)
  • Added HFT client sequence diagram to README.md (3c27120)
  • fix escape chars in tune_os.yaml (bbacd8b)
  • Delete deployment/ansible/tune_os_2.yaml (bdbc4a2)
  • Enhance network performance with Epoll and socket optimizations (5c583c1)
  • Fix instance type parsing implementation (fe84e58)
  • Simplify instance type parsing to support all EC2 instance types (57e2da9)
  • Refactor project for trading latency benchmarking (0cd4083)
  • update README.md (a1f6217)
  • feat: enhance latency benchmarking and instance support (72fd2cf)
  • chore(deps): bump crossbeam-channel in /mock-trading-server (bc628bc)
  • chore(deps): bump aws-cdk-lib from 2.133.0 to 2.189.0 in /deployment/cdk (d4bd436)
  • add perf related tools to provision playbook (3aabd58)
  • disable amazon-ssm-agent in tune_os (238f043)
  • fix regex issue in the tune_os.yaml (b69c9f5)
  • Optimize trading latency benchmark environment (424f12c)
  • Modernize codebase and improve robustness (045cc58)
  • Improve documentation and enhance latency reporting scripts (1ab6908)
  • Update restart_mock_trading_server.yaml (f8186f6)
  • chore(deps): bump tj-actions/changed-files from 45 to 46 (5da2a40)
  • chore(deps): bump aws-actions/closed-issue-message from 1 to 2 (1749f58)
  • make ssl and uri configurable for cpp-client (d8971bf)
  • update dependencies (19c8378)
  • change cipher suite and use boringssl (6b7cf04)
  • Update provision_ec2.yaml (2be4b3d)
  • clean up (31e5039)
  • update CMakeList to fetch dependencies (a3a9313)
  • chore(deps): bump tj-actions/changed-files from 44 to 45 (2a1c6b7)
  • Update ExchangeClient.java (ae7e2ce)
  • Update ExchangeClient.java (cbdcb9e)
  • implemented output.log parser (2e92bf0)
  • Update provision_ec2.yaml (ce552f2)
  • clean up and refactor (4a077d0)
  • chore(deps): bump h2 from 0.3.24 to 0.3.26 in /mock-trading-server (c2fa864)
  • chore(deps): bump tj-actions/changed-files from 43 to 44 (219c2b6)
  • support for measuring rtt of endpoints with host and port (ab6bae8)
  • add CDK infra for ping test (9a0422b)
  • make ping client support multiple hosts seperated by comma (6f32de5)
  • implement ping latency (006ca8c)
  • chore(deps): bump tj-actions/changed-files from 41 to 43 (16a811b)
  • Add HdrHistogram as a submodule (a86ce7f)
  • add C++ client as an alternative to Java client (d79c368)
  • chore(deps): bump mio from 0.8.10 to 0.8.11 in /mock-trading-server (d51d555)
  • support for openssl 1.1.1e and qat_sw for Intel based instances (2d70576)
  • Update README.md (9fb82b0)
  • Update README.md (69c9e66)
  • Update README.md (4a444c6)
  • Support testing over encrypted connections like wss and https (1b8fe03)
  • ansible playbook for mock matching engine server setup (a59a54c)
  • chore(deps): bump tj-actions/changed-files in /.github/workflows (f610278)
  • chore(deps): bump actions/setup-go from 4 to 5 (10a1aea)
  • chore(deps): bump actions/setup-python from 4 to 5 (d83ee81)
  • chore(deps): bump actions/setup-dotnet from 3 to 4 (57440e5)
  • chore(deps): bump actions/setup-java from 3 to 4 (32297d9)
  • Update README.md (c7ada93)
  • chore(deps): bump tj-actions/changed-files from 39 to 40 (6c7ad84)
  • Update feature-request.yml (1a08f79)
  • Update snippet-extensions.yml (4be6caa)
  • Update PULL_REQUEST_TEMPLATE.md (1adb527)
  • fix: supress websocket close log to debug (98e9d13)
  • doc: README (7b0c162)
  • feat: split the websocket message definition to another file (147e379)
  • chore: cargo fmt and cargo clippy (42751b4)
  • feat: added env logger (ba9fdce)
  • feat: bind 0.0.0.0 (bacc530)
  • feat: dynamic create order response (30dbe8f)
  • feat: dynamic subscriptions (83f70ff)
  • feat: save the user ID (4a82481)
  • feat: static websocket endpoints (4acb076)
  • feat: mock-trading server POST endpoint (fa04989)
  • Bump actions/setup-node from 3 to 4 (e569328)
  • Update README.md (252c560)
  • initial commit (835b2e1)
  • Initial commit (fc59e3a)

πŸ“¦ Components

  • Java Trading Client - βœ… Cross-platform (all architectures)
  • Rust Mock Server - βœ… Linux (x86_64 & ARM64/Graviton), macOS (Intel & Apple Silicon), Windows
  • C++ Client - βœ… Multi-platform: Linux (x86_64 & ARM64/Graviton), macOS (Intel & Apple Silicon), Windows
  • Configuration Samples - πŸ“ All config files with documentation

πŸš€ Quick Start

  1. Download config-samples-v1.0.0.zip
  2. Extract and rename config files as needed
  3. Download binaries for your platform
  4. Run!

Java Client:

java -jar ExchangeFlow-v1.0.0.jar

C++ Client (choose your platform):

  • Linux x86_64:
    tar -xzf cpp-client-v1.0.0-linux-x86_64.tar.gz
    ./hft_client
  • Linux ARM64 (Graviton2/3/4):
    tar -xzf cpp-client-v1.0.0-linux-aarch64.tar.gz
    ./hft_client
  • macOS Intel:
    tar -xzf cpp-client-v1.0.0-macos-x86_64.tar.gz
    ./hft_client
  • macOS Apple Silicon:
    tar -xzf cpp-client-v1.0.0-macos-arm64.tar.gz
    ./hft_client
  • Windows:
    Expand-Archive cpp-client-v1.0.0-windows-x86_64.zip
    .\hft_client.exe

Rust Server (choose your platform):

  • Linux x86_64: ./mock-trading-server-v1.0.0-linux-x86_64
  • Linux ARM64 (Graviton): ./mock-trading-server-v1.0.0-linux-aarch64
  • macOS Intel: ./mock-trading-server-v1.0.0-macos-x86_64
  • macOS Apple Silicon: ./mock-trading-server-v1.0.0-macos-arm64
  • Windows: mock-trading-server-v1.0.0-windows-x86_64.exe

πŸ“‹ Requirements

  • Java 11+ (for client)
  • Configuration files (included in config-samples.zip)
  • See README in config bundle for details