Re: [PATCH] proc: meminfo: Replace kB with KiB in output

From: Alexandru Juncu
Date: Mon Apr 11 2016 - 02:35:54 EST


On 11 April 2016 at 08:12, Michal Hocko <mhocko@xxxxxxxxxx> wrote:
> On Sun 10-04-16 17:23:11, Alexandru Juncu wrote:
>> Current values are based on multiples of 1024 (powers of 2)
>> which means that the values in meminfo are not kilobytes
>> (1000 bytes) but kibibytes (1024 bytes). The correct
>> prefix for that would be 'Ki' so the output should be 'KiB'.
>
> Does the difference actually matters so much that we should change a
> user visible format of a file? Some users might not ready to changes
> (say sombody did sed 's@.*:[[:space:]]*\([0-9]*\) kB@\1@' to get values.
> This change would break it which is something we try to prevent as much
> as possible.
>
> So I do not think this all is worth the potential troubles. There are
> probably other places where we present kB while we in fact think kiB.

Isn't it at least worth clearly specifying this in the documentation
(maybe also comment in code)?

>
>> Signed-off-by: Alexandru Juncu <alexj@xxxxxxxxx>
>> ---
>> fs/proc/meminfo.c | 90 +++++++++++++++++++++++++++----------------------------
>> 1 file changed, 45 insertions(+), 45 deletions(-)
>>
>> diff --git a/fs/proc/meminfo.c b/fs/proc/meminfo.c
>> index 8372046..5f0015e 100644
>> --- a/fs/proc/meminfo.c
>> +++ b/fs/proc/meminfo.c
>> @@ -33,7 +33,7 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>> int lru;
>>
>> /*
>> - * display in kilobytes.
>> + * display in kibibytes.
>> */
>> #define K(x) ((x) << (PAGE_SHIFT - 10))
>> si_meminfo(&i);
>> @@ -54,61 +54,61 @@ static int meminfo_proc_show(struct seq_file *m, void *v)
>> * Tagged format, for easy grepping and expansion.
>> */
>> seq_printf(m,
>> - "MemTotal: %8lu kB\n"
>> - "MemFree: %8lu kB\n"
>> - "MemAvailable: %8lu kB\n"
>> - "Buffers: %8lu kB\n"
>> - "Cached: %8lu kB\n"
>> - "SwapCached: %8lu kB\n"
>> - "Active: %8lu kB\n"
>> - "Inactive: %8lu kB\n"
>> - "Active(anon): %8lu kB\n"
>> - "Inactive(anon): %8lu kB\n"
>> - "Active(file): %8lu kB\n"
>> - "Inactive(file): %8lu kB\n"
>> - "Unevictable: %8lu kB\n"
>> - "Mlocked: %8lu kB\n"
>> + "MemTotal: %8lu KiB\n"
>> + "MemFree: %8lu KiB\n"
>> + "MemAvailable: %8lu KiB\n"
>> + "Buffers: %8lu KiB\n"
>> + "Cached: %8lu KiB\n"
>> + "SwapCached: %8lu KiB\n"
>> + "Active: %8lu KiB\n"
>> + "Inactive: %8lu KiB\n"
>> + "Active(anon): %8lu KiB\n"
>> + "Inactive(anon): %8lu KiB\n"
>> + "Active(file): %8lu KiB\n"
>> + "Inactive(file): %8lu KiB\n"
>> + "Unevictable: %8lu KiB\n"
>> + "Mlocked: %8lu KiB\n"
>> #ifdef CONFIG_HIGHMEM
>> - "HighTotal: %8lu kB\n"
>> - "HighFree: %8lu kB\n"
>> - "LowTotal: %8lu kB\n"
>> - "LowFree: %8lu kB\n"
>> + "HighTotal: %8lu KiB\n"
>> + "HighFree: %8lu KiB\n"
>> + "LowTotal: %8lu KiB\n"
>> + "LowFree: %8lu KiB\n"
>> #endif
>> #ifndef CONFIG_MMU
>> - "MmapCopy: %8lu kB\n"
>> + "MmapCopy: %8lu KiB\n"
>> #endif
>> - "SwapTotal: %8lu kB\n"
>> - "SwapFree: %8lu kB\n"
>> - "Dirty: %8lu kB\n"
>> - "Writeback: %8lu kB\n"
>> - "AnonPages: %8lu kB\n"
>> - "Mapped: %8lu kB\n"
>> - "Shmem: %8lu kB\n"
>> - "Slab: %8lu kB\n"
>> - "SReclaimable: %8lu kB\n"
>> - "SUnreclaim: %8lu kB\n"
>> - "KernelStack: %8lu kB\n"
>> - "PageTables: %8lu kB\n"
>> + "SwapTotal: %8lu KiB\n"
>> + "SwapFree: %8lu KiB\n"
>> + "Dirty: %8lu KiB\n"
>> + "Writeback: %8lu KiB\n"
>> + "AnonPages: %8lu KiB\n"
>> + "Mapped: %8lu KiB\n"
>> + "Shmem: %8lu KiB\n"
>> + "Slab: %8lu KiB\n"
>> + "SReclaimable: %8lu KiB\n"
>> + "SUnreclaim: %8lu KiB\n"
>> + "KernelStack: %8lu KiB\n"
>> + "PageTables: %8lu KiB\n"
>> #ifdef CONFIG_QUICKLIST
>> - "Quicklists: %8lu kB\n"
>> + "Quicklists: %8lu KiB\n"
>> #endif
>> - "NFS_Unstable: %8lu kB\n"
>> - "Bounce: %8lu kB\n"
>> - "WritebackTmp: %8lu kB\n"
>> - "CommitLimit: %8lu kB\n"
>> - "Committed_AS: %8lu kB\n"
>> - "VmallocTotal: %8lu kB\n"
>> - "VmallocUsed: %8lu kB\n"
>> - "VmallocChunk: %8lu kB\n"
>> + "NFS_Unstable: %8lu KiB\n"
>> + "Bounce: %8lu KiB\n"
>> + "WritebackTmp: %8lu KiB\n"
>> + "CommitLimit: %8lu KiB\n"
>> + "Committed_AS: %8lu KiB\n"
>> + "VmallocTotal: %8lu KiB\n"
>> + "VmallocUsed: %8lu KiB\n"
>> + "VmallocChunk: %8lu KiB\n"
>> #ifdef CONFIG_MEMORY_FAILURE
>> - "HardwareCorrupted: %5lu kB\n"
>> + "HardwareCorrupted: %5lu KiB\n"
>> #endif
>> #ifdef CONFIG_TRANSPARENT_HUGEPAGE
>> - "AnonHugePages: %8lu kB\n"
>> + "AnonHugePages: %8lu KiB\n"
>> #endif
>> #ifdef CONFIG_CMA
>> - "CmaTotal: %8lu kB\n"
>> - "CmaFree: %8lu kB\n"
>> + "CmaTotal: %8lu KiB\n"
>> + "CmaFree: %8lu KiB\n"
>> #endif
>> ,
>> K(i.totalram),
>> --
>> 2.5.5
>>
>
> --
> Michal Hocko
> SUSE Labs