Re: [PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512

2016-09-02 Thread Huang, Ying
Andrew Morton  writes:

> On Thu, 01 Sep 2016 16:04:57 -0700 "Huang\, Ying"  
> wrote:
>
>> >>  }
>> >>  
>> >> -#define SWAPFILE_CLUSTER 256
>> >> +#define SWAPFILE_CLUSTER 512
>> >>  #define LATENCY_LIMIT256
>> >>  
>> >
>> > What happens to architectures which have different HPAGE_SIZE and/or
>> > PAGE_SIZE?
>> 
>> For the architecture with HPAGE_SIZE / PAGE_SIZE == 512 (for example
>> x86_64), the huge page swap optimizing will be turned on.  For other
>> architectures, it will be turned off as before.
>> 
>> This mostly because I don't know whether it is a good idea to turn on
>> THP swap optimizing for the architectures other than x86_64.  For
>> example, it appears that the huge page size is 8M (1<<23) on SPARC.  But
>> I don't know whether 8M is too big for a swap cluster.  And it appears
>> that the huge page size could be as large as 512M on MIPS.
>
> This doesn't sounds very organized.  If some architecture with some
> config happens to have HPAGE_SIZE / PAGE_SIZE == 512 then the feature
> will be turned on; otherwise it will be turned off.  Nobody will even
> notice that it happened.
>
> Would it not be better to do
>
> #ifdef CONFIG_SOMETHING
> #define SWAPFILE_CLUSTER (HPAGE_SIZE / PAGE_SIZE)
> #else
> #define SWAPFILE_CLUSTER 256
> #endif
>
> and, by using CONFIG_SOMETHING in the other appropriate places, enable
> the feature in the usual fashion?

Yes.  That is better.  I will change it in the next version.

Best Regards,
Huang, Ying


Re: [PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512

2016-09-02 Thread Andrew Morton
On Thu, 01 Sep 2016 16:04:57 -0700 "Huang\, Ying"  wrote:

> >>  }
> >>  
> >> -#define SWAPFILE_CLUSTER  256
> >> +#define SWAPFILE_CLUSTER  512
> >>  #define LATENCY_LIMIT 256
> >>  
> >
> > What happens to architectures which have different HPAGE_SIZE and/or
> > PAGE_SIZE?
> 
> For the architecture with HPAGE_SIZE / PAGE_SIZE == 512 (for example
> x86_64), the huge page swap optimizing will be turned on.  For other
> architectures, it will be turned off as before.
> 
> This mostly because I don't know whether it is a good idea to turn on
> THP swap optimizing for the architectures other than x86_64.  For
> example, it appears that the huge page size is 8M (1<<23) on SPARC.  But
> I don't know whether 8M is too big for a swap cluster.  And it appears
> that the huge page size could be as large as 512M on MIPS.

This doesn't sounds very organized.  If some architecture with some
config happens to have HPAGE_SIZE / PAGE_SIZE == 512 then the feature
will be turned on; otherwise it will be turned off.  Nobody will even
notice that it happened.

Would it not be better to do

#ifdef CONFIG_SOMETHING
#define SWAPFILE_CLUSTER (HPAGE_SIZE / PAGE_SIZE)
#else
#define SWAPFILE_CLUSTER 256
#endif

and, by using CONFIG_SOMETHING in the other appropriate places, enable
the feature in the usual fashion?


