diff mbox

[v2,5/5] Numachip: use 2GB memory block size

Message ID 1413683152-31302-5-git-send-email-daniel@numascale.com (mailing list archive)
State New, archived
Headers show

Commit Message

Daniel J Blueman Oct. 19, 2014, 1:45 a.m. UTC
Use appropriate memory block size to reduce sysfs entry creation time
by 16x.

Boot-tested with the four permutations of X86_UV and X86_NUMACHIP.

Signed-off-by: Daniel J Blueman <daniel@numascale.com>
---
 arch/x86/mm/init_64.c | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

Comments

Ingo Molnar Oct. 19, 2014, 9:23 a.m. UTC | #1
* Daniel J Blueman <daniel@numascale.com> wrote:

> Use appropriate memory block size to reduce sysfs entry creation time
> by 16x.
> 
> Boot-tested with the four permutations of X86_UV and X86_NUMACHIP.
> 
> Signed-off-by: Daniel J Blueman <daniel@numascale.com>
> ---
>  arch/x86/mm/init_64.c | 7 ++++---
>  1 file changed, 4 insertions(+), 3 deletions(-)
> 
> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
> index 5621c47..22ea6de 100644
> --- a/arch/x86/mm/init_64.c
> +++ b/arch/x86/mm/init_64.c
> @@ -53,6 +53,7 @@
>  #include <asm/cacheflush.h>
>  #include <asm/init.h>
>  #include <asm/uv/uv.h>
> +#include <asm/numachip/numachip.h>
>  #include <asm/setup.h>
>  
>  #include "mm_internal.h"
> @@ -1235,9 +1236,9 @@ static unsigned long probe_memory_block_size(void)
>  	/* start from 2g */
>  	unsigned long bz = 1UL<<31;
>  
> -#ifdef CONFIG_X86_UV
> -	if (is_uv_system()) {
> -		printk(KERN_INFO "UV: memory block size 2GB\n");
> +#ifdef CONFIG_X86_64
> +	if (is_uv_system() || is_numachip_system()) {
> +		pr_info("Memory block size 2GB for large-SMP system\n");
>  		return 2UL * 1024 * 1024 * 1024;

It would be a lot cleaner and more robust to have a more 
intelligent decision here.

Is there a reliable indicator for large 'sysfs entry creation 
time', such as a lot of RAM present?

Also, it would be nice to list the pros/cons of this change, an 
advantage is reduced overhead - what are the disadvantages?

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Daniel J Blueman Oct. 20, 2014, 7:03 a.m. UTC | #2
On 19/10/2014 17:23, Ingo Molnar wrote:
>
> * Daniel J Blueman <daniel@numascale.com> wrote:
>
>> Use appropriate memory block size to reduce sysfs entry creation time
>> by 16x.
>>
>> Boot-tested with the four permutations of X86_UV and X86_NUMACHIP.
>>
>> Signed-off-by: Daniel J Blueman <daniel@numascale.com>
>> ---
>>   arch/x86/mm/init_64.c | 7 ++++---
>>   1 file changed, 4 insertions(+), 3 deletions(-)
>>
>> diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
>> index 5621c47..22ea6de 100644
>> --- a/arch/x86/mm/init_64.c
>> +++ b/arch/x86/mm/init_64.c
>> @@ -53,6 +53,7 @@
>>   #include <asm/cacheflush.h>
>>   #include <asm/init.h>
>>   #include <asm/uv/uv.h>
>> +#include <asm/numachip/numachip.h>
>>   #include <asm/setup.h>
>>
>>   #include "mm_internal.h"
>> @@ -1235,9 +1236,9 @@ static unsigned long probe_memory_block_size(void)
>>   	/* start from 2g */
>>   	unsigned long bz = 1UL<<31;
>>
>> -#ifdef CONFIG_X86_UV
>> -	if (is_uv_system()) {
>> -		printk(KERN_INFO "UV: memory block size 2GB\n");
>> +#ifdef CONFIG_X86_64
>> +	if (is_uv_system() || is_numachip_system()) {
>> +		pr_info("Memory block size 2GB for large-SMP system\n");
>>   		return 2UL * 1024 * 1024 * 1024;
>
> It would be a lot cleaner and more robust to have a more
> intelligent decision here.
>
> Is there a reliable indicator for large 'sysfs entry creation
> time', such as a lot of RAM present?

Yes, agreed exactly.

> Also, it would be nice to list the pros/cons of this change, an
> advantage is reduced overhead - what are the disadvantages?

The single disadvantage is that small-memory systems won't be able to 
have finer control of memory offlining, though the impact of that depend 
on why the user is offlining memory of course.

If it seems reasonable for x86-64 systems with >64GB memory to have 2GB 
memory block sizes, I could prepare that change instead and document the 
above if preferred?

Thanks,
   Daniel
Ingo Molnar Oct. 20, 2014, 12:02 p.m. UTC | #3
* Daniel J Blueman <daniel@numascale.com> wrote:

> On 19/10/2014 17:23, Ingo Molnar wrote:
> >
> >* Daniel J Blueman <daniel@numascale.com> wrote:
> >
> >>Use appropriate memory block size to reduce sysfs entry creation time
> >>by 16x.
> >>
> >>Boot-tested with the four permutations of X86_UV and X86_NUMACHIP.
> >>
> >>Signed-off-by: Daniel J Blueman <daniel@numascale.com>
> >>---
> >>  arch/x86/mm/init_64.c | 7 ++++---
> >>  1 file changed, 4 insertions(+), 3 deletions(-)
> >>
> >>diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
> >>index 5621c47..22ea6de 100644
> >>--- a/arch/x86/mm/init_64.c
> >>+++ b/arch/x86/mm/init_64.c
> >>@@ -53,6 +53,7 @@
> >>  #include <asm/cacheflush.h>
> >>  #include <asm/init.h>
> >>  #include <asm/uv/uv.h>
> >>+#include <asm/numachip/numachip.h>
> >>  #include <asm/setup.h>
> >>
> >>  #include "mm_internal.h"
> >>@@ -1235,9 +1236,9 @@ static unsigned long probe_memory_block_size(void)
> >>  	/* start from 2g */
> >>  	unsigned long bz = 1UL<<31;
> >>
> >>-#ifdef CONFIG_X86_UV
> >>-	if (is_uv_system()) {
> >>-		printk(KERN_INFO "UV: memory block size 2GB\n");
> >>+#ifdef CONFIG_X86_64
> >>+	if (is_uv_system() || is_numachip_system()) {
> >>+		pr_info("Memory block size 2GB for large-SMP system\n");
> >>  		return 2UL * 1024 * 1024 * 1024;
> >
> >It would be a lot cleaner and more robust to have a more
> >intelligent decision here.
> >
> >Is there a reliable indicator for large 'sysfs entry creation
> >time', such as a lot of RAM present?
> 
> Yes, agreed exactly.
> 
> > Also, it would be nice to list the pros/cons of this change, 
> > an advantage is reduced overhead - what are the 
> > disadvantages?
> 
> The single disadvantage is that small-memory systems won't be 
> able to have finer control of memory offlining, though the 
> impact of that depend on why the user is offlining memory of 
> course.
> 
> If it seems reasonable for x86-64 systems with >64GB memory to 
> have 2GB memory block sizes, I could prepare that change 
> instead and document the above if preferred?

I'd make it >= 64GB, but yes, that sounds like a good limit.

Thanks,

	Ingo
--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c
index 5621c47..22ea6de 100644
--- a/arch/x86/mm/init_64.c
+++ b/arch/x86/mm/init_64.c
@@ -53,6 +53,7 @@ 
 #include <asm/cacheflush.h>
 #include <asm/init.h>
 #include <asm/uv/uv.h>
+#include <asm/numachip/numachip.h>
 #include <asm/setup.h>
 
 #include "mm_internal.h"
@@ -1235,9 +1236,9 @@  static unsigned long probe_memory_block_size(void)
 	/* start from 2g */
 	unsigned long bz = 1UL<<31;
 
-#ifdef CONFIG_X86_UV
-	if (is_uv_system()) {
-		printk(KERN_INFO "UV: memory block size 2GB\n");
+#ifdef CONFIG_X86_64
+	if (is_uv_system() || is_numachip_system()) {
+		pr_info("Memory block size 2GB for large-SMP system\n");
 		return 2UL * 1024 * 1024 * 1024;
 	}
 #endif