lkml.org 
[lkml]   [2012]   [Feb]   [23]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    Subject[PATCH v3 08/21] mm: unify inactive_list_is_low()
    From
    Date
    Unify memcg and non-memcg logic, always use exact counters from struct lruvec.

    Signed-off-by: Konstantin Khlebnikov <khlebnikov@openvz.org>
    ---
    mm/vmscan.c | 30 ++++++++----------------------
    1 files changed, 8 insertions(+), 22 deletions(-)

    diff --git a/mm/vmscan.c b/mm/vmscan.c
    index f3c0fbe..b3e8bab 100644
    --- a/mm/vmscan.c
    +++ b/mm/vmscan.c
    @@ -1822,6 +1822,7 @@ static int inactive_anon_is_low(struct mem_cgroup_zone *mz)
    {
    unsigned long active, inactive;
    unsigned int gb, ratio;
    + struct lruvec *lruvec;

    /*
    * If we don't have swap space, anonymous page deactivation
    @@ -1830,17 +1831,9 @@ static int inactive_anon_is_low(struct mem_cgroup_zone *mz)
    if (!total_swap_pages)
    return 0;

    - if (scanning_global_lru(mz)) {
    - active = zone_page_state(mz->zone, NR_ACTIVE_ANON);
    - inactive = zone_page_state(mz->zone, NR_INACTIVE_ANON);
    - } else {
    - active = mem_cgroup_zone_nr_lru_pages(mz->mem_cgroup,
    - zone_to_nid(mz->zone), zone_idx(mz->zone),
    - BIT(LRU_ACTIVE_ANON));
    - inactive = mem_cgroup_zone_nr_lru_pages(mz->mem_cgroup,
    - zone_to_nid(mz->zone), zone_idx(mz->zone),
    - BIT(LRU_INACTIVE_ANON));
    - }
    + lruvec = mem_cgroup_zone_lruvec(mz->zone, mz->mem_cgroup);
    + active = lruvec->pages_count[LRU_ACTIVE_ANON];
    + inactive = lruvec->pages_count[LRU_INACTIVE_ANON];

    /* Total size in gigabytes */
    gb = (active + inactive) >> (30 - PAGE_SHIFT);
    @@ -1875,18 +1868,11 @@ static inline int inactive_anon_is_low(struct mem_cgroup_zone *mz)
    static int inactive_file_is_low(struct mem_cgroup_zone *mz)
    {
    unsigned long active, inactive;
    + struct lruvec *lruvec;

    - if (scanning_global_lru(mz)) {
    - active = zone_page_state(mz->zone, NR_ACTIVE_FILE);
    - inactive = zone_page_state(mz->zone, NR_INACTIVE_FILE);
    - } else {
    - active = mem_cgroup_zone_nr_lru_pages(mz->mem_cgroup,
    - zone_to_nid(mz->zone), zone_idx(mz->zone),
    - BIT(LRU_ACTIVE_FILE));
    - inactive = mem_cgroup_zone_nr_lru_pages(mz->mem_cgroup,
    - zone_to_nid(mz->zone), zone_idx(mz->zone),
    - BIT(LRU_INACTIVE_FILE));
    - }
    + lruvec = mem_cgroup_zone_lruvec(mz->zone, mz->mem_cgroup);
    + active = lruvec->pages_count[LRU_ACTIVE_FILE];
    + inactive = lruvec->pages_count[LRU_INACTIVE_FILE];

    return inactive < active;
    }


    \
     
     \ /
      Last update: 2012-02-23 14:55    [W:0.054 / U:0.096 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site