On 22 Dec 2022, at 13:32, Eelco Chaudron wrote:

> On 22 Dec 2022, at 10:26, Balazs Nemeth wrote:
>
>> The only way that stats->{n_packets,n_bytes} would decrease is due to an
>> overflow, or if there are bugs in how statistics are handled. In the
>> past, there were multiple bugs that caused a jump backward. A
>> workaround was in place to set the statistics to 0 in that case. When
>> this happened while the revalidator was under heavy load, the workaround
>> had an unintended side effect where should_revalidate returned false
>> causing the flow to be removed because the metric it calculated was
>> based on a bogus value. Since many of those bugs have now been
>> identified and resolved, there is no need to set the statistics to 0. In
>> addition, the (unlikely) overflow still needs to be handled
>> appropriately.
>>
>> Signed-off-by: Balazs Nemeth <[email protected]>
>> ---
>>
>> Depends on:
>> - netdev-offload-tc: Preserve tc statistics when flow gets modified.
>> - tc: Add support for TCA_STATS_PKT64
>> - ofproto-dpif-upcall: Wait for valid hw flow stats before applying 
>> min-revalidate-pps
>> - ofproto-dpif-upcall: Use last known stats ukey stats on revalidate missed 
>> dp flows.
>
> Did a lot of tests with this patch applied, but as mentioned it does need all 
> four patches mentioned above applied first.
>
> Acked-by: Eelco Chaudron <[email protected]>

Now that all the dependent patches have been applied and backported to 2.17, 
can we have another look at this patch?

Thanks,

Eelco

>>  ofproto/ofproto-dpif-upcall.c | 8 ++------
>>  1 file changed, 2 insertions(+), 6 deletions(-)
>>
>> diff --git a/ofproto/ofproto-dpif-upcall.c b/ofproto/ofproto-dpif-upcall.c
>> index ad9635496..9117a1aef 100644
>> --- a/ofproto/ofproto-dpif-upcall.c
>> +++ b/ofproto/ofproto-dpif-upcall.c
>> @@ -2334,12 +2334,8 @@ revalidate_ukey(struct udpif *udpif, struct udpif_key 
>> *ukey,
>>
>>      push.used = stats->used;
>>      push.tcp_flags = stats->tcp_flags;
>> -    push.n_packets = (stats->n_packets > ukey->stats.n_packets
>> -                      ? stats->n_packets - ukey->stats.n_packets
>> -                      : 0);
>> -    push.n_bytes = (stats->n_bytes > ukey->stats.n_bytes
>> -                    ? stats->n_bytes - ukey->stats.n_bytes
>> -                    : 0);
>> +    push.n_packets = stats->n_packets - ukey->stats.n_packets;
>> +    push.n_bytes = stats->n_bytes - ukey->stats.n_bytes;
>>
>>      if (need_revalidate) {
>>          if (should_revalidate(udpif, push.n_packets, ukey->stats.used)) {
>> --
>> 2.38.1

_______________________________________________
dev mailing list
[email protected]
https://mail.openvswitch.org/mailman/listinfo/ovs-dev

Reply via email to