Latency Benchmarks ================== The end-to-end latency is measured between two identical machines using the test configuration below and running the |rti_rtiperftest|_ tool. The test environment consists of: - x86_64 CentOS Linux release 7.1.1503 - RTI Perftest 3.0 - Switch Configuration: D-Link DXS-3350 SR: - 176Gbps Switching Capacity - Dual 10-Gig stacking ports and optional 10-Gig uplinks - Stacks up to 8 units per stack - 4MB (Packet Buffer Size) - 48 x 10/100/1000BASE-T ports - Machine: - Intel I350 Gigabit NIC - Intel Core i7 CPU: - 12MB cache - 6 Cores (12 threads) - 3.33 GHz CPU speed - 12GB memory The latency is measured by sending one PING sample and wait for the Echoer to return the PONG sample. The sender records the time it took to receive the PONG sample and divides the result by 2. The test is repeated a number of times for each size. Note that the *end-to-end* latency is measured. Interpretation of the measurements (all numbers are reported in micro-seconds): - Bytes - The size of the DDS sample payload (UDP overhead is _not_ included) in bytes. - Ave - Average latency - Std - Standard deviation - Min - The minimum latency - Max - The maximum latency - 50% - The 50th percentile latency - 90% - The 90th percentile latency - 99% - The 99th percentile latency - 99.99% - The 99.99th percentile latency C++ Shared Memory Best Effort Keyed ``````````````````````````````````` .. csv-table:: Latency C++ Shared Memory Best Effort Keyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 12, 0.6, 11, 302, 12, 13, 14, 17 64, 12, 0.6, 11, 296, 12, 13, 14, 17 128, 12, 0.7, 11, 530, 12, 13, 14, 17 256, 13, 0.7, 12, 303, 13, 13, 15, 18 1024, 13, 0.6, 12, 304, 13, 13, 15, 17 4096, 14, 0.6, 13, 293, 14, 14, 16, 18 8192, 15, 0.7, 14, 311, 15, 15, 17, 21 63000, 29, 1.2, 26, 317, 29, 30, 32, 36 C++ Shared Memory Best Effort Unkeyed ````````````````````````````````````` .. csv-table:: Latency C++ Shared Memory Best Effort Unkeyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 12, 0.6, 11, 294, 12, 12, 13, 16 64, 12, 0.6, 11, 307, 12, 12, 13, 16 128, 13, 1.4, 11, 301, 12, 14, 15, 17 256, 12, 0.4, 11, 305, 12, 12, 13, 16 1024, 12, 0.4, 11, 311, 12, 12, 14, 16 4096, 13, 1.1, 12, 587, 13, 16, 16, 19 8192, 14, 0.5, 13, 298, 14, 14, 16, 20 63000, 27, 1.2, 25, 314, 27, 29, 30, 34 C++ Shared Memory Reliable Keyed ```````````````````````````````` .. csv-table:: Latency C++ Shared Memory Reliable Keyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 17, 1.7, 13, 299, 16, 20, 22, 25 64, 17, 1.9, 14, 597, 16, 20, 22, 25 128, 17, 1.8, 13, 306, 16, 20, 22, 25 256, 17, 1.9, 13, 560, 16, 20, 22, 25 1024, 17, 1.8, 14, 300, 17, 20, 23, 26 4096, 18, 1.8, 15, 313, 18, 21, 23, 27 8192, 19, 1.8, 17, 321, 19, 23, 25, 28 63000, 34, 1.8, 29, 314, 34, 37, 40, 43 C++ Shared Memory Reliable Unkeyed `````````````````````````````````` .. csv-table:: Latency C++ Shared Memory Reliable Unkeyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 16, 1.8, 14, 585, 15, 19, 21, 24 64, 16, 1.8, 13, 297, 16, 19, 21, 24 128, 16, 1.8, 13, 563, 16, 19, 21, 24 256, 16, 1.9, 14, 871, 15, 19, 21, 24 1024, 17, 1.7, 13, 571, 16, 19, 22, 24 4096, 17, 1.7, 15, 317, 17, 21, 23, 26 8192, 19, 1.8, 15, 560, 18, 22, 24, 27 63000, 33, 1.9, 29, 323, 32, 36, 39, 42 C++ UDPv4 1Gbps Best Effort Keyed ````````````````````````````````` .. csv-table:: Latency C++ UDPv4 1Gbps Best Effort Keyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 31, 0.8, 30, 321, 31, 32, 33, 37 64, 32, 0.8, 31, 334, 32, 33, 34, 38 128, 33, 0.7, 32, 311, 33, 34, 35, 38 256, 36, 0.9, 33, 581, 36, 36, 38, 41 1024, 51, 1.1, 49, 359, 51, 51, 53, 56 4096, 83, 1.6, 82, 854, 83, 83, 85, 88 8192, 120, 1.0, 119, 343, 120, 121, 122, 125 63000, 612, 1.6, 610, 859, 612, 613, 615, 632 C++ UDPv4 1Gbps Best Effort Unkeyed ``````````````````````````````````` .. csv-table:: Latency C++ UDPv4 1Gbps Best Effort Unkeyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 30, 0.8, 29, 315, 30, 31, 32, 35 64, 31, 1.0, 30, 588, 31, 31, 33, 35 128, 32, 0.6, 31, 334, 32, 33, 34, 36 256, 35, 0.8, 33, 331, 35, 35, 37, 39 1024, 50, 0.9, 48, 339, 50, 50, 52, 54 4096, 82, 1.1, 81, 351, 82, 83, 84, 88 8192, 119, 1.0, 118, 370, 119, 120, 121, 125 63000, 610, 1.0, 608, 637, 610, 611, 613, 632 C++ UDPv4 1Gbps Reliable Keyed `````````````````````````````` .. csv-table:: Latency C++ UDPv4 1Gbps Reliable Keyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 36, 1.8, 33, 326, 35, 38, 42, 46 64, 36, 1.6, 34, 574, 35, 36, 43, 46 128, 39, 2.1, 35, 333, 38, 40, 45, 48 256, 42, 1.7, 39, 577, 41, 43, 47, 51 1024, 56, 1.7, 52, 352, 55, 57, 62, 66 4096, 89, 1.8, 87, 565, 88, 90, 95, 99 8192, 126, 1.9, 124, 407, 125, 127, 132, 136 63000, 618, 1.9, 615, 821, 618, 620, 624, 641 C++ UDPv4 1Gbps Reliable Unkeyed ```````````````````````````````` .. csv-table:: Latency C++ UDPv4 1Gbps Reliable Unkeyed :header: "Size (Bytes)", "Ave (us)", "Std (us)", "Min (us)", "Max (us)", "50% (us)", "90% (us)", "99% (us)", "99.9% (us)" 32, 35, 2.0, 32, 570, 35, 37, 42, 45 64, 36, 2.2, 31, 576, 35, 38, 42, 46 128, 37, 1.8, 35, 534, 37, 39, 43, 47 256, 41, 2.0, 37, 589, 40, 43, 47, 50 1024, 55, 1.5, 52, 349, 54, 56, 60, 64 4096, 88, 1.4, 84, 384, 87, 89, 91, 97 8192, 125, 1.4, 123, 342, 125, 126, 130, 134 63000, 618, 1.9, 615, 775, 618, 621, 624, 640