diff options
Diffstat (limited to 'docs/user/sriov.rst')
-rw-r--r-- | docs/user/sriov.rst | 462 |
1 files changed, 462 insertions, 0 deletions
diff --git a/docs/user/sriov.rst b/docs/user/sriov.rst new file mode 100644 index 0000000..f5cc7d2 --- /dev/null +++ b/docs/user/sriov.rst @@ -0,0 +1,462 @@ +.. This work is licensed under a Creative Commons Attribution 4.0 International License. +.. SPDX-License-Identifier: CC-BY-4.0 +.. (c) Cisco Systems, Inc + + +Testing SR-IOV +============== + +NFVbench supports SR-IOV with the PVP and PVVP packet flow. Most use cases for SR-IOV only require single VNF chains (NxPVP). +Daisy chaining VNFs with SR-IOV (PVVP) requires selecting either SR-IOV for the middle network or a fast vswitch (using the +standard OVS for that purpose works but would be a serious bottleneck) + +Instructions below refer to the PVP or PVVP use cases. +For external chains using SR-IOV, select the VLAN tagging option that corresponds to the external chains SR-IOV setting. + +Pre-requisites +-------------- +To test SR-IOV you need to have compute nodes configured to support one or more SR-IOV interfaces (also knows as PF or physical function) +and you need OpenStack to be configured to support SR-IOV. +You will also need to know: +- the name of the physical networks associated to the SR-IOV interfaces (this is a configuration in Nova compute) +- the VLAN range that can be used on the switch ports that are wired to the SR-IOV ports. Such switch ports are normally configured in trunk mode with a range of VLAN ids enabled on that port + +For example, in the case of 2 SR-IOV ports per compute node, 2 physical networks are generally configured in OpenStack with a distinct name. +The VLAN range to use is is also allocated and reserved by the network administrator and in coordination with the corresponding top of rack switch port configuration. + + +Configuration +------------- +To enable SR-IOV test, you will need to provide the following configuration options to NFVbench (in the configuration file). +This example instructs NFVbench to create the left and right networks of a PVP packet flow to run on 2 SRIOV ports named "phys_sriov0" and "phys_sriov1" using resp. segmentation_id 2000 and 2001: + +.. code-block:: bash + + sriov: true + internal_networks: + left: + segmentation_id: 2000 + physical_network: phys_sriov0 + right: + segmentation_id: 2001 + physical_network: phys_sriov1 + +The segmentation ID fields must be different. +In the case of PVVP, the middle network also needs to be provisioned properly. +The same physical network can also be shared by the virtual networks but with different segmentation IDs. + +Multi-Chaining +-------------- +The above configuration works for multi-chaining and shared network ("service_chain_shared_net" set to true). +In that case all VNFs will share the same left and right network/VLAN. + +In the case of non shared network ("service_chain_shared_net" set to false), the segmentation_id fields must +contain a list of distinct VLANs to use for each chain. Example of configuration for 3 chains: + +.. code-block:: bash + + sriov: true + internal_networks: + left: + segmentation_id: [2000, 2001, 2002] + physical_network: phys_sriov0 + right: + segmentation_id: [2100, 2101, 2102] + physical_network: phys_sriov1 + +Alternatively it is also possible to specify different physnets per chain: + +.. code-block:: bash + + sriov: true + internal_networks: + left: + segmentation_id: [2000, 2001, 2002] + physical_network: [phys_sriov0, phys_sriov2, phys_sriov4] + right: + segmentation_id: [2100, 2101, 2102] + physical_network: [phys_sriov1, phys_srviov3, phys_sriov5] + + +NFVbench cores with SR-IOV +-------------------------- +The default core count for NFVbench/TRex may not be sufficient for higher throughput line cards (greater than 10Gbps). +This will result in warning messages such as: + +.. code-block:: bash + + INFO WARNING: There is a significant difference between requested TX rate (119047618) and actual TX rate (38897379). + The traffic generator may not have sufficient CPU to achieve the requested TX rate. + +In that case it is recommended to try allocating more cores to TRex using the cores property in the configuration +file, for example to set to 8 cores: + +.. code-block:: bash + + cores: 8 + +It is also advisable to increase the number of vcpus in the VMs: + + +VM Flavor for SR-IOV and NIC NUMA socket placement +-------------------------------------------------- + +Because SR-IOV throughput uses a lot of CPU in the VM, it is recommended to increase the +vcpu count, for example to 4 vcpus: + +.. code-block:: bash + + flavor: + # Number of vCPUs for the flavor + vcpus: 4 + # Memory for the flavor in MB + ram: 8192 + # Size of local disk in GB + disk: 0 + extra_specs: + "hw:cpu_policy": dedicated + +If the 2 selected ports reside on NICs that are on different NUMA sockets, you will need to explicitly tell Nova to use 2 numa nodes in the flavor used for the VMs in order to satisfy the filters, for example: + +.. code-block:: bash + + flavor: + # Number of vCPUs for the flavor + vcpus: 4 + # Memory for the flavor in MB + ram: 8192 + # Size of local disk in GB + disk: 0 + extra_specs: + "hw:cpu_policy": dedicated + "hw:numa_nodes": 2 + +Failure to do so might cause the VM creation to fail with the Nova error +"Instance creation error: Insufficient compute resources: +Requested instance NUMA topology together with requested PCI devices cannot fit the given host NUMA topology." + +Example of configuration file (shared network) +---------------------------------------------- + +Single chain or multi-chain with shared network (only requires 2 segmentation ID for all chains): + +.. code-block:: bash + + flavor: + # Number of vCPUs for the flavor + vcpus: 4 + # Memory for the flavor in MB + ram: 8192 + # Size of local disk in GB + disk: 0 + extra_specs: + "hw:cpu_policy": dedicated + cores: 8 + sriov: true + internal_networks: + left: + segmentation_id: 3830 + physical_network: phys_sriov0 + right: + segmentation_id: 3831 + physical_network: phys_sriov1 + +Example of full run 2xPVP shared network SR-IOV: + +.. code-block:: bash + + 2018-12-03 18:24:07,419 INFO Loading configuration file: /tmp/nfvbench/sriov.yaml + 2018-12-03 18:24:07,423 INFO -c /tmp/nfvbench/sriov.yaml --rate 10Mpps --duration 1 -scc 2 --no-cleanup + 2018-12-03 18:24:07,426 INFO Connecting to TRex (127.0.0.1)... + 2018-12-03 18:24:07,575 INFO Connected to TRex + 2018-12-03 18:24:07,575 INFO Port 0: Ethernet Controller XL710 for 40GbE QSFP+ speed=40Gbps mac=3c:fd:fe:b5:3d:70 pci=0000:5e:00.0 driver=net_i40e + 2018-12-03 18:24:07,575 INFO Port 1: Ethernet Controller XL710 for 40GbE QSFP+ speed=40Gbps mac=3c:fd:fe:b5:3d:71 pci=0000:5e:00.1 driver=net_i40e + 2018-12-03 18:24:07,626 INFO Found built-in VM image file nfvbenchvm-0.6.qcow2 + 2018-12-03 18:24:09,072 INFO Created flavor 'nfvbench.medium' + 2018-12-03 18:24:10,004 INFO Created network: nfvbench-lnet. + 2018-12-03 18:24:10,837 INFO Created network: nfvbench-rnet. + 2018-12-03 18:24:12,065 INFO Security disabled on port nfvbench-loop-vm0-0 + 2018-12-03 18:24:13,425 INFO Security disabled on port nfvbench-loop-vm0-1 + 2018-12-03 18:24:13,425 INFO Creating instance nfvbench-loop-vm0 with AZ + 2018-12-03 18:24:16,052 INFO Created instance nfvbench-loop-vm0 - waiting for placement resolution... + 2018-12-03 18:24:16,240 INFO Waiting for instance nfvbench-loop-vm0 to become active (retry 1/101)... + <snip> + 2018-12-03 18:24:59,266 INFO Waiting for instance nfvbench-loop-vm0 to become active (retry 21/101)... + 2018-12-03 18:25:01,427 INFO Instance nfvbench-loop-vm0 is active and has been placed on nova:charter-compute-5 + 2018-12-03 18:25:02,819 INFO Security disabled on port nfvbench-loop-vm1-0 + 2018-12-03 18:25:04,198 INFO Security disabled on port nfvbench-loop-vm1-1 + 2018-12-03 18:25:04,199 INFO Creating instance nfvbench-loop-vm1 with AZ nova:charter-compute-5 + 2018-12-03 18:25:05,032 INFO Created instance nfvbench-loop-vm1 on nova:charter-compute-5 + 2018-12-03 18:25:05,033 INFO Instance nfvbench-loop-vm0 is ACTIVE on nova:charter-compute-5 + 2018-12-03 18:25:05,212 INFO Waiting for 1/2 instance to become active (retry 1/100)... + <snip> + 2018-12-03 18:25:48,531 INFO Waiting for 1/2 instance to become active (retry 21/100)... + 2018-12-03 18:25:50,677 INFO Instance nfvbench-loop-vm1 is ACTIVE on nova:charter-compute-5 + 2018-12-03 18:25:50,677 INFO All instances are active + 2018-12-03 18:25:50,677 INFO Port 0: VLANs [3830, 3830] + 2018-12-03 18:25:50,677 INFO Port 1: VLANs [3831, 3831] + 2018-12-03 18:25:50,677 INFO Port 0: dst MAC ['fa:16:3e:de:4e:54', 'fa:16:3e:7a:26:2b'] + 2018-12-03 18:25:50,677 INFO Port 1: dst MAC ['fa:16:3e:6c:bb:cd', 'fa:16:3e:e0:48:45'] + 2018-12-03 18:25:50,678 INFO ChainRunner initialized + 2018-12-03 18:25:50,678 INFO Starting 2xPVP benchmark... + 2018-12-03 18:25:50,683 INFO Starting traffic generator to ensure end-to-end connectivity + 2018-12-03 18:25:50,698 INFO Created 2 traffic streams for port 0. + 2018-12-03 18:25:50,700 INFO Created 2 traffic streams for port 1. + 2018-12-03 18:25:50,821 INFO Captured unique src mac 0/4, capturing return packets (retry 1/100)... + 2018-12-03 18:25:52,944 INFO Received packet from mac: fa:16:3e:de:4e:54 (chain=0, port=0) + 2018-12-03 18:25:52,945 INFO Received packet from mac: fa:16:3e:6c:bb:cd (chain=0, port=1) + 2018-12-03 18:25:53,077 INFO Captured unique src mac 2/4, capturing return packets (retry 2/100)... + <snip> + 2018-12-03 18:26:10,798 INFO End-to-end connectivity established + 2018-12-03 18:26:10,816 INFO Cleared all existing streams + 2018-12-03 18:26:10,846 INFO Created 4 traffic streams for port 0. + 2018-12-03 18:26:10,849 INFO Created 4 traffic streams for port 1. + 2018-12-03 18:26:10,849 INFO Starting to generate traffic... + 2018-12-03 18:26:10,850 INFO Running traffic generator + 2018-12-03 18:26:11,877 INFO TX: 10000004; RX: 9999999; Est. Dropped: 5; Est. Drop rate: 0.0000% + 2018-12-03 18:26:11,877 INFO ...traffic generating ended. + 2018-12-03 18:26:11,882 INFO Service chain 'PVP' run completed. + 2018-12-03 18:26:11,936 INFO Clean up skipped. + 2018-12-03 18:26:11,969 INFO + ========== NFVBench Summary ========== + Date: 2018-12-03 18:25:50 + NFVBench version 3.0.3.dev1 + Openstack Neutron: + vSwitch: OPENVSWITCH + Encapsulation: VLAN + Benchmarks: + > Networks: + > Components: + > Traffic Generator: + Profile: trex-local + Tool: TRex + > Versions: + > Traffic_Generator: + build_date: Nov 13 2017 + version: v2.32 + built_by: hhaim + mode: STL + build_time: 10:58:17 + > CiscoVIM: 2.9.7-17036 + > Service chain: + > PVP: + > Traffic: + Profile: traffic_profile_64B + Bidirectional: True + Flow count: 10000 + Service chains count: 2 + Compute nodes: [u'nova:charter-compute-5'] + + Run Summary: + + +-----------------+-------------+----------------------+----------------------+----------------------+ + | L2 Frame Size | Drop Rate | Avg Latency (usec) | Min Latency (usec) | Max Latency (usec) | + +=================+=============+======================+======================+======================+ + | 64 | 0.0000% | 13 | 10 | 141 | + +-----------------+-------------+----------------------+----------------------+----------------------+ + + + L2 frame size: 64 + + Run Config: + + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Direction | Requested TX Rate (bps) | Actual TX Rate (bps) | RX Rate (bps) | Requested TX Rate (pps) | Actual TX Rate (pps) | RX Rate (pps) | + +=============+===========================+========================+=================+===========================+========================+=================+ + | Forward | 336.0000 Mbps | 336.0000 Mbps | 336.0000 Mbps | 500,000 pps | 500,000 pps | 500,000 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Reverse | 336.0000 Mbps | 336.0000 Mbps | 336.0000 Mbps | 500,000 pps | 500,000 pps | 500,000 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Total | 672.0000 Mbps | 672.0000 Mbps | 672.0000 Mbps | 1,000,000 pps | 1,000,000 pps | 1,000,000 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + + Forward Chain Packet Counters and Latency: + + +---------+--------------+--------------+------------+------------+------------+ + | Chain | TRex.TX.p0 | TRex.RX.p1 | Avg lat. | Min lat. | Max lat. | + +=========+==============+==============+============+============+============+ + | 0 | 250,000 | 250,000 | 17 usec | 10 usec | 138 usec | + +---------+--------------+--------------+------------+------------+------------+ + | 1 | 250,000 | 250,000 | 17 usec | 10 usec | 139 usec | + +---------+--------------+--------------+------------+------------+------------+ + | total | 500,000 | 500,000 | 17 usec | 10 usec | 139 usec | + +---------+--------------+--------------+------------+------------+------------+ + + Reverse Chain Packet Counters and Latency: + + +---------+--------------+--------------+------------+------------+------------+ + | Chain | TRex.TX.p1 | TRex.RX.p0 | Avg lat. | Min lat. | Max lat. | + +=========+==============+==============+============+============+============+ + | 0 | 250,000 | 250,000 | 12 usec | 10 usec | 141 usec | + +---------+--------------+--------------+------------+------------+------------+ + | 1 | 250,000 | 250,000 | 11 usec | 10 usec | 132 usec | + +---------+--------------+--------------+------------+------------+------------+ + | total | 500,000 | 500,000 | 12 usec | 10 usec | 141 usec | + +---------+--------------+--------------+------------+------------+------------+ + +Example of configuration file (non shared network) +-------------------------------------------------- + +Multi-chain with non shared network (requires 2 segmentation ID per chain), example with 2 chains +sharing the same 2 SRIOV ports (or PF): + +.. code-block:: bash + + flavor: + # Number of vCPUs for the flavor + vcpus: 4 + # Memory for the flavor in MB + ram: 8192 + # Size of local disk in GB + disk: 0 + extra_specs: + "hw:cpu_policy": dedicated + cores: 8 + sriov: true + internal_networks: + left: + segmentation_id: [3830, 3831] + physical_network: phys_sriov0 + right: + segmentation_id: [3832, 3833] + physical_network: phys_sriov1 + +Example of full run 2xPVP non-shared network SR-IOV: + +.. code-block:: bash + + 2018-12-04 17:15:25,284 INFO -c /tmp/nfvbench/sriov.yaml --rate 1Mpps --duration 1 -scc 2 --no-cleanup + 2018-12-04 17:15:25,287 INFO Connecting to TRex (127.0.0.1)... + 2018-12-04 17:15:25,463 INFO Connected to TRex + 2018-12-04 17:15:25,464 INFO Port 0: Ethernet Controller XL710 for 40GbE QSFP+ speed=40Gbps mac=3c:fd:fe:b5:3d:70 pci=0000:5e:00.0 driver=net_i40e + 2018-12-04 17:15:25,464 INFO Port 1: Ethernet Controller XL710 for 40GbE QSFP+ speed=40Gbps mac=3c:fd:fe:b5:3d:71 pci=0000:5e:00.1 driver=net_i40e + 2018-12-04 17:15:25,515 INFO Found built-in VM image file nfvbenchvm-0.6.qcow2 + 2018-12-04 17:15:26,457 INFO Created flavor 'nfvbench.medium' + 2018-12-04 17:15:27,449 INFO Created network: nfvbench-lnet0. + 2018-12-04 17:15:28,368 INFO Created network: nfvbench-rnet0. + 2018-12-04 17:15:29,143 INFO Created port nfvbench-loop-vm0-0 + 2018-12-04 17:15:29,626 INFO Security disabled on port nfvbench-loop-vm0-0 + 2018-12-04 17:15:30,636 INFO Created port nfvbench-loop-vm0-1 + 2018-12-04 17:15:31,139 INFO Security disabled on port nfvbench-loop-vm0-1 + 2018-12-04 17:15:31,140 INFO Creating instance nfvbench-loop-vm0 with AZ + 2018-12-04 17:15:34,893 INFO Created instance nfvbench-loop-vm0 - waiting for placement resolution... + 2018-12-04 17:15:35,068 INFO Waiting for instance nfvbench-loop-vm0 to become active (retry 1/101)... + <snip> + 2018-12-04 17:16:22,253 INFO Instance nfvbench-loop-vm0 is active and has been placed on nova:charter-compute-4 + 2018-12-04 17:16:23,154 INFO Created network: nfvbench-lnet1. + 2018-12-04 17:16:23,863 INFO Created network: nfvbench-rnet1. + 2018-12-04 17:16:24,799 INFO Created port nfvbench-loop-vm1-0 + 2018-12-04 17:16:25,267 INFO Security disabled on port nfvbench-loop-vm1-0 + 2018-12-04 17:16:26,006 INFO Created port nfvbench-loop-vm1-1 + 2018-12-04 17:16:26,612 INFO Security disabled on port nfvbench-loop-vm1-1 + 2018-12-04 17:16:26,612 INFO Creating instance nfvbench-loop-vm1 with AZ nova:charter-compute-4 + 2018-12-04 17:16:27,610 INFO Created instance nfvbench-loop-vm1 on nova:charter-compute-4 + 2018-12-04 17:16:27,610 INFO Instance nfvbench-loop-vm0 is ACTIVE on nova:charter-compute-4 + 2018-12-04 17:16:27,788 INFO Waiting for 1/2 instance to become active (retry 1/100)... + <snip> + + 2018-12-04 17:17:04,258 INFO Instance nfvbench-loop-vm1 is ACTIVE on nova:charter-compute-4 + 2018-12-04 17:17:04,258 INFO All instances are active + 2018-12-04 17:17:04,259 INFO Port 0: VLANs [3830, 3831] + 2018-12-04 17:17:04,259 INFO Port 1: VLANs [3832, 3833] + 2018-12-04 17:17:04,259 INFO Port 0: dst MAC ['fa:16:3e:ef:f4:b0', 'fa:16:3e:e5:74:cd'] + 2018-12-04 17:17:04,259 INFO Port 1: dst MAC ['fa:16:3e:d6:dc:84', 'fa:16:3e:8e:d9:30'] + 2018-12-04 17:17:04,259 INFO ChainRunner initialized + 2018-12-04 17:17:04,260 INFO Starting 2xPVP benchmark... + 2018-12-04 17:17:04,266 INFO Starting traffic generator to ensure end-to-end connectivity + 2018-12-04 17:17:04,297 INFO Created 2 traffic streams for port 0. + 2018-12-04 17:17:04,300 INFO Created 2 traffic streams for port 1. + 2018-12-04 17:17:04,420 INFO Captured unique src mac 0/4, capturing return packets (retry 1/100)... + 2018-12-04 17:17:06,532 INFO Received packet from mac: fa:16:3e:d6:dc:84 (chain=0, port=1) + 2018-12-04 17:17:06,532 INFO Received packet from mac: fa:16:3e:ef:f4:b0 (chain=0, port=0) + 2018-12-04 17:17:06,644 INFO Captured unique src mac 2/4, capturing return packets (retry 2/100)... + <snip> + + 2018-12-04 17:17:24,337 INFO Received packet from mac: fa:16:3e:8e:d9:30 (chain=1, port=1) + 2018-12-04 17:17:24,338 INFO Received packet from mac: fa:16:3e:e5:74:cd (chain=1, port=0) + 2018-12-04 17:17:24,338 INFO End-to-end connectivity established + 2018-12-04 17:17:24,355 INFO Cleared all existing streams + 2018-12-04 17:17:24,383 INFO Created 4 traffic streams for port 0. + 2018-12-04 17:17:24,386 INFO Created 4 traffic streams for port 1. + 2018-12-04 17:17:24,386 INFO Starting to generate traffic... + 2018-12-04 17:17:24,386 INFO Running traffic generator + 2018-12-04 17:17:25,415 INFO TX: 1000004; RX: 1000004; Est. Dropped: 0; Est. Drop rate: 0.0000% + 2018-12-04 17:17:25,415 INFO ...traffic generating ended. + 2018-12-04 17:17:25,420 INFO Service chain 'PVP' run completed. + 2018-12-04 17:17:25,471 INFO Clean up skipped. + 2018-12-04 17:17:25,508 INFO + ========== NFVBench Summary ========== + Date: 2018-12-04 17:17:04 + NFVBench version 3.0.3.dev1 + Openstack Neutron: + vSwitch: OPENVSWITCH + Encapsulation: VLAN + Benchmarks: + > Networks: + > Components: + > Traffic Generator: + Profile: trex-local + Tool: TRex + > Versions: + > Traffic_Generator: + build_date: Nov 13 2017 + version: v2.32 + built_by: hhaim + mode: STL + build_time: 10:58:17 + > CiscoVIM: 2.9.7-17036 + > Service chain: + > PVP: + > Traffic: + Profile: traffic_profile_64B + Bidirectional: True + Flow count: 10000 + Service chains count: 2 + Compute nodes: [u'nova:charter-compute-4'] + + Run Summary: + + +-----------------+-------------+----------------------+----------------------+----------------------+ + | L2 Frame Size | Drop Rate | Avg Latency (usec) | Min Latency (usec) | Max Latency (usec) | + +=================+=============+======================+======================+======================+ + | 64 | 0.0000% | 18 | 10 | 120 | + +-----------------+-------------+----------------------+----------------------+----------------------+ + + + L2 frame size: 64 + + Run Config: + + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Direction | Requested TX Rate (bps) | Actual TX Rate (bps) | RX Rate (bps) | Requested TX Rate (pps) | Actual TX Rate (pps) | RX Rate (pps) | + +=============+===========================+========================+=================+===========================+========================+=================+ + | Forward | 336.0000 Mbps | 336.0013 Mbps | 336.0013 Mbps | 500,000 pps | 500,002 pps | 500,002 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Reverse | 336.0000 Mbps | 336.0013 Mbps | 336.0013 Mbps | 500,000 pps | 500,002 pps | 500,002 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + | Total | 672.0000 Mbps | 672.0027 Mbps | 672.0027 Mbps | 1,000,000 pps | 1,000,004 pps | 1,000,004 pps | + +-------------+---------------------------+------------------------+-----------------+---------------------------+------------------------+-----------------+ + + Forward Chain Packet Counters and Latency: + + +---------+--------------+--------------+------------+------------+------------+ + | Chain | TRex.TX.p0 | TRex.RX.p1 | Avg lat. | Min lat. | Max lat. | + +=========+==============+==============+============+============+============+ + | 0 | 250,001 | 250,001 | 26 usec | 10 usec | 70 usec | + +---------+--------------+--------------+------------+------------+------------+ + | 1 | 250,001 | 250,001 | 11 usec | 10 usec | 39 usec | + +---------+--------------+--------------+------------+------------+------------+ + | total | 500,002 | 500,002 | 19 usec | 10 usec | 70 usec | + +---------+--------------+--------------+------------+------------+------------+ + + Reverse Chain Packet Counters and Latency: + + +---------+--------------+--------------+------------+------------+------------+ + | Chain | TRex.TX.p1 | TRex.RX.p0 | Avg lat. | Min lat. | Max lat. | + +=========+==============+==============+============+============+============+ + | 0 | 250,001 | 250,001 | 19 usec | 10 usec | 119 usec | + +---------+--------------+--------------+------------+------------+------------+ + | 1 | 250,001 | 250,001 | 19 usec | 10 usec | 120 usec | + +---------+--------------+--------------+------------+------------+------------+ + | total | 500,002 | 500,002 | 19 usec | 10 usec | 120 usec | + +---------+--------------+--------------+------------+------------+------------+ |