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.6 required=3.0 tests=DKIM_SIGNED,DKIM_VALID, DKIM_VALID_AU,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 739B7C433E1 for ; Mon, 18 May 2020 17:57:48 +0000 (UTC) Received: from kanga.kvack.org (kanga.kvack.org [205.233.56.17]) by mail.kernel.org (Postfix) with ESMTP id 1FB0320715 for ; Mon, 18 May 2020 17:57:47 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="CU0fUgRI" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 1FB0320715 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=gmail.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=owner-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix) id 66C15900003; Mon, 18 May 2020 13:57:47 -0400 (EDT) Received: by kanga.kvack.org (Postfix, from userid 40) id 61C4F900002; Mon, 18 May 2020 13:57:47 -0400 (EDT) X-Delivered-To: int-list-linux-mm@kvack.org Received: by kanga.kvack.org (Postfix, from userid 63042) id 53156900003; Mon, 18 May 2020 13:57:47 -0400 (EDT) X-Delivered-To: linux-mm@kvack.org Received: from forelay.hostedemail.com (smtprelay0143.hostedemail.com [216.40.44.143]) by kanga.kvack.org (Postfix) with ESMTP id 3C581900002 for ; Mon, 18 May 2020 13:57:47 -0400 (EDT) Received: from smtpin04.hostedemail.com (10.5.19.251.rfc1918.com [10.5.19.251]) by forelay03.hostedemail.com (Postfix) with ESMTP id ECB0B824556B for ; Mon, 18 May 2020 17:57:46 +0000 (UTC) X-FDA: 76830597732.04.camp28_6103f6a179a0c X-HE-Tag: camp28_6103f6a179a0c X-Filterd-Recvd-Size: 5344 Received: from mail-vs1-f66.google.com (mail-vs1-f66.google.com [209.85.217.66]) by imf43.hostedemail.com (Postfix) with ESMTP for ; Mon, 18 May 2020 17:57:46 +0000 (UTC) Received: by mail-vs1-f66.google.com with SMTP id y13so6141363vsk.8 for ; Mon, 18 May 2020 10:57:46 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=bSRnBxLCr/qIq/O89PX+kqmAZQv6JdU+Wr8UVmVYtQA=; b=CU0fUgRI1R/rsHN6QUZ+H36vT3pDtM25TG+ueaXjRnYZfNPp4lvTkHmXQUkismTgck Pc9UHW2iq7UEOe9RoXF1V+s5eCObRJTyA/3QPvITM0C0GR/8Zwa9QjOyNmEX3Xhk/UVm Dl9zadUhRlCBiivrjUAkrpLz3+bIFxhj2JBl276TvnLuAhcmMXn72rhBSALWWBocaHXG VAlZt7vN2aVlVFxtfeZ0KrMpfXslUeNCvgVTckWC6obF9y8/mtCPKWWwYLcTPiaV7Hui jISA2P0verRA0fCqhq57TGMdZIIFaza2/36N4dUJrwPhNy0phdFjcwQRqSzUxDi8QK4l Nh+A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=bSRnBxLCr/qIq/O89PX+kqmAZQv6JdU+Wr8UVmVYtQA=; b=Pqv7M5OaNGQklxHiDpQaJuOfC2y/fkr7XrFp1l/biXs+3yhQyIUtZiCC3UT2afW9WA rxZ5qUM/jq5oyo3hNfsmmq9paLOmTMnWRsWJlt1a8/dsZaRiNJ3plYcR5RS+tFzFbiqe ZCZsFiLuSL0EohJBFsE9+XiXWMkwDmC5YiWU6XDRQk7xq7D9GyqKyEkTk5Ph1aCY7GrG KafMIztOnMTmjpZ3TxiUwoYSKNsY0QdAOghbAskc6tY4b3JwPXPd0nAelUxxj9ryQ+fP fyq/K/CaOkOvnujh+V8Ch3pwNpyduy04ausEN5HkNeIyBKQ9MEW06bTFNMDNdrfTbFEJ QZ0A== X-Gm-Message-State: AOAM531aiDJqR2JdrJ3iv7VE8TMM8cOHqfaGAFwtVKoPdTJjbOM5FAiJ 0ik6GgcgR8CRppLNNyL3CFlqtSYfS4/ZYSPWGCbPTw4l X-Google-Smtp-Source: ABdhPJzDjuJEId9yeU/zhcDenHvp9Gc+LAbwZUquWEM/yTO+P/f7SGPgRWM11OEoCj9FD+6aTwGu8ytH2keq6meYp/c= X-Received: by 2002:a67:e884:: with SMTP id x4mr7902854vsn.106.1589824665557; Mon, 18 May 2020 10:57:45 -0700 (PDT) MIME-Version: 1.0 From: Pintu Agarwal Date: Mon, 18 May 2020 23:27:34 +0530 Message-ID: Subject: Estimating total memory usage in any Linux system To: Kernelnewbies , linux-mm Content-Type: text/plain; charset="UTF-8" X-Bogosity: Ham, tests=bogofilter, spamicity=0.000000, version=1.2.4 Sender: owner-linux-mm@kvack.org Precedence: bulk X-Loop: owner-majordomo@kvack.org List-ID: 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: 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