Message ID | 1560437690-13919-1-git-send-email-jsavitz@redhat.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [v4] fs/proc: add VmTaskSize field to /proc/$$/status | expand |
On Thu, 13 Jun 2019 10:54:50 -0400 Joel Savitz <jsavitz@redhat.com> wrote: > The kernel provides no architecture-independent mechanism to get the > size of the virtual address space of a task (userspace process) without > brute-force calculation. This patch allows a user to easily retrieve > this value via a new VmTaskSize entry in /proc/$$/status. Why is access to ->task_size required? Please fully describe the use case. > --- a/Documentation/filesystems/proc.txt > +++ b/Documentation/filesystems/proc.txt > @@ -187,6 +187,7 @@ read the file /proc/PID/status: > VmLib: 1412 kB > VmPTE: 20 kb > VmSwap: 0 kB > + VmTaskSize: 137438953468 kB > HugetlbPages: 0 kB > CoreDumping: 0 > THP_enabled: 1 > @@ -263,6 +264,7 @@ Table 1-2: Contents of the status files (as of 4.19) > VmPTE size of page table entries > VmSwap amount of swap used by anonymous private data > (shmem swap usage is not included) > + VmTaskSize size of task (userspace process) vm space This is rather vague. Is it the total amount of physical memory? The sum of all vma sizes, populated or otherwise? Something else?
The most immediate use case is the optimization of an internal test, but upon closer examination neither this patch nor the test itself turn out to be worth pursuing. Thank you for your time and constructive comments. Best, Joel Savitz On Thu, Jun 13, 2019 at 3:30 PM Andrew Morton <akpm@linux-foundation.org> wrote: > > On Thu, 13 Jun 2019 10:54:50 -0400 Joel Savitz <jsavitz@redhat.com> wrote: > > > The kernel provides no architecture-independent mechanism to get the > > size of the virtual address space of a task (userspace process) without > > brute-force calculation. This patch allows a user to easily retrieve > > this value via a new VmTaskSize entry in /proc/$$/status. > > Why is access to ->task_size required? Please fully describe the > use case. > > > --- a/Documentation/filesystems/proc.txt > > +++ b/Documentation/filesystems/proc.txt > > @@ -187,6 +187,7 @@ read the file /proc/PID/status: > > VmLib: 1412 kB > > VmPTE: 20 kb > > VmSwap: 0 kB > > + VmTaskSize: 137438953468 kB > > HugetlbPages: 0 kB > > CoreDumping: 0 > > THP_enabled: 1 > > @@ -263,6 +264,7 @@ Table 1-2: Contents of the status files (as of 4.19) > > VmPTE size of page table entries > > VmSwap amount of swap used by anonymous private data > > (shmem swap usage is not included) > > + VmTaskSize size of task (userspace process) vm space > > This is rather vague. Is it the total amount of physical memory? The > sum of all vma sizes, populated or otherwise? Something else? > >
diff --git a/Documentation/filesystems/proc.txt b/Documentation/filesystems/proc.txt index 66cad5c86171..1c6a912e3975 100644 --- a/Documentation/filesystems/proc.txt +++ b/Documentation/filesystems/proc.txt @@ -187,6 +187,7 @@ read the file /proc/PID/status: VmLib: 1412 kB VmPTE: 20 kb VmSwap: 0 kB + VmTaskSize: 137438953468 kB HugetlbPages: 0 kB CoreDumping: 0 THP_enabled: 1 @@ -263,6 +264,7 @@ Table 1-2: Contents of the status files (as of 4.19) VmPTE size of page table entries VmSwap amount of swap used by anonymous private data (shmem swap usage is not included) + VmTaskSize size of task (userspace process) vm space HugetlbPages size of hugetlb memory portions CoreDumping process's memory is currently being dumped (killing the process may lead to a corrupted core) diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c index 95ca1fe7283c..0af7081f7b19 100644 --- a/fs/proc/task_mmu.c +++ b/fs/proc/task_mmu.c @@ -74,6 +74,8 @@ void task_mem(struct seq_file *m, struct mm_struct *mm) seq_put_decimal_ull_width(m, " kB\nVmPTE:\t", mm_pgtables_bytes(mm) >> 10, 8); SEQ_PUT_DEC(" kB\nVmSwap:\t", swap); + seq_put_decimal_ull_width(m, + " kB\nVmTaskSize:\t", mm->task_size >> 10, 8); seq_puts(m, " kB\n"); hugetlb_report_usage(m, mm); }
The kernel provides no architecture-independent mechanism to get the size of the virtual address space of a task (userspace process) without brute-force calculation. This patch allows a user to easily retrieve this value via a new VmTaskSize entry in /proc/$$/status. Signed-off-by: Joel Savitz <jsavitz@redhat.com> --- Documentation/filesystems/proc.txt | 2 ++ fs/proc/task_mmu.c | 2 ++ 2 files changed, 4 insertions(+)