linux-fsdevel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status
@ 2019-04-25 20:57 Joel Savitz
  2019-04-25 21:00 ` Rafael Aquini
                   ` (2 more replies)
  0 siblings, 3 replies; 4+ messages in thread
From: Joel Savitz @ 2019-04-25 20:57 UTC (permalink / raw)
  To: linux-kernel
  Cc: Joel Savitz, Alexey Dobriyan, Andrew Morton, Vlastimil Babka,
	Aneesh Kumar K.V, Michael Ellerman, Ram Pai, Andrea Arcangeli,
	Huang Ying, Sandeep Patil, Rafael Aquini, linux-fsdevel

Currently, there is no fast mechanism to get the virtual memory size of
the current process from userspace. This information is available to the
user through several means, one being a linear search of the entire address
space. This is the method used by a component of the libhugetlb kernel
test, and using the mechanism proposed in this patch, the time complexity
of that test would be upgraded to constant time from linear time. This is
especially relevant on 64-bit architechtures where a linear search of
the address space could take an absurd amount of time. Using this
mechanism, the modification to the test component would be portable
across all architechtures.

Signed-off-by: Joel Savitz <jsavitz@redhat.com>
---
 fs/proc/task_mmu.c | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
index 92a91e7816d8..f64b9a949624 100644
--- a/fs/proc/task_mmu.c
+++ b/fs/proc/task_mmu.c
@@ -74,7 +74,10 @@ 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_puts(m, " kB\n");
+	SEQ_PUT_DEC(" kB\nVmSwap:\t", swap);
+	seq_put_decimal_ull_width(m,
+		    " kB\nVmTaskSize:\t", TASK_SIZE >> 10, 8);
+	seq_puts(m, " kB\n");
 	hugetlb_report_usage(m, mm);
 }
 #undef SEQ_PUT_DEC
-- 
2.18.1


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status
  2019-04-25 20:57 [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status Joel Savitz
@ 2019-04-25 21:00 ` Rafael Aquini
  2019-04-25 22:01 ` Alexey Dobriyan
  2019-04-25 22:06 ` Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: Rafael Aquini @ 2019-04-25 21:00 UTC (permalink / raw)
  To: Joel Savitz
  Cc: linux-kernel, Alexey Dobriyan, Andrew Morton, Vlastimil Babka,
	Aneesh Kumar K.V, Michael Ellerman, Ram Pai, Andrea Arcangeli,
	Huang Ying, Sandeep Patil, linux-fsdevel

On Thu, Apr 25, 2019 at 04:57:47PM -0400, Joel Savitz wrote:
> Currently, there is no fast mechanism to get the virtual memory size of
> the current process from userspace. This information is available to the
> user through several means, one being a linear search of the entire address
> space. This is the method used by a component of the libhugetlb kernel
> test, and using the mechanism proposed in this patch, the time complexity
> of that test would be upgraded to constant time from linear time. This is
> especially relevant on 64-bit architechtures where a linear search of
> the address space could take an absurd amount of time. Using this
> mechanism, the modification to the test component would be portable
> across all architechtures.
> 
> Signed-off-by: Joel Savitz <jsavitz@redhat.com>
> ---
>  fs/proc/task_mmu.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)
> 
> diff --git a/fs/proc/task_mmu.c b/fs/proc/task_mmu.c
> index 92a91e7816d8..f64b9a949624 100644
> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -74,7 +74,10 @@ 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_puts(m, " kB\n");
> +	SEQ_PUT_DEC(" kB\nVmSwap:\t", swap);
> +	seq_put_decimal_ull_width(m,
> +		    " kB\nVmTaskSize:\t", TASK_SIZE >> 10, 8);
> +	seq_puts(m, " kB\n");
>  	hugetlb_report_usage(m, mm);
>  }
>  #undef SEQ_PUT_DEC
> -- 
> 2.18.1
> 
Acked-by: Rafael Aquini <aquini@redhat.com>

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status
  2019-04-25 20:57 [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status Joel Savitz
  2019-04-25 21:00 ` Rafael Aquini
@ 2019-04-25 22:01 ` Alexey Dobriyan
  2019-04-25 22:06 ` Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: Alexey Dobriyan @ 2019-04-25 22:01 UTC (permalink / raw)
  To: Joel Savitz
  Cc: linux-kernel, Andrew Morton, Vlastimil Babka, Aneesh Kumar K.V,
	Michael Ellerman, Ram Pai, Andrea Arcangeli, Huang Ying,
	Sandeep Patil, Rafael Aquini, linux-fsdevel

On Thu, Apr 25, 2019 at 04:57:47PM -0400, Joel Savitz wrote:
> Currently, there is no fast mechanism to get the virtual memory size of
> the current process from userspace.

> --- a/fs/proc/task_mmu.c
> +++ b/fs/proc/task_mmu.c
> @@ -74,7 +74,10 @@ 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_puts(m, " kB\n");
> +	SEQ_PUT_DEC(" kB\nVmSwap:\t", swap);
> +	seq_put_decimal_ull_width(m,
> +		    " kB\nVmTaskSize:\t", TASK_SIZE >> 10, 8);
> +	seq_puts(m, " kB\n");

TASK_SIZE accesses "current", while this function accesses any ->mm.

Can you turn this into prctl(2) aka "current" refugee camp?

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status
  2019-04-25 20:57 [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status Joel Savitz
  2019-04-25 21:00 ` Rafael Aquini
  2019-04-25 22:01 ` Alexey Dobriyan
@ 2019-04-25 22:06 ` Andrew Morton
  2 siblings, 0 replies; 4+ messages in thread
From: Andrew Morton @ 2019-04-25 22:06 UTC (permalink / raw)
  To: Joel Savitz
  Cc: linux-kernel, Alexey Dobriyan, Vlastimil Babka, Aneesh Kumar K.V,
	Michael Ellerman, Ram Pai, Andrea Arcangeli, Huang Ying,
	Sandeep Patil, Rafael Aquini, linux-fsdevel

On Thu, 25 Apr 2019 16:57:47 -0400 Joel Savitz <jsavitz@redhat.com> wrote:

> Currently, there is no fast mechanism to get the virtual memory size of
> the current process from userspace. This information is available to the
> user through several means, one being a linear search of the entire address
> space. This is the method used by a component of the libhugetlb kernel
> test, and using the mechanism proposed in this patch, the time complexity
> of that test would be upgraded to constant time from linear time. This is
> especially relevant on 64-bit architechtures where a linear search of
> the address space could take an absurd amount of time. Using this
> mechanism, the modification to the test component would be portable
> across all architechtures.

Please include all details on the observed performance improvements.

>  fs/proc/task_mmu.c | 5 ++++-
>  1 file changed, 4 insertions(+), 1 deletion(-)

Please update Documentation/filesystems/proc.txt.



^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2019-04-25 22:06 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-04-25 20:57 [PATCH] fs/proc: add VmTaskSize field to /proc/$$/status Joel Savitz
2019-04-25 21:00 ` Rafael Aquini
2019-04-25 22:01 ` Alexey Dobriyan
2019-04-25 22:06 ` Andrew Morton

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).