Applied, thanks!

On Sat, Jun 22, 2019 at 3:43 AM Lukas Rusak <[email protected]> wrote:
>
> Is someone available to acknowledge this? Thanks!
>
> On Mon, Jun 10, 2019 at 14:35 Lukas Rusak <[email protected]> wrote:
>>
>> I noticed that the 'used' values from busybox free and
>> procps-ng free differed so I looked into why. It turns
>> out that procps-ng uses the "SReclaimable" value as
>> part of the cached value.
>>
>> This was changed in
>> procps-ng commit 05d751c4f076a2f0118b914c5e51cfbb4762ad8e
>>
>> ---
>>  procps/free.c | 22 +++++++++++++---------
>>  1 file changed, 13 insertions(+), 9 deletions(-)
>>
>> diff --git a/procps/free.c b/procps/free.c
>> index 3acfc4072..cf2e81a60 100644
>> --- a/procps/free.c
>> +++ b/procps/free.c
>> @@ -53,27 +53,30 @@ static unsigned long long scale(struct globals *g, 
>> unsigned long d)
>>  }
>>
>>  /* NOINLINE reduces main() stack usage, which makes code smaller (on x86 at 
>> least) */
>> -static NOINLINE unsigned int parse_meminfo(unsigned long *cached_kb, 
>> unsigned long *available_kb)
>> +static NOINLINE unsigned int parse_meminfo(unsigned long *cached_kb, 
>> unsigned long *available_kb, unsigned long *reclaimable_kb)
>>  {
>>         char buf[60]; /* actual lines we expect are ~30 chars or less */
>>         FILE *fp;
>> -       int seen_cached_and_available;
>> +       int seen_cached_and_available_and_reclaimable;
>>
>>         fp = xfopen_for_read("/proc/meminfo");
>> -       *cached_kb = *available_kb = 0;
>> -       seen_cached_and_available = 2;
>> +       *cached_kb = *available_kb = *reclaimable_kb = 0;
>> +       seen_cached_and_available_and_reclaimable = 3;
>>         while (fgets(buf, sizeof(buf), fp)) {
>>                 if (sscanf(buf, "Cached: %lu %*s\n", cached_kb) == 1)
>> -                       if (--seen_cached_and_available == 0)
>> +                       if (--seen_cached_and_available_and_reclaimable == 0)
>>                                 break;
>>                 if (sscanf(buf, "MemAvailable: %lu %*s\n", available_kb) == 
>> 1)
>> -                       if (--seen_cached_and_available == 0)
>> +                       if (--seen_cached_and_available_and_reclaimable == 0)
>> +                               break;
>> +               if (sscanf(buf, "SReclaimable: %lu %*s\n", reclaimable_kb) 
>> == 1)
>> +                       if (--seen_cached_and_available_and_reclaimable == 0)
>>                                 break;
>>         }
>>         /* Have to close because of NOFORK */
>>         fclose(fp);
>>
>> -       return seen_cached_and_available == 0;
>> +       return seen_cached_and_available_and_reclaimable == 0;
>>  }
>>
>>  int free_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
>> @@ -82,7 +85,7 @@ int free_main(int argc UNUSED_PARAM, char **argv 
>> IF_NOT_DESKTOP(UNUSED_PARAM))
>>         struct globals G;
>>         struct sysinfo info;
>>         unsigned long long cached, cached_plus_free, available;
>> -       unsigned long cached_kb, available_kb;
>> +       unsigned long cached_kb, available_kb, reclaimable_kb;
>>         int seen_available;
>>
>>  #if ENABLE_DESKTOP
>> @@ -118,10 +121,11 @@ int free_main(int argc UNUSED_PARAM, char **argv 
>> IF_NOT_DESKTOP(UNUSED_PARAM))
>>         /* Kernels prior to 2.4.x will return info.mem_unit==0, so cope... */
>>         G.mem_unit = (info.mem_unit ? info.mem_unit : 1);
>>         /* Extract cached and memavailable from /proc/meminfo and convert to 
>> mem_units */
>> -       seen_available = parse_meminfo(&cached_kb, &available_kb);
>> +       seen_available = parse_meminfo(&cached_kb, &available_kb, 
>> &reclaimable_kb);
>>         available = ((unsigned long long) available_kb * 1024) / G.mem_unit;
>>         cached = ((unsigned long long) cached_kb * 1024) / G.mem_unit;
>>         cached += info.bufferram;
>> +       cached += ((unsigned long long) reclaimable_kb * 1024) / G.mem_unit;
>>         cached_plus_free = cached + info.freeram;
>>
>>  #define FIELDS_6 "%12llu %11llu %11llu %11llu %11llu %11llu\n"
>> --
>> 2.21.0
>>
> _______________________________________________
> busybox mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to