From mboxrd@z Thu Jan 1 00:00:00 1970 From: "Yang, Xiaowei" Subject: Re: [PATCH] Add migration_cost option to scheduler Date: Tue, 10 Mar 2009 18:56:42 +0800 Message-ID: <49B6476A.6040401@intel.com> References: <49B4D0C8.5050504@intel.com> <0A882F4D99BBF6449D58E61AAFD7EDD606C4ECE3@pdsmsx502.ccr.corp.intel.com> <49B5E046.7090406@intel.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------090107030206010709090509" Return-path: In-Reply-To: <49B5E046.7090406@intel.com> List-Unsubscribe: , List-Post: List-Help: List-Subscribe: , Sender: xen-devel-bounces@lists.xensource.com Errors-To: xen-devel-bounces@lists.xensource.com To: "Tian, Kevin" Cc: 'George Dunlap' , "xen-devel@lists.xensource.com" , Keir Fraser List-Id: xen-devel@lists.xenproject.org This is a multi-part message in MIME format. --------------090107030206010709090509 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit Yang, Xiaowei wrote: > Tian, Kevin wrote: >>> From: George Dunlap >>> Sent: Monday, March 09, 2009 8:56 PM >>> >>> Hmm, I think this patch may not be exactly what we want. It looks >>> like it checks for how long a vcpu has been in its current stat, not >>> how recently it has been running. So if a vcpu sleeps for a long time >>> on a cpu that's running other workloads, then wakes up >>> (blocked->runnable), the cache is by no means "hot". But since it has >>> only been in the "runnable" state for a few hundred cycles, it won't >>> be migrated, even though there's little cost. >> Then to add a per-vcpu last_running_timestamp which is recorded when >> vcpu is scheduled out, could hit the purpose here? > Yes, it's more reasonable. I can make a patch. > The patch is attached. Had a quick test using the previous config and saw no obvious different result with it. May be explained by the fact that the benchmarks has no many IO operations - db and logfile are put to ramdisk for sysbench test. Anyway it's closer to what we really want. Thanks both of you! Signed-off-by: Xiaowei Yang Thanks, xiaowei --------------090107030206010709090509 Content-Type: text/x-patch; name="cache_hot.patch" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="cache_hot.patch" diff -r 115c97f32dc6 xen/common/sched_credit.c --- a/xen/common/sched_credit.c Tue Mar 10 00:18:39 2009 +0800 +++ b/xen/common/sched_credit.c Tue Mar 10 03:09:44 2009 +0800 @@ -328,7 +328,7 @@ static inline int static inline int __csched_vcpu_is_cache_hot(struct vcpu *v) { - int hot = ((NOW() - v->runstate.state_entry_time) < + int hot = ((NOW() - v->last_run_time) < ((uint64_t)vcpu_migration_delay * 1000u)); if ( hot ) diff -r 115c97f32dc6 xen/common/schedule.c --- a/xen/common/schedule.c Tue Mar 10 00:18:39 2009 +0800 +++ b/xen/common/schedule.c Tue Mar 10 03:00:36 2009 +0800 @@ -836,6 +836,7 @@ static void schedule(void) (test_bit(_VPF_blocked, &prev->pause_flags) ? RUNSTATE_blocked : (vcpu_runnable(prev) ? RUNSTATE_runnable : RUNSTATE_offline)), now); + prev->last_run_time = now; ASSERT(next->runstate.state != RUNSTATE_running); vcpu_runstate_change(next, RUNSTATE_running, now); diff -r 115c97f32dc6 xen/include/xen/sched.h --- a/xen/include/xen/sched.h Tue Mar 10 00:18:39 2009 +0800 +++ b/xen/include/xen/sched.h Tue Mar 10 02:59:15 2009 +0800 @@ -102,6 +102,9 @@ struct vcpu } runstate_guest; /* guest address */ #endif + /* last time when vCPU is scheduled out */ + uint64_t last_run_time; + /* Has the FPU been initialised? */ bool_t fpu_initialised; /* Has the FPU been used since it was last saved? */ --------------090107030206010709090509 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel --------------090107030206010709090509--