RE: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Satoru Moriya
On 12/17/2012 01:12 PM, Johannes Weiner wrote:
> A swappiness of 0 has a slightly different meaning for global reclaim 
> (may swap if file cache really low) and memory cgroup reclaim (never 
> swap, ever).
> 
> In addition, global reclaim at highest priority will scan all LRU 
> lists equal to their size and ignore other balancing heuristics.
> UNLESS swappiness forbids swapping, then the lists are balanced based 
> on recent reclaim effectiveness.  UNLESS file cache is running low, 
> then anonymous pages are force-scanned.
> 
> This (total mess of a) behaviour is implicit and not obvious from the 
> way the code is organized.  At least make it apparent in the code flow 
> and document the conditions.  It will be it easier to come up with 
> sane semantics later.
> 
> Signed-off-by: Johannes Weiner 

Reviewed-by: Satoru Moriya 

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Satoru Moriya
On 12/17/2012 01:12 PM, Johannes Weiner wrote:
> A swappiness of 0 has a slightly different meaning for global reclaim 
> (may swap if file cache really low) and memory cgroup reclaim (never 
> swap, ever).
> 
> In addition, global reclaim at highest priority will scan all LRU 
> lists equal to their size and ignore other balancing heuristics.
> UNLESS swappiness forbids swapping, then the lists are balanced based 
> on recent reclaim effectiveness.  UNLESS file cache is running low, 
> then anonymous pages are force-scanned.
> 
> This (total mess of a) behaviour is implicit and not obvious from the 
> way the code is organized.  At least make it apparent in the code flow 
> and document the conditions.  It will be it easier to come up with 
> sane semantics later.
> 
> Signed-off-by: Johannes Weiner 

Hmmm, my company's mail server is in trouble... The mail I sent
yesterday has not been delivered yet.

Anyway, this is good for me.
Thanks!

Reviewed-by: Satoru Moriya 
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Mel Gorman
On Mon, Dec 17, 2012 at 01:12:33PM -0500, Johannes Weiner wrote:
> A swappiness of 0 has a slightly different meaning for global reclaim
> (may swap if file cache really low) and memory cgroup reclaim (never
> swap, ever).
> 
> In addition, global reclaim at highest priority will scan all LRU
> lists equal to their size and ignore other balancing heuristics.
> UNLESS swappiness forbids swapping, then the lists are balanced based
> on recent reclaim effectiveness.  UNLESS file cache is running low,
> then anonymous pages are force-scanned.
> 
> This (total mess of a) behaviour is implicit and not obvious from the
> way the code is organized.  At least make it apparent in the code flow
> and document the conditions.  It will be it easier to come up with
> sane semantics later.
> 
> Signed-off-by: Johannes Weiner 

Acked-by: Mel Gorman 

-- 
Mel Gorman
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Mel Gorman
On Mon, Dec 17, 2012 at 01:12:33PM -0500, Johannes Weiner wrote:
 A swappiness of 0 has a slightly different meaning for global reclaim
 (may swap if file cache really low) and memory cgroup reclaim (never
 swap, ever).
 
 In addition, global reclaim at highest priority will scan all LRU
 lists equal to their size and ignore other balancing heuristics.
 UNLESS swappiness forbids swapping, then the lists are balanced based
 on recent reclaim effectiveness.  UNLESS file cache is running low,
 then anonymous pages are force-scanned.
 
 This (total mess of a) behaviour is implicit and not obvious from the
 way the code is organized.  At least make it apparent in the code flow
 and document the conditions.  It will be it easier to come up with
 sane semantics later.
 
 Signed-off-by: Johannes Weiner han...@cmpxchg.org

Acked-by: Mel Gorman mgor...@suse.de

-- 
Mel Gorman
SUSE Labs
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Satoru Moriya
On 12/17/2012 01:12 PM, Johannes Weiner wrote:
 A swappiness of 0 has a slightly different meaning for global reclaim 
 (may swap if file cache really low) and memory cgroup reclaim (never 
 swap, ever).
 
 In addition, global reclaim at highest priority will scan all LRU 
 lists equal to their size and ignore other balancing heuristics.
 UNLESS swappiness forbids swapping, then the lists are balanced based 
 on recent reclaim effectiveness.  UNLESS file cache is running low, 
 then anonymous pages are force-scanned.
 
 This (total mess of a) behaviour is implicit and not obvious from the 
 way the code is organized.  At least make it apparent in the code flow 
 and document the conditions.  It will be it easier to come up with 
 sane semantics later.
 
 Signed-off-by: Johannes Weiner han...@cmpxchg.org

