• Yixuan Cao's avatar
    tools/vm/page_owner_sort: fix -f option · 57eb60c0
    Yixuan Cao authored
    The -f option is to filter out the information of blocks whose memory has
    not been released, I noticed some blocks should not be filtered out.
    
    Commit 9cc7e96a ("mm/page_owner: record timestamp and pid") records
    the allocation timestamp (ts_nsec) of all pages.
    
    Commit 866b4852 ("mm/page_owner: record the timestamp of all pages
    during free") records the free timestamp (free_ts_nsec) of all pages. 
    When the page is allocated for the first time, the initial value of
    free_ts_nsec is 0, and the corresponding time will be obtained when the
    page is released.  But during reallocation the free_ts_nsec will not reset
    to 0 again.  In particular, when page migration occurs, these two
    timestamps will be the same.
    
    Now page_owner_sort removes all text blocks whose free_ts_nsec is not 0
    when using -f option.  However, this way can only select pages allocated
    for the first time.  If a freed page is reallocated, free_ts_nsec will be
    less than ts_nsec; if page migration occurs, the two timestamps will be
    equal.  These cases should be considered as pages are not released.
    
    So I fix the function is_need() to keep text blocks that meet the above
    two conditions when using -f option.
    
    Link: https://lkml.kernel.org/r/20220812155515.30846-1-caoyixuan2019@email.szu.edu.cnSigned-off-by: default avatarYixuan Cao <caoyixuan2019@email.szu.edu.cn>
    Cc: Chongxi Zhao <zhaochongxi2019@email.szu.edu.cn>
    Cc: Jiajian Ye <yejiajian2018@email.szu.edu.cn>
    Cc: Yuhong Feng <yuhongf@szu.edu.cn>
    Cc: Liam Mark <lmark@codeaurora.org>
    Cc: Georgi Djakov <georgi.djakov@linaro.org>
    Cc: Vlastimil Babka <vbabka@suse.cz>
    Cc: Joonsoo Kim <iamjoonsoo.kim@lge.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    57eb60c0
page_owner_sort.c 20.6 KB