Re: [PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512

2016-09-01 Thread Huang, Ying
Andrew Morton  writes:

> On Thu,  1 Sep 2016 08:16:54 -0700 "Huang, Ying"  wrote:
>
>> From: Huang Ying 
>> 
>> In this patch, the size of the swap cluster is changed to that of the
>> THP (Transparent Huge Page) on x86_64 architecture (512).  This is for
>> the THP swap support on x86_64.  Where one swap cluster will be used to
>> hold the contents of each THP swapped out.  And some information of the
>> swapped out THP (such as compound map count) will be recorded in the
>> swap_cluster_info data structure.
>> 
>> In effect,  this will enlarge swap  cluster size by 2  times.  Which may
>> make  it harder  to find  a  free cluster  when the  swap space  becomes
>> fragmented.   So  that,  this  may  reduce  the  continuous  swap  space
>> allocation and sequential write in theory.  The performance test in 0day
>> show no regressions caused by this.
>> 
>> --- a/mm/swapfile.c
>> +++ b/mm/swapfile.c
>> @@ -196,7 +196,7 @@ static void discard_swap_cluster(struct swap_info_struct 
>> *si,
>>  }
>>  }
>>  
>> -#define SWAPFILE_CLUSTER256
>> +#define SWAPFILE_CLUSTER512
>>  #define LATENCY_LIMIT   256
>>  
>
> What happens to architectures which have different HPAGE_SIZE and/or
> PAGE_SIZE?

For the architecture with HPAGE_SIZE / PAGE_SIZE == 512 (for example
x86_64), the huge page swap optimizing will be turned on.  For other
architectures, it will be turned off as before.

This mostly because I don't know whether it is a good idea to turn on
THP swap optimizing for the architectures other than x86_64.  For
example, it appears that the huge page size is 8M (1<<23) on SPARC.  But
I don't know whether 8M is too big for a swap cluster.  And it appears
that the huge page size could be as large as 512M on MIPS.

Best Regards,
Huang, Ying


Re: [PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512

2016-09-01 Thread Andrew Morton
On Thu,  1 Sep 2016 08:16:54 -0700 "Huang, Ying"  wrote:

> From: Huang Ying 
> 
> In this patch, the size of the swap cluster is changed to that of the
> THP (Transparent Huge Page) on x86_64 architecture (512).  This is for
> the THP swap support on x86_64.  Where one swap cluster will be used to
> hold the contents of each THP swapped out.  And some information of the
> swapped out THP (such as compound map count) will be recorded in the
> swap_cluster_info data structure.
> 
> In effect,  this will enlarge swap  cluster size by 2  times.  Which may
> make  it harder  to find  a  free cluster  when the  swap space  becomes
> fragmented.   So  that,  this  may  reduce  the  continuous  swap  space
> allocation and sequential write in theory.  The performance test in 0day
> show no regressions caused by this.
> 
> --- a/mm/swapfile.c
> +++ b/mm/swapfile.c
> @@ -196,7 +196,7 @@ static void discard_swap_cluster(struct swap_info_struct 
> *si,
>   }
>  }
>  
> -#define SWAPFILE_CLUSTER 256
> +#define SWAPFILE_CLUSTER 512
>  #define LATENCY_LIMIT256
>  

What happens to architectures which have different HPAGE_SIZE and/or
PAGE_SIZE?


[PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512

2016-09-01 Thread Huang, Ying
From: Huang Ying 

In this patch, the size of the swap cluster is changed to that of the
THP (Transparent Huge Page) on x86_64 architecture (512).  This is for
the THP swap support on x86_64.  Where one swap cluster will be used to
hold the contents of each THP swapped out.  And some information of the
swapped out THP (such as compound map count) will be recorded in the
swap_cluster_info data structure.

In effect,  this will enlarge swap  cluster size by 2  times.  Which may
make  it harder  to find  a  free cluster  when the  swap space  becomes
fragmented.   So  that,  this  may  reduce  the  continuous  swap  space
allocation and sequential write in theory.  The performance test in 0day
show no regressions caused by this.

Cc: Hugh Dickins 
Cc: Shaohua Li 
Cc: Minchan Kim 
Cc: Rik van Riel 
Signed-off-by: "Huang, Ying" 
---
 mm/swapfile.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/mm/swapfile.c b/mm/swapfile.c
index 8f1b97d..582912b 100644
--- a/mm/swapfile.c
+++ b/mm/swapfile.c
@@ -196,7 +196,7 @@ static void discard_swap_cluster(struct swap_info_struct 
*si,
}
 }
 
-#define SWAPFILE_CLUSTER   256
+#define SWAPFILE_CLUSTER   512
 #define LATENCY_LIMIT  256
 
 static inline void cluster_set_flag(struct swap_cluster_info *info,
-- 
2.8.1