WARNING - OLD ARCHIVES

This is an archived copy of the Xen.org mailing list, which we have preserved to ensure that existing links to archives are not broken. The live archive, which contains the latest emails, can be found at http://lists.xen.org/
   
 
 
Xen 
 
Home Products Support Community News
 
   
 

xen-ia64-devel

Re: [Xen-ia64-devel] [PATCH] NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ is notreg

To: "Xu, Anthony" <anthony.xu@xxxxxxxxx>
Subject: Re: [Xen-ia64-devel] [PATCH] NEW_TLBFLUSH_CLOCK_PERIOD_SOFTIRQ is notregistered.
From: Isaku Yamahata <yamahata@xxxxxxxxxxxxx>
Date: Mon, 29 Jan 2007 19:29:05 +0900
Cc: xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
Delivery-date: Mon, 29 Jan 2007 02:28:27 -0800
Envelope-to: www-data@xxxxxxxxxxxxxxxxxx
In-reply-to: <51CFAB8CB6883745AE7B93B3E084EBE26F7BAF@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
List-help: <mailto:xen-ia64-devel-request@lists.xensource.com?subject=help>
List-id: Discussion of the ia64 port of Xen <xen-ia64-devel.lists.xensource.com>
List-post: <mailto:xen-ia64-devel@lists.xensource.com>
List-subscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=subscribe>
List-unsubscribe: <http://lists.xensource.com/cgi-bin/mailman/listinfo/xen-ia64-devel>, <mailto:xen-ia64-devel-request@lists.xensource.com?subject=unsubscribe>
References: <20070129092037.GA25482%yamahata@xxxxxxxxxxxxx> <51CFAB8CB6883745AE7B93B3E084EBE26F7BAF@xxxxxxxxxxxxxxxxxxxxxxxxxxxx>
Sender: xen-ia64-devel-bounces@xxxxxxxxxxxxxxxxxxx
User-agent: Mutt/1.4.2.1i
On Mon, Jan 29, 2007 at 05:58:44PM +0800, Xu, Anthony wrote:
> Isaku Yamahata write on 2007年1月29日 17:21:
> > On Mon, Jan 29, 2007 at 05:00:11PM +0800, Xu, Anthony wrote:
> > It doesn't optimize NEED_FLUSH itself.
> > The optimization path is executed when NEED_FLUSH return 0.
> > See flush_vtlb_for_context_switch() @ xen/arch/ia64/xehn/domain.c.
> > 
> > When CONFIG_XEN_IA64_TLBFLUSH_CLOCK is defined,
> > NEED_FLUSH() always returns 1. No optimization.
> > Suppose that CONFIG_XEN_IA64_TLBFLUSH_CLOCK is defined and
> > NEED_FLUSH() returns 0.
> > In that case, we can skip local_vhpt_flush() or local_flush_tlb_all().
> 
> Hi Isaku,
> 
> Thanks for your explanation.  
> 
> Suppose that CONFIG_XEN_IA64_TLBFLUSH_CLOCK is defined
> NEED_FLUSH() returns 0.
>  In that case, we can skip local_vhpt_flush() or local_flush_tlb_all().
> 
> But the skip is on the cost of new_tlbflush_clock_period calling 
> vcpu_vhpt_flush.
> 
> Anyway, vcpu_vhpt_flush must be called, the difference is where it is called.
> 
> I don't see the benefit of new_tlbflush_clock_period.
> 
> I must miss something.
> 
> 
> 
> Can you explain more?

How about the following example?
For simplicity, we consider only local_flush_tlb_all().
(The similar argument can be applied to vcpu_vhpt_flush())

suppose domM has two vcpus, vcpu0, vcpu1.
        domN has one vcpu, vcpu2.

- case 1
  vcpu0 and vcpu1 are running on same pcpu.
  vcpu0 runs.
  context switch <<<< local_flush_tlb_all() is necessry here
  vcpu1 runs.

- case 2
  vcpu0, vcpu1 and vcpu2 are running on the same pcpu
  vcpu0 runs
  context switch
  vcpu2 runs
  vcpu2 issues local_tlb_flush().
  context switch <<< local_flush_tlb_all() can be skipped.
  vcpu1 runs

You can confirm its effect by the perf-counters,
tlbflush_clock_cswitch_skip, flush_vtlb_for_context_switch and
tlbflush_clock_cswitch_purge.
Please note that local_flush_tlb_all() (or vcpu_vhpt_flush()) is called
everytime grant table unmapping without tlb insert tracking optimization.
But they aren't so often called with tlb insert tracking optimization,
tlb flush clock optimization becomes less effetive than before.
-- 
yamahata

_______________________________________________
Xen-ia64-devel mailing list
Xen-ia64-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-ia64-devel