From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-0.3 required=3.0 tests=DKIM_ADSP_CUSTOM_MED, DKIM_INVALID,DKIM_SIGNED,FREEMAIL_FORGED_FROMDOMAIN,FREEMAIL_FROM, HEADER_FROM_DIFFERENT_DOMAINS,MAILING_LIST_MULTI,SPF_HELO_NONE,SPF_PASS autolearn=no autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id B748CC433DF for ; Tue, 19 May 2020 17:05:06 +0000 (UTC) Received: from shelob.surriel.com (shelob.surriel.com [96.67.55.147]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 7280A2075F for ; Tue, 19 May 2020 17:05:06 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=fail reason="signature verification failed" (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="r1SW0/5V" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 7280A2075F Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=kernelnewbies-bounces@kernelnewbies.org Received: from localhost ([::1] helo=shelob.surriel.com) by shelob.surriel.com with esmtp (Exim 4.93) (envelope-from ) id 1jb5fL-00086I-Ua; Tue, 19 May 2020 13:04:31 -0400 Received: from mail-vs1-xe41.google.com ([2607:f8b0:4864:20::e41]) by shelob.surriel.com with esmtps (TLS1.2) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93) (envelope-from ) id 1jb5fJ-00086B-GE for kernelnewbies@kernelnewbies.org; Tue, 19 May 2020 13:04:29 -0400 Received: by mail-vs1-xe41.google.com with SMTP id y13so8351784vsk.8 for ; Tue, 19 May 2020 10:04:28 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to; bh=POmRUUk7Xuz74mursmskmK0WHU+iSvBpkntW/uXx760=; b=r1SW0/5VYcPeXHaW+kHiMiPeHJOytjS4tXvuPT7ywRO2AtMamwVB0p9rri2PFZRCmO HyGErSVAyI3W+HSahgPhR7lRS+ENbQ5nU2EWbWEjLWVsKpE4P2XEgMoqppdSTdCtQfh6 3/+P+S0GTiHoLWlqnmUkUmMCUfSeYvQqkPhpKeL6T/28XwPZgExw2DYw/ipMpG+Z5cAY Sbgc46XxfLWivNK/iSWUDo+i7lWr7FpLa/frfApuJW0dz2Uz+/e6XPIY9XmX/gjX8h2o 3jqlXbQNpU/cG7KvOr1FRELMDm1hLW6wkXcSeZQBdx7UcnjzrQFZtJXIPT9Im3/ZY4BG sW6Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to; bh=POmRUUk7Xuz74mursmskmK0WHU+iSvBpkntW/uXx760=; b=KBK8Pwb8lwcErfD/UHbL2T3LlgEH/+tmzh88Hyubyh6Kxazc2i8b3BDyo882Ycd7rS dVWQSJ2jjlTz0YdT2YVu2FOr4LwInlGTleNLNccxe1AkmpRPGJzdclI568O6mpzPmc3w vBuGa+eoeAGJIhjBP6s3eegm8uYOQX/mQWisLEErdv+CWGV6Hv9YB3gW1XlQNq5jwHkS NVlakCZsE4YwYIo4MI57VCcGSmQiZt5sxnR24Jhgb2cs74brgz7U1N0Jg/kTuyIisZ1f 7jAcDaJLWEAmxFDBNiaLABc2CB8xx1Juh1jzifX93yFu/+B/br+80msEHy3nc49pTmmf fN/g== X-Gm-Message-State: AOAM533mfhNSek6pV1ET/KvUXdVlutlFa4fcZzJmwVt7/a9ombXHMIPB V1ehdzNf4iUfeoCT887GD13eevic9ANbEagbCJl6davx X-Google-Smtp-Source: ABdhPJx07rV70v552E6BS0y7D4LFR7arriZsNB5VGzacmgZPNoSE0sFpEQbvCjTokppNtsP2gXELfNca01YD4xU1NyM= X-Received: by 2002:a67:ee8f:: with SMTP id n15mr83074vsp.196.1589907807271; Tue, 19 May 2020 10:03:27 -0700 (PDT) MIME-Version: 1.0 References: In-Reply-To: From: Pintu Agarwal Date: Tue, 19 May 2020 22:33:15 +0530 Message-ID: Subject: Re: Estimating total memory usage in any Linux system To: Kernelnewbies , linux-mm X-BeenThere: kernelnewbies@kernelnewbies.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Learn about the Linux kernel List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: kernelnewbies-bounces@kernelnewbies.org On Mon, 18 May 2020 at 23:27, Pintu Agarwal wrote: > > Hi, > > I was just trying to manually calculate the total memory available in > a system to match up the MemTotal shown in /proc/meminfo > I know "free -m" command will give the vary high level usage, but I > wanted to breakdown the MemTotal numbers to see usage in each > category. > > I am looking for a common formula that should match on almost all systems. > So, I came up with below fields from meminfo to closely match the total. > ~Total = {MemFree + Active + Inactive + Shmem + Mapped + Slab + > KernelStack + PageTables + (init freed) + (Boot Diff) + (low > watermarks)} > > But I am not sure if these fields are correct at least for arm32 system. > In some boards I could able to match up these figures, but some not. > > So I have some doubts: > * Is "Mapped" (NR_MAPPED_PAGES) already part of Active pages ? > * Is Kernel allocation (alloc_pages, etc.) accounted somewhere ? Is it > part of Anon pages ? > * What about vmalloc / ioremap pages ? Do we also need to consider VmallocUsed ? > ==> In my opinion vmalloc internally used kmalloc and page tables, so > I guess it should be already part of Slab or PageTables ?? > > Below are some data taken from a small embedded arm32 device with 512MB RAM: > Sorry, I forgot to mention the kernel version. Here it is 3.18 Kernel > Kernel Boot Logs: > Memory: 99244K/254976K available (10720K kernel code, 1336K rwdata, > 4792K rodata, 400K init, 1602K bss, 135252K reserved, 20480K > cma-reserved) > Total = 99244 + 400 (init) + 20480 (cma) = 120124 > Boot Diff = 121204 - 120124 => 1080 kB > > MemTotal: 121204 kB > MemFree: 2540 kB > MemAvailable: 51924 kB > Buffers: 0 kB > Cached: 47492 kB > SwapCached: 0 kB > Active: 42604 kB > Inactive: 24308 kB > Active(anon): 19476 kB > Inactive(anon): 92 kB > Active(file): 23128 kB > Inactive(file): 24216 kB > Unevictable: 0 kB > Mlocked: 0 kB > SwapTotal: 0 kB > SwapFree: 0 kB > Dirty: 8 kB > Writeback: 0 kB > AnonPages: 19452 kB > Mapped: 12644 kB > Shmem: 148 kB > Slab: 27560 kB > SReclaimable: 7224 kB > SUnreclaim: 20336 kB > KernelStack: 3104 kB > PageTables: 1896 kB > NFS_Unstable: 0 kB > Bounce: 0 kB > WritebackTmp: 0 kB > CommitLimit: 60600 kB > Committed_AS: 1576740 kB > VmallocTotal: 777216 kB > VmallocUsed: 53696 kB > VmallocChunk: 689148 kB > -------------------- > > These are my calculations from the above fields. > --------------------- > MemFree 2540 > Active 42604 > Inactive 24308 > Mapped 12644 > Slab 27560 > KernelStack 3104 > PageTables 1896 > Shmem 148 > init freed 400 > Diff from boot total 1080 > min_free_kbytes 1384 > user_reserve_kbytes 3537 > My Total ==> 121205 (add all the above) > > As you can see "My Total" closely matches with the MemTotal from /proc/meminfo > > But on some systems it does not match. > So, I wanted to understand if there is something wrong in my > calculation, or there is something wrong in the system itself (like > leaks etc,) > > Note: I don't want to use any tools or utilize for these, but I wanted > to manually understand it. > > I am also trying to explore every vm counter that populates these fields. > > But if you have any other opinion about it please let me know. > > > Thanks, > Pintu _______________________________________________ Kernelnewbies mailing list Kernelnewbies@kernelnewbies.org https://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies