All of lore.kernel.org
 help / color / mirror / Atom feed
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


  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.