David Hildenbrand <david@xxxxxxxxxx> writes: > On 08.08.23 19:17, Andrew Morton wrote: >> On Tue, 8 Aug 2023 10:08:58 -0700 Stefan Roesch <shr@xxxxxxxxxxxx> wrote: >> >>> With madvise and prctl KSM can be enabled for different VMA's. Once it >>> is enabled we can query how effective KSM is overall. However we cannot >>> easily query if an individual VMA benefits from KSM. >>> >>> This commit adds a KSM section to the /prod/<pid>/smaps file. It reports >>> how many of the pages are KSM pages. >>> >>> Here is a typical output: >>> >>> 7f420a000000-7f421a000000 rw-p 00000000 00:00 0 >>> Size: 262144 kB >>> KernelPageSize: 4 kB >>> MMUPageSize: 4 kB >>> Rss: 51212 kB >>> Pss: 8276 kB >>> Shared_Clean: 172 kB >>> Shared_Dirty: 42996 kB >>> Private_Clean: 196 kB >>> Private_Dirty: 7848 kB >>> Referenced: 15388 kB >>> Anonymous: 51212 kB >>> KSM: 41376 kB >>> LazyFree: 0 kB >>> AnonHugePages: 0 kB >>> ShmemPmdMapped: 0 kB >>> FilePmdMapped: 0 kB >>> Shared_Hugetlb: 0 kB >>> Private_Hugetlb: 0 kB >>> Swap: 202016 kB >>> SwapPss: 3882 kB >>> Locked: 0 kB >>> THPeligible: 0 >>> ProtectionKey: 0 >>> ksm_state: 0 >>> ksm_skip_base: 0 >>> ksm_skip_count: 0 >>> VmFlags: rd wr mr mw me nr mg anon >>> >>> This information also helps with the following workflow: >>> - First enable KSM for all the VMA's of a process with prctl. >>> - Then analyze with the above smaps report which VMA's benefit the most >>> - Change the application (if possible) to add the corresponding madvise >>> calls for the VMA's that benefit the most >> smaps is documented in Documentation/filesystems/proc.rst, please. >> (And it looks a bit out of date). >> Did you consider adding this info to smaps_rollup as well? > > It would be great to resend that patch to linux-mm + kernel. Otherwise I'll have > to do some digging / downloading from linux-fsdevel ;) I'll cc linux-mm + kernel on the next version.