From: David Hildenbrand <david@redhat.com>
To: cgel.zte@gmail.com, bsingharora@gmail.com, akpm@linux-foundation.org
Cc: yang.yang29@zte.com.cn, linux-kernel@vger.kernel.org, linux-mm@kvack.org
Subject: Re: [PATCH] delayacct: track delays from ksm cow
Date: Wed, 16 Mar 2022 15:56:23 +0100 [thread overview]
Message-ID: <412dc01c-8829-eac2-52c7-3f704dbb5a98@redhat.com> (raw)
In-Reply-To: <20220316133420.2131707-1-yang.yang29@zte.com.cn>
On 16.03.22 14:34, cgel.zte@gmail.com wrote:
> From: Yang Yang <yang.yang29@zte.com.cn>
>
> Delay accounting does not track the delay of ksm cow. When tasks
> have many ksm pages, it may spend a amount of time waiting for ksm
> cow.
>
> To get the impact of tasks in ksm cow, measure the delay when ksm
> cow happens. This could help users to decide whether to user ksm
> or not.
>
> Also update tools/accounting/getdelays.c:
>
> / # ./getdelays -dl -p 231
> print delayacct stats ON
> listen forever
> PID 231
>
> CPU count real total virtual total delay total delay average
> 6247 1859000000 2154070021 1674255063 0.268ms
> IO count delay total delay average
> 0 0 0ms
> SWAP count delay total delay average
> 0 0 0ms
> RECLAIM count delay total delay average
> 0 0 0ms
> THRASHING count delay total delay average
> 0 0 0ms
> KSM count delay total delay average
> 3635 271567604 0ms
>
TBH I'm not sure how particularly helpful this is and if we want this.
[...]
> struct vm_area_struct *vma = vmf->vma;
> + vm_fault_t ret = 0;
> + bool delayacct = false;
>
> if (userfaultfd_pte_wp(vma, *vmf->pte)) {
> pte_unmap_unlock(vmf->pte, vmf->ptl);
> @@ -3294,7 +3296,11 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf)
> *
> * PageKsm() doesn't necessarily raise the page refcount.
> */
> - if (PageKsm(page) || page_count(page) > 3)
> + if (PageKsm(page)) {
> + delayacct = true;
> + goto copy;
> + }
> + if (page_count(page) > 3)
> goto copy;
> if (!PageLRU(page))
> /*
> @@ -3308,7 +3314,12 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf)
> goto copy;
> if (PageSwapCache(page))
> try_to_free_swap(page);
> - if (PageKsm(page) || page_count(page) != 1) {
> + if (PageKsm(page)) {
> + delayacct = true;
> + unlock_page(page);
> + goto copy;
> + }
> + if (page_count(page) != 1) {
> unlock_page(page);
> goto copy;
> }
> @@ -3328,10 +3339,18 @@ static vm_fault_t do_wp_page(struct vm_fault *vmf)
> /*
> * Ok, we need to copy. Oh, well..
> */
Why not simply check for PageKsm() here? I dislike the added complexity
above.
--
Thanks,
David / dhildenb
next prev parent reply other threads:[~2022-03-16 14:56 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-03-16 13:34 [PATCH] delayacct: track delays from ksm cow cgel.zte
2022-03-16 14:56 ` David Hildenbrand [this message]
2022-03-17 2:03 ` CGEL
2022-03-17 8:17 ` David Hildenbrand
2022-03-17 9:48 ` CGEL
2022-03-17 10:05 ` David Hildenbrand
2022-03-18 1:41 ` CGEL
2022-03-18 8:24 ` David Hildenbrand
2022-03-20 6:13 ` CGEL
2022-03-21 15:45 ` David Hildenbrand
2022-03-22 3:12 ` CGEL
2022-03-22 7:55 ` David Hildenbrand
2022-03-22 9:09 ` CGEL
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=412dc01c-8829-eac2-52c7-3f704dbb5a98@redhat.com \
--to=david@redhat.com \
--cc=akpm@linux-foundation.org \
--cc=bsingharora@gmail.com \
--cc=cgel.zte@gmail.com \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=yang.yang29@zte.com.cn \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.