Repository navigation
feat(ci): TCP Performance Tests workflow - #114
Conversation
Add .github/workflows/perf-tests-tcp.yml implementing ROADMAP item #33 (task 15.5): a manually-triggered TCP performance CI workflow. Features: - workflow_dispatch trigger with TCP-specific inputs: payload_sizes (64,512,1400,65536), cps_rates (100,500,1000,5000), duration (30s), configs (plain-rust-tcp,rust-dpdk-tcp,tokio-dpdk-tcp), teardown toggle - Concurrency group 'perf-tests-tcp' (cancel-in-progress: false) - validate-cdk pre-flight job - perf-tests-tcp job: AWS OIDC auth, SSM AMI lookup, PR resolution, run-perf-tests.sh with --tcp-payload-sizes/--cps-rates/--configs - Failure diagnostics posted as PR comment (failure-summary.json, app logs, network state, crash diagnostics, dmesg) - 90-day retention for tcp-perf-results artifact - 30-day retention for tcp-perf-instance-logs artifact - Safety-net CDK teardown on failure Spec: .kiro/specs/tcp-support/ task 15.5 Requirements: 17.1, 17.2, 17.3, 17.4, 17.5, 17.6, 17.7
Synthetic Performance Results (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 0.9x, worst: 1.1x | IPv6 vs IPv4 worst ratio: 1.39x (OK)
|
Synthetic Performance Results — Graviton (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 0.9x, worst: 1.0x | IPv6 vs IPv4 worst ratio: 1.33x (OK)
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed (Run 31803122296)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log receiver-test-client-iperf.log sender-test-client-iperf.log Full Application Logs (last 200 lines each)receiver-echo-server.logsender-echo-server.logsender-test-client.logreceiver-test-client-iperf.logsender-test-client-iperf.log
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
Synthetic Performance Results (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 0.9x, worst: 1.0x | IPv6 vs IPv4 worst ratio: 1.33x (OK)
|
✅ Integration Tests Passed — Graviton (run)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log |
Synthetic Performance Results — Graviton (run)Commit: ✅ synthetic UDP socket bound to 10.0.0.1:9000 (MAC: 02:00:00:00:00:01) Synthetic UDP Performance ResultsMeasures framework overhead: sync IPv4 Baseline
IPv6
IPv6 vs IPv4 Comparison (sync path)
IPv4 avg sync/async ratio: 1.0x, worst: 1.1x | IPv6 vs IPv4 worst ratio: 1.27x (OK)
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: DeployInfrastructure ready.
|
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
1 similar comment
[CI] Stage: SummaryAll tests PASSED. ARP seeding: kernel /proc/net/arp (automatic)
|
✅ Integration Tests Passed (Run 31803351771)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log receiver-test-client-iperf.log sender-test-client-iperf.log Full Application Logs (last 200 lines each)receiver-echo-server.logsender-echo-server.logsender-test-client.logreceiver-test-client-iperf.logsender-test-client-iperf.log
|
✅ Integration Tests Passed — Graviton (run)Branch: Test Results
Application Logs (last 20 lines)receiver-echo-server.log sender-echo-server.log sender-test-client.log |
Summary
Implements ROADMAP item #33 —
dpdk-stdlib-tcp: Performance CI workflow.Creates
.github/workflows/perf-tests-tcp.yml, a manually-triggered (workflow_dispatch) TCP performance test workflow matching the existing UDPperf-tests.ymlpattern but specialized for TCP/ASTF benchmarks.Spec Reference
.kiro/specs/tcp-support/· task15.5Features
payload_sizes: TCP payload sizes (default: 64,512,1400,65536)cps_rates: target connections-per-second (default: 100,500,1000,5000)duration: seconds per rate step (default: 30)configs: DUT configurations (default: plain-rust-tcp,rust-dpdk-tcp,tokio-dpdk-tcp)teardown: stack destroy toggleperf-tests-tcp(cancel-in-progress: false) — separate from UDP perf grouprun-perf-tests.shwith--tcp-payload-sizes,--cps-rates,--configsflagstcp-perf-resultsartifact with 90-day retentiontcp-perf-instance-logsartifact with 30-day retentionTests
cargo build— passes (workflow YAML doesn't affect Rust compilation)cargo test— all 1040+ tests pass, 0 failuresrun-perf-tests.shinfrastructure which already supports TCP configs viarun_tcp_benchmark_for_config(TRex ASTF mode)Tradeoffs
perf-tests-tcp) from UDP (perf-tests) so TCP and UDP perf tests can run independently without blocking each other. Both share the same CDK stack so they won't actually run simultaneously, but this gives clearer queue semantics.