Re: [PATCH 2/4] mm, procfs: account for shmem swap in /proc/pid/smaps

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 11.03.2015 18:26, Jerome Marchand wrote:
On 03/11/2015 04:03 PM, Konstantin Khlebnikov wrote:
On 11.03.2015 15:30, Konstantin Khlebnikov wrote:
On Thu, Feb 26, 2015 at 4:51 PM, Vlastimil Babka <vbabka@xxxxxxx> wrote:
Currently, /proc/pid/smaps will always show "Swap: 0 kB" for
shmem-backed
mappings, even if the mapped portion does contain pages that were
swapped out.
This is because unlike private anonymous mappings, shmem does not
change pte
to swap entry, but pte_none when swapping the page out. In the smaps
page
walk, such page thus looks like it was never faulted in.

Maybe just add count of swap entries allocated by mapped shmem into
swap usage of this vma? That's isn't exactly correct for partially
mapped shmem but this is something weird anyway.

Something like that (see patch in attachment)


-8<---

diff --git a/mm/shmem.c b/mm/shmem.c
index cf2d0ca010bc..492f78f51fc2 100644
--- a/mm/shmem.c
+++ b/mm/shmem.c
@@ -1363,6 +1363,13 @@ static struct mempolicy *shmem_get_policy(struct
vm_area_struct *vma,
  }
  #endif

+static unsigned long shmem_get_swap_usage(struct vm_area_struct *vma)
+{
+	struct inode *inode = file_inode(vma->vm_file);
+
+	return SHMEM_I(inode)->swapped;
+}
+
  int shmem_lock(struct file *file, int lock, struct user_struct *user)
  {
  	struct inode *inode = file_inode(file);

-8<---

That will not work for shared anonymous mapping since they all share the
same vm_file (/dev/zero).

Nope. They have different files and inodes.
They're just called "/dev/zero (deleted)".


Jerome



--
Konstantin

--
To unsubscribe, send a message with 'unsubscribe linux-mm' in
the body to majordomo@xxxxxxxxx.  For more info on Linux MM,
see: http://www.linux-mm.org/ .
Don't email: <a href=mailto:"dont@xxxxxxxxx";> email@xxxxxxxxx </a>




[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [ECOS]     [Asterisk Internet PBX]     [Linux API]