TwoBufQueue
587.98
ReaderWriterQueue
736.26
rigtorp/SPSCQueue
352.82
atomic_queue
130.94
固定长度、不写长度前缀的 TwoBufQueue,与三种开源 SPSC 队列对比。TwoBufQueue 包含完整第二层复制与独立回调线程;第三方使用原生消费线程逐条回调。
条形长度仅在同一消息长度内比较。单位 M条/s = 每秒百万条消息。
TwoBufQueue 的第一层与第二层各 8 MiB,合计 16 MiB;三种开源 SPSC 请求 8 MiB。ReaderWriterQueue 会按内部块容量略微取整。
每条消息的模拟业务循环为 0;仍保留逐消息回调、序号/条数校验和队列自身的消费工作。
本页仅比较16 B与32 B。TwoBufQueue完整遍历每种长度135组参数,回调循环0,所有阶段每次一千万条、预热五万条、5次平均。最终候选把两种长度随机交错复测,未剔除异常值。
每层消息数据区固定8 MiB:block_size × pool_min = block_size × pool_max = 8 MiB;至少2块,未使用单个8 MiB块。8 MiB是消息数据区预算,队列元数据和计时前准备的输入不计入这个数据区,也不等于进程RSS。
扫描当前块关闭、publish_count=UINT32_MAX、两层复制和独立回调线程保留。遍历和正式复测使用同一二进制、缓存与分轮条件;吞吐与各分位数分别选优。
ReaderWriterQueue默认构造略向上取整,因此另外完整遍历9种接收策略,并下调请求条数,使全部512槽位块的数据区合计8 MiB。保留槽位导致可用消息容量约7.984 MiB;其余对照可用数据容量8 MiB。没有修改第三方实现或负载复制代码。
原始完整参数、全部候选、失败日志、校验与对照数据均保存;本次没有失败运行。p999仅按有限样本观察,不承诺长期最低。
每个指标先按单次运行计算,再取 5 次算术平均。TwoBufQueue 整行加粗并加边框。各指标使用独立选择的配置。
| 实现 | 吞吐 M条/s · 下方为范围 | 有效负载 GB/s | p50 ns / 次 | p99 ns / 次 | p999 ns / 次 | 回调区间 / 写入 墙钟时间比 | 回调循环 次 / 消息 | 分轮 轮 / 运行 |
|---|---|---|---|---|---|---|---|---|
| 16 B | ||||||||
| TwoBufQueue | 587.98573.32 – 604.32 | 9.408 | 1.608 | 3.067 | 8.258 | 2.04× | 0 | 24 |
| ReaderWriterQueue | 736.26696.65 – 755.08 | 11.780 | 1.300 | 3.458 | 12.567 | 3.08× | 0 | 24 |
| rigtorp/SPSCQueue | 352.82320.73 – 364.40 | 5.645 | 2.725 | 9.200 | 32.133 | 1.18× | 0 | 24 |
| atomic_queue | 130.94127.02 – 133.63 | 2.095 | 6.758 | 27.183 | 47.900 | 1.01× | 0 | 24 |
| 32 B | ||||||||
| TwoBufQueue | 525.49506.43 – 546.53 | 16.816 | 1.750 | 3.267 | 6.817 | 1.71× | 0 | 48 |
| ReaderWriterQueue | 439.14196.45 – 566.83 | 14.052 | 1.833 | 4.900 | 11.375 | 2.02× | 0 | 48 |
| rigtorp/SPSCQueue | 269.47226.66 – 282.60 | 8.623 | 3.408 | 5.167 | 14.933 | 1.00× | 0 | 48 |
| atomic_queue | 87.9581.33 – 90.78 | 2.814 | 10.025 | 32.358 | 45.492 | 1.00× | 0 | 48 |
p50 / p99 / p999 是“每组 1000 次成功写入的平均耗时”的分位数,不是单条消息端到端延时,也不是单次 write 的分位数。吞吐使用独立的未逐组计时运行。GB/s 按业务净负载计算。时间比 = 各轮首条回调开始至末条回调结束的耗时之和 ÷ 各轮写线程发送耗时之和,再对运行取平均;它包含分发、等待数据和调度,不是每次回调函数 CPU 耗时之和。
与吞吐表使用同一批正式运行。时间、次数按运行取平均;峰值 RSS 为这组运行的最大值。
| 实现 | 写线程 ms | 回调区间 ms | 受压消息 条 / 次运行 | 失败尝试 次 / 运行 | 重试时间 ms | Writer 压力 内部事件 | 复制层拒绝 内部事件 | 峰值 RSS MiB |
|---|---|---|---|---|---|---|---|---|
| 16 B | ||||||||
| TwoBufQueue | 17.01 | 34.77 | 0.0 | 0.0 | 0.000 | 0 | 0 | 24.2 |
| ReaderWriterQueue | 13.59 | 41.83 | 0.0 | 0.0 | 0.000 | — | — | 16.6 |
| rigtorp/SPSCQueue | 28.41 | 33.61 | 0.0 | 0.0 | 0.000 | — | — | 16.2 |
| atomic_queue | 76.39 | 77.35 | 0.0 | 0.0 | 0.000 | — | — | 16.6 |
| 32 B | ||||||||
| TwoBufQueue | 19.05 | 32.61 | 0.0 | 0.0 | 0.000 | 0 | 0 | 24.2 |
| ReaderWriterQueue | 26.34 | 50.31 | 0.0 | 0.0 | 0.000 | — | — | 16.4 |
| rigtorp/SPSCQueue | 37.38 | 37.61 | 0.0 | 0.0 | 0.000 | — | — | 16.2 |
| atomic_queue | 113.88 | 114.29 | 0.0 | 0.0 | 0.000 | — | — | 16.4 |
受压消息至少经历一次 try 写入失败;失败尝试含重复重试,最终仍全部写入。Writer 与复制层内部事件仅 TwoBufQueue 提供,其他实现显示“—”,不能把“—”解释为 0。回调区间含分发、轮内等待及调度,时间比大于 1 本身不等于写端背压。RSS 包含进程开销,不等于缓存容量。
展开查看全部 5 次吞吐及分位数。各指标来自各自最优配置的独立测量。没有剔除异常值,也没有将多个运行的样本合并计算分位数。
| 实现 / 指标 | 第 1 次 | 第 2 次 | 第 3 次 | 第 4 次 | 第 5 次 | 平均 |
|---|---|---|---|---|---|---|
| TwoBufQueue吞吐 M条/s | 598.186 | 585.996 | 578.061 | 604.318 | 573.316 | 587.976 |
| TwoBufQueuep50 ns | 1.625 | 1.583 | 1.583 | 1.625 | 1.625 | 1.608 |
| TwoBufQueuep99 ns | 2.333 | 3.542 | 3.667 | 3.500 | 2.292 | 3.067 |
| TwoBufQueuep999 ns | 6.042 | 7.333 | 8.250 | 13.875 | 5.792 | 8.258 |
| ReaderWriterQueue吞吐 M条/s | 754.219 | 696.650 | 745.307 | 755.080 | 730.056 | 736.262 |
| ReaderWriterQueuep50 ns | 1.333 | 1.292 | 1.292 | 1.292 | 1.292 | 1.300 |
| ReaderWriterQueuep99 ns | 5.625 | 4.000 | 2.042 | 3.250 | 2.375 | 3.458 |
| ReaderWriterQueuep999 ns | 18.583 | 14.417 | 3.792 | 14.375 | 11.667 | 12.567 |
| rigtorp/SPSCQueue吞吐 M条/s | 320.729 | 363.836 | 360.525 | 364.399 | 354.629 | 352.824 |
| rigtorp/SPSCQueuep50 ns | 2.750 | 2.708 | 2.708 | 2.750 | 2.708 | 2.725 |
| rigtorp/SPSCQueuep99 ns | 5.917 | 4.792 | 3.167 | 28.708 | 3.417 | 9.200 |
| rigtorp/SPSCQueuep999 ns | 19.083 | 12.792 | 6.542 | 112.708 | 9.542 | 32.133 |
| atomic_queue吞吐 M条/s | 132.202 | 131.042 | 127.018 | 130.793 | 133.631 | 130.937 |
| atomic_queuep50 ns | 6.792 | 6.667 | 6.542 | 6.875 | 6.917 | 6.758 |
| atomic_queuep99 ns | 28.167 | 25.750 | 29.125 | 27.792 | 25.083 | 27.183 |
| atomic_queuep999 ns | 49.250 | 32.250 | 51.000 | 64.042 | 42.958 | 47.900 |
| 实现 / 指标 | 第 1 次 | 第 2 次 | 第 3 次 | 第 4 次 | 第 5 次 | 平均 |
|---|---|---|---|---|---|---|
| TwoBufQueue吞吐 M条/s | 543.472 | 507.798 | 523.198 | 546.529 | 506.432 | 525.486 |
| TwoBufQueuep50 ns | 1.750 | 1.750 | 1.708 | 1.792 | 1.750 | 1.750 |
| TwoBufQueuep99 ns | 3.042 | 3.500 | 2.958 | 3.875 | 2.958 | 3.267 |
| TwoBufQueuep999 ns | 6.292 | 6.333 | 6.417 | 9.917 | 5.125 | 6.817 |
| ReaderWriterQueue吞吐 M条/s | 497.557 | 503.961 | 430.901 | 196.451 | 566.831 | 439.140 |
| ReaderWriterQueuep50 ns | 1.750 | 1.958 | 1.667 | 1.958 | 1.833 | 1.833 |
| ReaderWriterQueuep99 ns | 4.250 | 6.083 | 3.750 | 5.875 | 4.542 | 4.900 |
| ReaderWriterQueuep999 ns | 9.750 | 11.250 | 5.500 | 17.542 | 12.833 | 11.375 |
| rigtorp/SPSCQueue吞吐 M条/s | 281.206 | 278.340 | 282.600 | 226.662 | 278.523 | 269.466 |
| rigtorp/SPSCQueuep50 ns | 3.375 | 3.500 | 3.375 | 3.333 | 3.458 | 3.408 |
| rigtorp/SPSCQueuep99 ns | 5.500 | 4.167 | 5.542 | 6.375 | 4.250 | 5.167 |
| rigtorp/SPSCQueuep999 ns | 12.125 | 15.833 | 17.208 | 21.083 | 8.417 | 14.933 |
| atomic_queue吞吐 M条/s | 89.867 | 89.420 | 88.348 | 81.330 | 90.776 | 87.948 |
| atomic_queuep50 ns | 11.708 | 8.250 | 9.542 | 11.083 | 9.542 | 10.025 |
| atomic_queuep99 ns | 32.500 | 31.208 | 30.167 | 33.917 | 34.000 | 32.358 |
| atomic_queuep999 ns | 40.167 | 41.083 | 35.042 | 54.125 | 57.042 | 45.492 |
波动较大的吞吐组:32 B · ReaderWriterQueue:196.45–566.83 M条/s。所有测量均保留,未删除低值。
在声明的参数空间与预算内搜索;吞吐、p50、p99、p999 分别选优,并各做独立正式复测。表中不同指标可能来自不同配置,完整参数按指标列出。
TwoBufQueue:Writer → 复制线程 → 第二层缓存 → 独立回调线程,逐消息调用回调。
源块 / 输出块按指标分别选择;每层数据字节预算保持不变。四种实现正式写入次数与净负载长度相同。
每轮上限按缓存的 80% / 消息字节数计算。TwoBufQueue 不扫描当前块,publish_count 为 UINT32_MAX;停止发送计时后调用 finish_block 交接当前块,再等待本轮全部回调完成。预热也在计时外交接,最终尾部统一 finish。没有增加额外消息,原生 SPSC 每条已发布,轮末无需额外交接。
两份报告同时改变缓存大小与回调工作量,不能将两组差异全部归因于缓存;比较容量影响需另做相同回调负载的对照。
不逐条 flush · 轮末计时外交接;publish_count 按指标分别选择。仅预触碰写端数据页,第二层数据页没有额外预触碰。
吞吐和分组延时均在计时前准备整轮输入;每条消息的全部字都随序号变化;复制构造函数体使用一次直接 memcpy,目标成员保留 bytes{} 初始化。输入缓冲单独计算,不算队列容量,也不保证常驻 L1。
本机为 macOS-14.4.1-arm64-arm-64bit / arm64,Release 优化构建。
计时器:mach_absolute_time;每组 1000 次写入。组均值刻度约 0.0417 ns / 次。
写线程调度:高 QoS · 未硬绑核。调度打断和其他系统活动仍可能影响结果;复制与回调线程保留自身调度策略。
吞吐只累计写线程发送时间;排空在计时之外。并发复制 / 回调仍可能争用缓存和带宽,因此不是持续端到端吞吐。
{
"16 B / two_buf_queue": {
"throughput": {
"transport": "two_buf_queue",
"mode": "throughput",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1024,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 0,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1024,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 0,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 10000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 10000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"16 B / readerwriterqueue": {
"throughput": {
"transport": "readerwriterqueue",
"mode": "throughput",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 522753,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 522753,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 522753,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 522753,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"16 B / rigtorp": {
"throughput": {
"transport": "rigtorp",
"mode": "throughput",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"16 B / atomic_queue": {
"throughput": {
"transport": "atomic_queue",
"mode": "throughput",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 16,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"32 B / two_buf_queue": {
"throughput": {
"transport": "two_buf_queue",
"mode": "throughput",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1024,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 1000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 1000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 1000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "two_buf_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 4194304,
"source_pool_min": 2,
"source_pool_max": 2,
"source_queue_capacity": 8,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 4194304,
"output_frame_capacity": 1,
"output_pool_min": 2,
"output_pool_max": 2,
"output_queue_capacity": 8,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 1000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 1000,
"spsc_idle_sleep_ns": 0,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"32 B / readerwriterqueue": {
"throughput": {
"transport": "readerwriterqueue",
"mode": "throughput",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 261121,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 261121,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 261121,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "readerwriterqueue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 261121,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"32 B / rigtorp": {
"throughput": {
"transport": "rigtorp",
"mode": "throughput",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "rigtorp",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
},
"32 B / atomic_queue": {
"throughput": {
"transport": "atomic_queue",
"mode": "throughput",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p50": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 10000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p99": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
},
"p999": {
"transport": "atomic_queue",
"mode": "write_latency",
"payload_bytes": 32,
"messages": 10000000,
"warmup_messages": 50000,
"callback_iterations": 0,
"verify_payload": false,
"prepared_input": true,
"variable_payload": true,
"prepared_input_limit_bytes": 268435456,
"measure_callback_time": true,
"producer_interval_ns": 0,
"source_block_size": 65536,
"source_pool_min": 128,
"source_pool_max": 128,
"source_queue_capacity": 512,
"writer_backpressure": "drop",
"writer_spin_count": 1000,
"writer_wait_timeout_ms": 5000,
"output_block_size": 65536,
"output_frame_capacity": 1024,
"output_pool_min": 128,
"output_pool_max": 128,
"output_queue_capacity": 512,
"cancel_claim_mode": "tail",
"output_mode": "spsc",
"output_reader_mode": "wait_signal",
"output_reader_count": 1,
"output_retry_wait_us": 1000,
"output_enable_stats": false,
"is_scan_current": false,
"reader_spin_count": 1000,
"rescan_interval_ns": 5000000,
"rescan_max_interval_ns": 30000000,
"consumer_cpu": -1,
"producer_cpu": -1,
"producer_qos": "user_interactive",
"round_storage_bytes": 6710886,
"spsc_buffer_bytes": 8388608,
"prefault_producer_buffers": true,
"finish_timeout_ms": 5000,
"work_wait_min_ms": 1,
"finish_retry_ms": 1,
"publish_count": 4294967295,
"spsc_capacity": 0,
"retry_yield_every": 1024,
"spsc_idle_spins": 0,
"spsc_idle_sleep_ns": 1000,
"timer": "auto",
"sample_every": 32,
"max_samples": 1000000,
"latency_batch_size": 1000,
"timer_calibration_samples": 16384,
"call_batch_size": 256,
"random_seed": 42,
"timeout_seconds": 180,
"buffer_budget_bytes": 16777216
}
}
}第三方原文件按 benchmarks/spsc/spsc_dependencies.json 校验,未修改队列实现;外部负载对象每次拷贝使用一次直接 memcpy。逐次命令、配置、校验结果与内部计数保存在 raw.jsonl。