Message ID | 20220527092626.31883-3-linmiaohe@huawei.com (mailing list archive) |
---|---|
State | New |
Headers | show |
Series | A few fixup patches for swap | expand |
On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: > At swapoff time, we're going to swap in the pages continuously. So calling > lookup_swap_cache would confuse statistics. We should use find_get_page > directly here. Why is the existing behaviour wrong? swapoff() has to swap stuff in to be able to release the swap device. Why do you believe that this swapin activity should not be accounted?
On 2022/5/31 7:04, Andrew Morton wrote: > On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: > >> At swapoff time, we're going to swap in the pages continuously. So calling >> lookup_swap_cache would confuse statistics. We should use find_get_page >> directly here. > > Why is the existing behaviour wrong? swapoff() has to swap stuff in to > be able to release the swap device. Why do you believe that this > swapin activity should not be accounted? IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness of the swap cache activity. So they should only reflect the memory accessing activity of the user. I think swapoff can't reflect the effectiveness of the swap cache activity because it just swaps in pages one by one. Or statistics should reflect all the activity of the user including swapoff? Thanks! > > > . >
On 31.05.22 04:55, Miaohe Lin wrote: > On 2022/5/31 7:04, Andrew Morton wrote: >> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >> >>> At swapoff time, we're going to swap in the pages continuously. So calling >>> lookup_swap_cache would confuse statistics. We should use find_get_page >>> directly here. >> >> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >> be able to release the swap device. Why do you believe that this >> swapin activity should not be accounted? > > IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness > of the swap cache activity. So they should only reflect the memory accessing activity > of the user. I think swapoff can't reflect the effectiveness of the swap cache activity > because it just swaps in pages one by one. Or statistics should reflect all the activity > of the user including swapoff? I'm wondering who cares and why?
On 2022/5/31 20:58, David Hildenbrand wrote: > On 31.05.22 04:55, Miaohe Lin wrote: >> On 2022/5/31 7:04, Andrew Morton wrote: >>> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >>> >>>> At swapoff time, we're going to swap in the pages continuously. So calling >>>> lookup_swap_cache would confuse statistics. We should use find_get_page >>>> directly here. >>> >>> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >>> be able to release the swap device. Why do you believe that this >>> swapin activity should not be accounted? >> >> IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness >> of the swap cache activity. So they should only reflect the memory accessing activity >> of the user. I think swapoff can't reflect the effectiveness of the swap cache activity >> because it just swaps in pages one by one. Or statistics should reflect all the activity >> of the user including swapoff? > > I'm wondering who cares and why? I thought it's used to show the effectiveness of the swapcache readahead algorithm. If nobody ever cares about it now, I'm fine to drop this patch. And could these statistics be removed since nobody cares about it? Thanks! > >
On 01.06.22 04:11, Miaohe Lin wrote: > On 2022/5/31 20:58, David Hildenbrand wrote: >> On 31.05.22 04:55, Miaohe Lin wrote: >>> On 2022/5/31 7:04, Andrew Morton wrote: >>>> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >>>> >>>>> At swapoff time, we're going to swap in the pages continuously. So calling >>>>> lookup_swap_cache would confuse statistics. We should use find_get_page >>>>> directly here. >>>> >>>> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >>>> be able to release the swap device. Why do you believe that this >>>> swapin activity should not be accounted? >>> >>> IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness >>> of the swap cache activity. So they should only reflect the memory accessing activity >>> of the user. I think swapoff can't reflect the effectiveness of the swap cache activity >>> because it just swaps in pages one by one. Or statistics should reflect all the activity >>> of the user including swapoff? >> >> I'm wondering who cares and why? > > I thought it's used to show the effectiveness of the swapcache readahead algorithm. If nobody > ever cares about it now, I'm fine to drop this patch. And could these statistics be removed > since nobody cares about it? IIUC, they are printed (via show_swap_cache_info()), which is called via show_free_areas() -- primarily used via show_mem(). show_mem() is primarily used when OOM, when allocation fails and we warn, from the OOM killer, on panic(). I am not sure how useful for (OOM ?) debugging the find_success vs. find_total stats are at all. They are from ancient times. In bb63be0a091c ("tmpfs: move swap_state stats update") we removed other statistics that are "are relics of my 2.4.11 testing". Maybe find_success and find_total can be similarly removed. data_race() indicates to me that these stats are somewhat best-effort already.
On 2022/6/1 15:53, David Hildenbrand wrote: > On 01.06.22 04:11, Miaohe Lin wrote: >> On 2022/5/31 20:58, David Hildenbrand wrote: >>> On 31.05.22 04:55, Miaohe Lin wrote: >>>> On 2022/5/31 7:04, Andrew Morton wrote: >>>>> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >>>>> >>>>>> At swapoff time, we're going to swap in the pages continuously. So calling >>>>>> lookup_swap_cache would confuse statistics. We should use find_get_page >>>>>> directly here. >>>>> >>>>> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >>>>> be able to release the swap device. Why do you believe that this >>>>> swapin activity should not be accounted? >>>> >>>> IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness >>>> of the swap cache activity. So they should only reflect the memory accessing activity >>>> of the user. I think swapoff can't reflect the effectiveness of the swap cache activity >>>> because it just swaps in pages one by one. Or statistics should reflect all the activity >>>> of the user including swapoff? >>> >>> I'm wondering who cares and why? >> >> I thought it's used to show the effectiveness of the swapcache readahead algorithm. If nobody >> ever cares about it now, I'm fine to drop this patch. And could these statistics be removed >> since nobody cares about it? > > IIUC, they are printed (via show_swap_cache_info()), which is called via > show_free_areas() -- primarily used via show_mem(). show_mem() is > primarily used when OOM, when allocation fails and we warn, from the OOM > killer, on panic(). > > I am not sure how useful for (OOM ?) debugging the find_success vs. > find_total stats are at all. They are from ancient times. In > bb63be0a091c ("tmpfs: move swap_state stats update") we removed other > statistics that are "are relics of my 2.4.11 testing". Maybe > find_success and find_total can be similarly removed. Maybe add_total, del_total, find_success and find_total should be similarly removed altogether? It seems those can't provide useful info when OOM occurs? And we can thus avoid touching the swap_cache_info cacheline. > > data_race() indicates to me that these stats are somewhat best-effort > already. At least, this patch seems unneeded. Thanks! >
On 02.06.22 09:29, Miaohe Lin wrote: > On 2022/6/1 15:53, David Hildenbrand wrote: >> On 01.06.22 04:11, Miaohe Lin wrote: >>> On 2022/5/31 20:58, David Hildenbrand wrote: >>>> On 31.05.22 04:55, Miaohe Lin wrote: >>>>> On 2022/5/31 7:04, Andrew Morton wrote: >>>>>> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >>>>>> >>>>>>> At swapoff time, we're going to swap in the pages continuously. So calling >>>>>>> lookup_swap_cache would confuse statistics. We should use find_get_page >>>>>>> directly here. >>>>>> >>>>>> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >>>>>> be able to release the swap device. Why do you believe that this >>>>>> swapin activity should not be accounted? >>>>> >>>>> IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness >>>>> of the swap cache activity. So they should only reflect the memory accessing activity >>>>> of the user. I think swapoff can't reflect the effectiveness of the swap cache activity >>>>> because it just swaps in pages one by one. Or statistics should reflect all the activity >>>>> of the user including swapoff? >>>> >>>> I'm wondering who cares and why? >>> >>> I thought it's used to show the effectiveness of the swapcache readahead algorithm. If nobody >>> ever cares about it now, I'm fine to drop this patch. And could these statistics be removed >>> since nobody cares about it? >> >> IIUC, they are printed (via show_swap_cache_info()), which is called via >> show_free_areas() -- primarily used via show_mem(). show_mem() is >> primarily used when OOM, when allocation fails and we warn, from the OOM >> killer, on panic(). >> >> I am not sure how useful for (OOM ?) debugging the find_success vs. >> find_total stats are at all. They are from ancient times. In >> bb63be0a091c ("tmpfs: move swap_state stats update") we removed other >> statistics that are "are relics of my 2.4.11 testing". Maybe >> find_success and find_total can be similarly removed. > > Maybe add_total, del_total, find_success and find_total should be similarly removed altogether? > It seems those can't provide useful info when OOM occurs? And we can thus avoid touching the > swap_cache_info cacheline. At least makes sense to me, AFAIKU, these are not statistics one could easily use to tune system performance because they are not easily accessile. Maybe simply propose removal?
On 2022/6/2 16:41, David Hildenbrand wrote: > On 02.06.22 09:29, Miaohe Lin wrote: >> On 2022/6/1 15:53, David Hildenbrand wrote: >>> On 01.06.22 04:11, Miaohe Lin wrote: >>>> On 2022/5/31 20:58, David Hildenbrand wrote: >>>>> On 31.05.22 04:55, Miaohe Lin wrote: >>>>>> On 2022/5/31 7:04, Andrew Morton wrote: >>>>>>> On Fri, 27 May 2022 17:26:25 +0800 Miaohe Lin <linmiaohe@huawei.com> wrote: >>>>>>> >>>>>>>> At swapoff time, we're going to swap in the pages continuously. So calling >>>>>>>> lookup_swap_cache would confuse statistics. We should use find_get_page >>>>>>>> directly here. >>>>>>> >>>>>>> Why is the existing behaviour wrong? swapoff() has to swap stuff in to >>>>>>> be able to release the swap device. Why do you believe that this >>>>>>> swapin activity should not be accounted? >>>>>> >>>>>> IMHO, statistics, e.g. swap_cache_info.find_success, are used to show the effectiveness >>>>>> of the swap cache activity. So they should only reflect the memory accessing activity >>>>>> of the user. I think swapoff can't reflect the effectiveness of the swap cache activity >>>>>> because it just swaps in pages one by one. Or statistics should reflect all the activity >>>>>> of the user including swapoff? >>>>> >>>>> I'm wondering who cares and why? >>>> >>>> I thought it's used to show the effectiveness of the swapcache readahead algorithm. If nobody >>>> ever cares about it now, I'm fine to drop this patch. And could these statistics be removed >>>> since nobody cares about it? >>> >>> IIUC, they are printed (via show_swap_cache_info()), which is called via >>> show_free_areas() -- primarily used via show_mem(). show_mem() is >>> primarily used when OOM, when allocation fails and we warn, from the OOM >>> killer, on panic(). >>> >>> I am not sure how useful for (OOM ?) debugging the find_success vs. >>> find_total stats are at all. They are from ancient times. In >>> bb63be0a091c ("tmpfs: move swap_state stats update") we removed other >>> statistics that are "are relics of my 2.4.11 testing". Maybe >>> find_success and find_total can be similarly removed. >> >> Maybe add_total, del_total, find_success and find_total should be similarly removed altogether? >> It seems those can't provide useful info when OOM occurs? And we can thus avoid touching the >> swap_cache_info cacheline. > > At least makes sense to me, AFAIKU, these are not statistics one could > easily use to tune system performance because they are not easily > accessile. Maybe simply propose removal? I tend to agree with you. Will try to do it soon. Thanks! > >
diff --git a/mm/swapfile.c b/mm/swapfile.c index 960d14a4b19e..e033a53a99df 100644 --- a/mm/swapfile.c +++ b/mm/swapfile.c @@ -1865,7 +1865,12 @@ static int unuse_pte_range(struct vm_area_struct *vma, pmd_t *pmd, offset = swp_offset(entry); pte_unmap(pte); swap_map = &si->swap_map[offset]; - page = lookup_swap_cache(entry, vma, addr); + /* + * Since we're going to swap in the pages continuously, + * calling lookup_swap_cache() would confuse statistics. + */ + page = find_get_page(swap_address_space(entry), + swp_offset(entry)); if (!page) { struct vm_fault vmf = { .vma = vma,
At swapoff time, we're going to swap in the pages continuously. So calling lookup_swap_cache would confuse statistics. We should use find_get_page directly here. Signed-off-by: Miaohe Lin <linmiaohe@huawei.com> --- mm/swapfile.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-)