Hmmm, my company's mail server is in trouble... The mail I sent
yesterday has not been delivered yet.

Anyway, this is good for me.
Thanks!

Reviewed-by: Satoru Moriya satoru.mor...@hds.com
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


RE: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-18 Thread Satoru Moriya
On 12/17/2012 01:12 PM, Johannes Weiner wrote:
 A swappiness of 0 has a slightly different meaning for global reclaim 
 (may swap if file cache really low) and memory cgroup reclaim (never 
 swap, ever).
 
 In addition, global reclaim at highest priority will scan all LRU 
 lists equal to their size and ignore other balancing heuristics.
 UNLESS swappiness forbids swapping, then the lists are balanced based 
 on recent reclaim effectiveness.  UNLESS file cache is running low, 
 then anonymous pages are force-scanned.
 
 This (total mess of a) behaviour is implicit and not obvious from the 
 way the code is organized.  At least make it apparent in the code flow 
 and document the conditions.  It will be it easier to come up with 
 sane semantics later.
 
 Signed-off-by: Johannes Weiner han...@cmpxchg.org

Reviewed-by: Satoru Moriya satoru.mor...@hds.com

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Michal Hocko
On Mon 17-12-12 13:12:33, Johannes Weiner wrote:
> A swappiness of 0 has a slightly different meaning for global reclaim
> (may swap if file cache really low) and memory cgroup reclaim (never
> swap, ever).
> 
> In addition, global reclaim at highest priority will scan all LRU
> lists equal to their size and ignore other balancing heuristics.
> UNLESS swappiness forbids swapping, then the lists are balanced based
> on recent reclaim effectiveness.  UNLESS file cache is running low,
> then anonymous pages are force-scanned.
> 
> This (total mess of a) behaviour is implicit and not obvious from the
> way the code is organized.  At least make it apparent in the code flow
> and document the conditions.  It will be it easier to come up with
> sane semantics later.
> 
> Signed-off-by: Johannes Weiner 

Reviewed-by: Michal Hocko 

Thanks!

