On Thu, Oct 10, 2024 at 8:07 PM Tengda Wu <wutengda@xxxxxxxxxxxxxxx> wrote: [...] > >>>> > >>>> +struct bperf_filter_value { > >>>> + __u32 accum_key; > >>>> + __u8 exited; > >>>> +}; > >>> nit: > >>> Can we use a special value of accum_key to replace exited==1 > >>> case? > >> > >> I'm not sure. I guess it still needs to use the accum_key to save the > >> final value when exited = 1. > > > > In theory, it is possible. The accum_key is currently only used to index value > > in accum_readings map, so if the task is not being counted, the accum_key can > > be set to an special value. > > > > Due to accum_key is of u32 type, there are two special values to choose from: 0 > > or max_entries+1. I think the latter, max_entries+1, may be more suitable because > > it can avoid memory waste in the accum_readings map and does not require too > > many changes to bpf_counter. > > > > Sorry, I was wrong. As Namhyung said, 'accum_readings[accum_key]' saves the > last count of the task when it exits. If accum_key is set to a special value > at this time, the count will be lost. > > So exited==1 is necessary, we can not use a special value of accum_key to > replace it. Got it. Thanks for the explanation. Song