Re: [PATCH -v2 01/10] swap: Change SWAPFILE_CLUSTER to 512
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
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
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
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
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