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@xxxxxxxxxx> --- Documentation/filesystems/proc.txt | 2 ++ fs/proc/task_mmu.c | 2 ++ 2 files changed, 4 insertions(+) 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); } -- 2.18.1