> ---
>  mm/vmscan.c | 39 ++-
>  1 file changed, 30 insertions(+), 9 deletions(-)
> 
> diff --git a/mm/vmscan.c b/mm/vmscan.c
> index 648a4db..c37deaf 100644
> --- a/mm/vmscan.c
> +++ b/mm/vmscan.c
> @@ -1644,7 +1644,6 @@ static void get_scan_count(struct lruvec *lruvec, 
> struct scan_control *sc,
>   struct zone_reclaim_stat *reclaim_stat = >reclaim_stat;
>   u64 fraction[2], denominator;
>   enum lru_list lru;
> - int noswap = 0;
>   bool force_scan = false;
>   struct zone *zone = lruvec_zone(lruvec);
>  
> @@ -1665,13 +1664,38 @@ static void get_scan_count(struct lruvec *lruvec, 
> struct scan_control *sc,
>  
>   /* If we have no swap space, do not bother scanning anon pages. */
>   if (!sc->may_swap || (nr_swap_pages <= 0)) {
> - noswap = 1;
>   fraction[0] = 0;
>   fraction[1] = 1;
>   denominator = 1;
>   goto out;
>   }
>  
> + /*
> +  * Global reclaim will swap to prevent OOM even with no
> +  * swappiness, but memcg users want to use this knob to
> +  * disable swapping for individual groups completely when
> +  * using the memory controller's swap limit feature would be
> +  * too expensive.
> +  */
> + if (!global_reclaim(sc) && !vmscan_swappiness(sc)) {
> + fraction[0] = 0;
> + fraction[1] = 1;
> + denominator = 1;
> + goto out;
> + }
> +
> + /*
> +  * Do not apply any pressure balancing cleverness when the
> +  * system is close to OOM, scan both anon and file equally
> +  * (unless the swappiness setting disagrees with swapping).
> +  */
> + if (!sc->priority && vmscan_swappiness(sc)) {
> + fraction[0] = 1;
> + fraction[1] = 1;
> + denominator = 1;
> + goto out;
> + }
> +
>   anon  = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
>   get_lru_size(lruvec, LRU_INACTIVE_ANON);
>   file  = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
> @@ -1753,13 +1777,10 @@ static void get_scan_count(struct lruvec *lruvec, 
> struct scan_control *sc,
>   unsigned long scan;
>  
>   size = get_lru_size(lruvec, lru);
> - if (sc->priority || noswap || !vmscan_swappiness(sc)) {
> - scan = size >> sc->priority;
> - if (!scan && force_scan)
> - scan = min(size, SWAP_CLUSTER_MAX);
> - scan = div64_u64(scan * fraction[file], denominator);
> - } else
> - scan = size;
> + scan = size >> sc->priority;
> + if (!scan && force_scan)
> + scan = min(size, SWAP_CLUSTER_MAX);
> + scan = div64_u64(scan * fraction[file], denominator);
>   nr[lru] = scan;
>   }
>  }
> -- 
> 1.7.11.7
> 

-- 
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Rik van Riel

On 12/17/2012 01:12 PM, Johannes Weiner wrote:

A swappiness of 0 has a slightly different meaning for global reclaim
(may swap if file cache really low) and memory cgroup reclaim (never
swap, ever).

In addition, global reclaim at highest priority will scan all LRU
lists equal to their size and ignore other balancing heuristics.
UNLESS swappiness forbids swapping, then the lists are balanced based
on recent reclaim effectiveness.  UNLESS file cache is running low,
then anonymous pages are force-scanned.

This (total mess of a) behaviour is implicit and not obvious from the
way the code is organized.  At least make it apparent in the code flow
and document the conditions.  It will be it easier to come up with
sane semantics later.

Signed-off-by: Johannes Weiner 


Reviewed-by: Rik van Riel 


--
All rights reversed
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Johannes Weiner
A swappiness of 0 has a slightly different meaning for global reclaim
(may swap if file cache really low) and memory cgroup reclaim (never
swap, ever).

In addition, global reclaim at highest priority will scan all LRU
lists equal to their size and ignore other balancing heuristics.
UNLESS swappiness forbids swapping, then the lists are balanced based
on recent reclaim effectiveness.  UNLESS file cache is running low,
then anonymous pages are force-scanned.

This (total mess of a) behaviour is implicit and not obvious from the
way the code is organized.  At least make it apparent in the code flow
and document the conditions.  It will be it easier to come up with
sane semantics later.

Signed-off-by: Johannes Weiner 
---
 mm/vmscan.c | 39 ++-
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 648a4db..c37deaf 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1644,7 +1644,6 @@ static void get_scan_count(struct lruvec *lruvec, struct 
scan_control *sc,
struct zone_reclaim_stat *reclaim_stat = >reclaim_stat;
u64 fraction[2], denominator;
enum lru_list lru;
-   int noswap = 0;
bool force_scan = false;
struct zone *zone = lruvec_zone(lruvec);
 
@@ -1665,13 +1664,38 @@ static void get_scan_count(struct lruvec *lruvec, 
struct scan_control *sc,
 
/* If we have no swap space, do not bother scanning anon pages. */
if (!sc->may_swap || (nr_swap_pages <= 0)) {
-   noswap = 1;
fraction[0] = 0;
fraction[1] = 1;
denominator = 1;
goto out;
}
 
+   /*
+* Global reclaim will swap to prevent OOM even with no
+* swappiness, but memcg users want to use this knob to
+* disable swapping for individual groups completely when
+* using the memory controller's swap limit feature would be
+* too expensive.
+*/
+   if (!global_reclaim(sc) && !vmscan_swappiness(sc)) {
+   fraction[0] = 0;
+   fraction[1] = 1;
+   denominator = 1;
+   goto out;
+   }
+
+   /*
+* Do not apply any pressure balancing cleverness when the
+* system is close to OOM, scan both anon and file equally
+* (unless the swappiness setting disagrees with swapping).
+*/
+   if (!sc->priority && vmscan_swappiness(sc)) {
+   fraction[0] = 1;
+   fraction[1] = 1;
+   denominator = 1;
+   goto out;
+   }
+
anon  = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
get_lru_size(lruvec, LRU_INACTIVE_ANON);
file  = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
@@ -1753,13 +1777,10 @@ static void get_scan_count(struct lruvec *lruvec, 
struct scan_control *sc,
unsigned long scan;
 
size = get_lru_size(lruvec, lru);
-   if (sc->priority || noswap || !vmscan_swappiness(sc)) {
-   scan = size >> sc->priority;
-   if (!scan && force_scan)
-   scan = min(size, SWAP_CLUSTER_MAX);
-   scan = div64_u64(scan * fraction[file], denominator);
-   } else
-   scan = size;
+   scan = size >> sc->priority;
+   if (!scan && force_scan)
+   scan = min(size, SWAP_CLUSTER_MAX);
+   scan = div64_u64(scan * fraction[file], denominator);
nr[lru] = scan;
}
 }
-- 
1.7.11.7

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


[patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Johannes Weiner
A swappiness of 0 has a slightly different meaning for global reclaim
(may swap if file cache really low) and memory cgroup reclaim (never
swap, ever).

In addition, global reclaim at highest priority will scan all LRU
lists equal to their size and ignore other balancing heuristics.
UNLESS swappiness forbids swapping, then the lists are balanced based
on recent reclaim effectiveness.  UNLESS file cache is running low,
then anonymous pages are force-scanned.

This (total mess of a) behaviour is implicit and not obvious from the
way the code is organized.  At least make it apparent in the code flow
and document the conditions.  It will be it easier to come up with
sane semantics later.

Signed-off-by: Johannes Weiner han...@cmpxchg.org
---
 mm/vmscan.c | 39 ++-
 1 file changed, 30 insertions(+), 9 deletions(-)

diff --git a/mm/vmscan.c b/mm/vmscan.c
index 648a4db..c37deaf 100644
--- a/mm/vmscan.c
+++ b/mm/vmscan.c
@@ -1644,7 +1644,6 @@ static void get_scan_count(struct lruvec *lruvec, struct 
scan_control *sc,
struct zone_reclaim_stat *reclaim_stat = lruvec-reclaim_stat;
u64 fraction[2], denominator;
enum lru_list lru;
-   int noswap = 0;
bool force_scan = false;
struct zone *zone = lruvec_zone(lruvec);
 
@@ -1665,13 +1664,38 @@ static void get_scan_count(struct lruvec *lruvec, 
struct scan_control *sc,
 
/* If we have no swap space, do not bother scanning anon pages. */
if (!sc-may_swap || (nr_swap_pages = 0)) {
-   noswap = 1;
fraction[0] = 0;
fraction[1] = 1;
denominator = 1;
goto out;
}
 
+   /*
+* Global reclaim will swap to prevent OOM even with no
+* swappiness, but memcg users want to use this knob to
+* disable swapping for individual groups completely when
+* using the memory controller's swap limit feature would be
+* too expensive.
+*/
+   if (!global_reclaim(sc)  !vmscan_swappiness(sc)) {
+   fraction[0] = 0;
+   fraction[1] = 1;
+   denominator = 1;
+   goto out;
+   }
+
+   /*
+* Do not apply any pressure balancing cleverness when the
+* system is close to OOM, scan both anon and file equally
+* (unless the swappiness setting disagrees with swapping).
+*/
+   if (!sc-priority  vmscan_swappiness(sc)) {
+   fraction[0] = 1;
+   fraction[1] = 1;
+   denominator = 1;
+   goto out;
+   }
+
anon  = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
get_lru_size(lruvec, LRU_INACTIVE_ANON);
file  = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
@@ -1753,13 +1777,10 @@ static void get_scan_count(struct lruvec *lruvec, 
struct scan_control *sc,
unsigned long scan;
 
size = get_lru_size(lruvec, lru);
-   if (sc-priority || noswap || !vmscan_swappiness(sc)) {
-   scan = size  sc-priority;
-   if (!scan  force_scan)
-   scan = min(size, SWAP_CLUSTER_MAX);
-   scan = div64_u64(scan * fraction[file], denominator);
-   } else
-   scan = size;
+   scan = size  sc-priority;
+   if (!scan  force_scan)
+   scan = min(size, SWAP_CLUSTER_MAX);
+   scan = div64_u64(scan * fraction[file], denominator);
nr[lru] = scan;
}
 }
-- 
1.7.11.7

--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Rik van Riel

On 12/17/2012 01:12 PM, Johannes Weiner wrote:

A swappiness of 0 has a slightly different meaning for global reclaim
(may swap if file cache really low) and memory cgroup reclaim (never
swap, ever).

In addition, global reclaim at highest priority will scan all LRU
lists equal to their size and ignore other balancing heuristics.
UNLESS swappiness forbids swapping, then the lists are balanced based
on recent reclaim effectiveness.  UNLESS file cache is running low,
then anonymous pages are force-scanned.

This (total mess of a) behaviour is implicit and not obvious from the
way the code is organized.  At least make it apparent in the code flow
and document the conditions.  It will be it easier to come up with
sane semantics later.

Signed-off-by: Johannes Weiner han...@cmpxchg.org


Reviewed-by: Rik van Riel r...@redhat.com


--
All rights reversed
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/


Re: [patch 3/7] mm: vmscan: clarify how swappiness, highest priority, memcg interact

2012-12-17 Thread Michal Hocko
On Mon 17-12-12 13:12:33, Johannes Weiner wrote:
 A swappiness of 0 has a slightly different meaning for global reclaim
 (may swap if file cache really low) and memory cgroup reclaim (never
 swap, ever).
 
 In addition, global reclaim at highest priority will scan all LRU
 lists equal to their size and ignore other balancing heuristics.
 UNLESS swappiness forbids swapping, then the lists are balanced based
 on recent reclaim effectiveness.  UNLESS file cache is running low,
 then anonymous pages are force-scanned.
 
 This (total mess of a) behaviour is implicit and not obvious from the
 way the code is organized.  At least make it apparent in the code flow
 and document the conditions.  It will be it easier to come up with
 sane semantics later.
 
 Signed-off-by: Johannes Weiner han...@cmpxchg.org

Reviewed-by: Michal Hocko mho...@suse.cz

Thanks!

 ---
  mm/vmscan.c | 39 ++-
  1 file changed, 30 insertions(+), 9 deletions(-)
 
 diff --git a/mm/vmscan.c b/mm/vmscan.c
 index 648a4db..c37deaf 100644
 --- a/mm/vmscan.c
 +++ b/mm/vmscan.c
 @@ -1644,7 +1644,6 @@ static void get_scan_count(struct lruvec *lruvec, 
 struct scan_control *sc,
   struct zone_reclaim_stat *reclaim_stat = lruvec-reclaim_stat;
   u64 fraction[2], denominator;
   enum lru_list lru;
 - int noswap = 0;
   bool force_scan = false;
   struct zone *zone = lruvec_zone(lruvec);
  
 @@ -1665,13 +1664,38 @@ static void get_scan_count(struct lruvec *lruvec, 
 struct scan_control *sc,
  
   /* If we have no swap space, do not bother scanning anon pages. */
   if (!sc-may_swap || (nr_swap_pages = 0)) {
 - noswap = 1;
   fraction[0] = 0;
   fraction[1] = 1;
   denominator = 1;
   goto out;
   }
  
 + /*
 +  * Global reclaim will swap to prevent OOM even with no
 +  * swappiness, but memcg users want to use this knob to
 +  * disable swapping for individual groups completely when
 +  * using the memory controller's swap limit feature would be
 +  * too expensive.
 +  */
 + if (!global_reclaim(sc)  !vmscan_swappiness(sc)) {
 + fraction[0] = 0;
 + fraction[1] = 1;
 + denominator = 1;
 + goto out;
 + }
 +
 + /*
 +  * Do not apply any pressure balancing cleverness when the
 +  * system is close to OOM, scan both anon and file equally
 +  * (unless the swappiness setting disagrees with swapping).
 +  */
 + if (!sc-priority  vmscan_swappiness(sc)) {
 + fraction[0] = 1;
 + fraction[1] = 1;
 + denominator = 1;
 + goto out;
 + }
 +
   anon  = get_lru_size(lruvec, LRU_ACTIVE_ANON) +
   get_lru_size(lruvec, LRU_INACTIVE_ANON);
   file  = get_lru_size(lruvec, LRU_ACTIVE_FILE) +
 @@ -1753,13 +1777,10 @@ static void get_scan_count(struct lruvec *lruvec, 
 struct scan_control *sc,
   unsigned long scan;
  
   size = get_lru_size(lruvec, lru);
 - if (sc-priority || noswap || !vmscan_swappiness(sc)) {
 - scan = size  sc-priority;
 - if (!scan  force_scan)
 - scan = min(size, SWAP_CLUSTER_MAX);
 - scan = div64_u64(scan * fraction[file], denominator);
 - } else
 - scan = size;
 + scan = size  sc-priority;
 + if (!scan  force_scan)
 + scan = min(size, SWAP_CLUSTER_MAX);
 + scan = div64_u64(scan * fraction[file], denominator);
   nr[lru] = scan;
   }
  }
 -- 
 1.7.11.7
 

-- 
Michal Hocko
SUSE Labs
--
To unsubscribe from this list: send the line unsubscribe linux-kernel in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/