Add missing article "a" in phrase "As result" which should be "As a result" in four locations including table cell descriptions.
Improve readability and correct grammatical issues: - Correct missing word "The" in dropper description - Add missing article in EWMA filter description - Correct run-on sentence in traffic metering section - Improve clarity of color aware mode explanation - Correct inconsistent hyphenation in "run-time" Correct various issues in the QoS framework documentation: - Correct "an so on" to "and so on" - Correct "weights weights" duplicate word - Correct duplicate "the" in token bucket operations description - Correct "Pipelevel" to "Pipe level" for consistency - Correct "out performs" to "outperforms" - Correct "They could made" grammar error to "They could be made" - Correct inconsistent spacing in section references - Update hardcoded section numbers to use proper internal references Signed-off-by: Stephen Hemminger <[email protected]> --- .../prog_guide/ethdev/qos_framework.rst | 59 ++++++++++--------- 1 file changed, 30 insertions(+), 29 deletions(-) diff --git a/doc/guides/prog_guide/ethdev/qos_framework.rst b/doc/guides/prog_guide/ethdev/qos_framework.rst index 1144037dfa..0f61264ccc 100644 --- a/doc/guides/prog_guide/ethdev/qos_framework.rst +++ b/doc/guides/prog_guide/ethdev/qos_framework.rst @@ -189,7 +189,7 @@ The functionality of each hierarchical level is detailed in the following table. | | | | called Best Effort (BE), has 4 queues. | | | | | | | | | | #. Queues of the lowest priority TC (BE) are serviced using | - | | | | Weighted Round Robin (WRR) according to predefined weights| + | | | | Weighted Round Robin (WRR) according to predefined | | | | | weights. | | | | | | +---+--------------------+----------------------------+---------------------------------------------------------------+ @@ -368,7 +368,7 @@ The expected drop in performance is due to: #. Need to make the queue and bitmap operations thread safe, which requires either using locking primitives for access serialization (for example, spinlocks/ semaphores) or - using atomic primitives for lockless access (for example, Test and Set, Compare And Swap, an so on). + using atomic primitives for lockless access (for example, Test and Set, Compare And Swap, and so on). The impact is much higher in the former case. #. Ping-pong of cache lines storing the shared data structures between the cache hierarchies of the two cores @@ -621,7 +621,7 @@ The token bucket generic parameters and operations are presented in :numref:`tab | | | while the bucket is full are dropped. | | | | | +---+------------------------+------------------------------------------------------------------------------+ - | 3 | Credit consumption | As result of packet scheduling, the necessary number of credits is removed | + | 3 | Credit consumption | As a result of packet scheduling, the necessary number of credits is removed | | | | from the bucket. The packet can only be sent if enough credits are in the | | | | bucket to send the full packet (packet bytes and framing overhead for the | | | | packet). | @@ -681,7 +681,7 @@ where, r = port line rate (in bytes per second). +---+-------------------------+-----------------------------------------------------------------------------+ | 2 | Credit update | Credit update options: | | | | | - | | | * Every time a packet is sent for a port, update the credits of all the | + | | | * Every time a packet is sent for a port, update the credits of all | | | | the subports and pipes of that port. Not feasible. | | | | | | | | * Every time a packet is sent, update the credits for the pipe and | @@ -716,7 +716,7 @@ where, r = port line rate (in bytes per second). | | | * tb_time += n_periods * tb_period; | | | | | +---+-------------------------+-----------------------------------------------------------------------------+ - | 3 | Credit consumption | As result of packet scheduling, the necessary number of credits is removed | + | 3 | Credit consumption | As a result of packet scheduling, the necessary number of credits is removed| | | (on packet scheduling) | from the bucket. The packet can only be sent if enough credits are in the | | | | bucket to send the full packet (packet bytes and framing overhead for the | | | | packet). | @@ -805,7 +805,7 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`. | | | } | | | | | +---+--------------------------+----------------------------------------------------------------------------+ - | 3 | Credit consumption | As result of packet scheduling, the TC limit is decreased with the | + | 3 | Credit consumption | As a result of packet scheduling, the TC limit is decreased with the | | | (on packet scheduling) | necessary number of credits. The packet can only be sent if enough credits | | | | are currently available in the TC limit to send the full packet | | | | (packet bytes and framing overhead for the packet). | @@ -1042,7 +1042,7 @@ The highest value for the watermark is picked as the highest rate configured for | | | | | | | } | | | | | - | | | **Pipelevel:** | + | | | **Pipe level:** | | | | | | | | if(pipe_period_id != subport_period_id) | | | | | @@ -1163,7 +1163,7 @@ Droppers The purpose of the DPDK dropper is to drop packets arriving at a packet scheduler to avoid congestion. The dropper supports the Proportional Integral Controller Enhanced (PIE), Random Early Detection (RED), -Weighted Random Early Detection (WRED) and tail drop algorithms. +Weighted Random Early Detection (WRED), and tail drop algorithms. :numref:`figure_blk_diag_dropper` illustrates how the dropper integrates with the scheduler. The DPDK currently does not support congestion management so the dropper provides the only method for congestion avoidance. @@ -1175,7 +1175,7 @@ so the dropper provides the only method for congestion avoidance. High-level Block Diagram of the DPDK Dropper -The dropper uses one of two congestion avoidance algorithms: +The dropper uses one of the following congestion avoidance algorithms: - the Random Early Detection (RED) as documented in the reference publication. - the Proportional Integral Controller Enhanced (PIE) as documented in RFC8033 publication. @@ -1196,7 +1196,7 @@ In the case of severe congestion, the dropper resorts to tail drop. This occurs when a packet queue has reached maximum capacity and cannot store any more packets. In this situation, all arriving packets are dropped. -The flow through the dropper is illustrated in :numref:`figure_flow_tru_dropper`. +The flow through the dropper is illustrated in :numref:`figure_flow_tru_dropper`, The RED/WRED/PIE algorithm is exercised first and tail drop second. .. _figure_flow_tru_dropper: @@ -1205,7 +1205,7 @@ The RED/WRED/PIE algorithm is exercised first and tail drop second. Flow Through the Dropper -The PIE algorithm periodically updates the drop probability based on the latency samples. +The PIE algorithm periodically updates the drop probability based on latency samples. The current latency sample but also analyze whether the latency is trending up or down. This is the classical Proportional Integral (PI) controller method, which is known for eliminating steady state errors. @@ -1226,7 +1226,7 @@ The use cases supported by the dropper are: * * Mark empty (record the time at which a packet queue becomes empty) -The configuration use case is explained in :ref:`Section2.23.3.1 <Configuration>`, +The configuration use case is explained in :ref:`Section 2.23.3.1 <Configuration>`, the enqueue operation is explained in :ref:`Section 2.23.3.2 <Enqueue_Operation>` and the mark empty operation is explained in :ref:`Section 2.23.3.3 <Queue_Empty_Operation>`. @@ -1262,7 +1262,7 @@ The meaning of these parameters is explained in more detail in the following sec The format of these parameters as specified to the dropper module API corresponds to the format used by Cisco* in their RED implementation. The minimum and maximum threshold parameters are specified to the dropper module in terms of number of packets. -The mark probability parameter is specified as an inverse value, for example, +The mark probability parameter is specified as an inverse value; for example, an inverse mark probability parameter value of 10 corresponds to a mark probability of 1/10 (that is, 1 in 10 packets will be dropped). The EWMA filter weight parameter is specified as an inverse log value, @@ -1278,7 +1278,7 @@ A PIE configuration contains the parameters given in :numref:`table_qos_16a`. | Parameter | Minimum | Maximum | Default | | | | | | +==========================+=========+=========+==================+ - | Queue delay reference | 1 | uint16 | 15 | + | Queue delay reference | 1 | uint16_t| 15 | | Latency Target Value | | | | | Unit: ms | | | | +--------------------------+---------+---------+------------------+ @@ -1286,7 +1286,7 @@ A PIE configuration contains the parameters given in :numref:`table_qos_16a`. | Unit: ms | | | | +--------------------------+---------+---------+------------------+ | Tail Drop Threshold | 1 | uint16 | 64 | - | Unit: bytes | | | | + | Unit: number of packets | | | | +--------------------------+---------+---------+------------------+ | Period to calculate | 1 | uint16 | 15 | | drop probability | | | | @@ -1294,8 +1294,9 @@ A PIE configuration contains the parameters given in :numref:`table_qos_16a`. +--------------------------+---------+---------+------------------+ The meaning of these parameters is explained in more detail in the next sections. -The format of these parameters as specified to the dropper module API. -They could made self calculated for fine tuning, within the apps. +The format of these parameters is specified to the dropper module API +and can be fine-tuned within applications. +They could be made self-calculated for fine tuning within the apps. .. _Enqueue_Operation: @@ -1316,7 +1317,7 @@ decision is the output value and the remaining values are configuration paramete EWMA Filter Microblock ^^^^^^^^^^^^^^^^^^^^^^ -The purpose of the EWMA Filter microblock is to filter queue size values to smooth out transient changes +The purpose of the EWMA filter microblock is to filter queue size values to smooth out transient changes that result from "bursty" traffic. The output value is the average queue size which gives a more stable view of the current congestion level in the queue. @@ -1426,7 +1427,7 @@ These approaches include: * Large look-up table (76 KB) -The method that was finally selected (described above in Section 26.3.2.2.1) out performs all of these approaches +The method that was finally selected (described above in Section 26.3.2.2.1) outperforms all of these approaches in terms of run-time performance and memory requirements and also achieves accuracy comparable to floating-point evaluation. :numref:`table_qos_17` lists the performance of each of these alternative approaches relative to the method that is used in the dropper. @@ -1700,7 +1701,7 @@ The arguments passed to the enqueue API are configuration data, run-time data, the current size of the packet queue (in packets) and a value representing the current time. The time reference is in units of bytes, where a byte signifies the time duration required by the physical interface to send out a byte on the transmission medium -(see Section 26.2.4.5.1 "Internal Time Reference" ). +(see `Internal Time Reference`_). The dropper reuses the scheduler time stamps for performance reasons. Empty API @@ -1720,7 +1721,7 @@ Traffic Metering The traffic metering component implements the Single Rate Three Color Marker (srTCM) and Two Rate Three Color Marker (trTCM) algorithms, as defined by IETF RFC 2697 and 2698 respectively. These algorithms meter the stream of incoming packets based on the allowance defined in advance for each traffic flow. -As result, each incoming packet is tagged as green, +As a result, each incoming packet is tagged as green, yellow or red based on the monitored consumption of the flow the packet belongs to. Functional Overview @@ -1739,12 +1740,12 @@ with the two buckets sharing the same token update rate: The trTCM algorithm defines two token buckets for each traffic flow, with the two buckets being updated with tokens at independent rates: -* Committed (C) bucket: fed with tokens at the rate defined by the Committed Information Rate (CIR) parameter +* Committed (C) bucket: fed with tokens at the rate defined by Committed Information Rate (CIR) parameter (measured in bytes of IP packet per second). The size of the C bucket is defined by the Committed Burst Size (CBS) parameter (measured in bytes); -* Peak (P) bucket: fed with tokens at the rate defined by the Peak Information Rate (PIR) parameter - (measured in IP packet bytes per second). +* Peak (P) bucket: fed with tokens at the rate defined by Peak Information Rate (PIR) parameter + (measured in bytes of IP packet per second). The size of the P bucket is defined by the Peak Burst Size (PBS) parameter (measured in bytes). Please refer to RFC 2697 (for srTCM) and RFC 2698 (for trTCM) for details on how tokens are consumed @@ -1755,7 +1756,7 @@ Color Blind and Color Aware Modes For both algorithms, the color blind mode is functionally equivalent to the color aware mode with input color set as green. For color aware mode, a packet with red input color can only get the red output color, -while a packet with yellow input color can only get the yellow or red output colors. +while a packet with yellow input color can only get yellow or red output colors. The reason why the color blind mode is still implemented distinctly than the color aware mode is that color blind mode can be implemented with fewer operations than the color aware mode. @@ -1766,12 +1767,12 @@ Implementation Overview For each input packet, the steps for the srTCM / trTCM algorithms are: * Update the C and E / P token buckets. This is done by reading the current time (from the CPU timestamp counter), - identifying the amount of time since the last bucket update and computing the associated number of tokens - (according to the pre-configured bucket rate). + identifying the amount of time since the last bucket update, and computing the associated number of tokens + according to the pre-configured bucket rate. The number of tokens in the bucket is limited by the pre-configured bucket size; * Identify the output color for the current packet based on the size of the IP packet - and the amount of tokens currently available in the C and E / P buckets; for color aware mode only, + and the amount of tokens currently available in the C and E / P buckets. For color aware mode only, the input color of the packet is also considered. When the output color is not red, a number of tokens equal to the length of the IP packet are - subtracted from the C or E /P or both buckets, depending on the algorithm and the output color of the packet. + subtracted from the C or E / P or both buckets, depending on the algorithm and the output color of the packet. -- 2.51.0

