Hi Dario,

2015-05-12 10:06 GMT-04:00 Dario Faggioli <dario.faggi...@citrix.com>:
> In fact, printing the cpupool's CPU online mask
> for each vCPU is just redundant, as that is the
> same for all the vCPUs of all the domains in the
> same cpupool, while hard affinity is already part
> of the output of dumping domains info.
>
> Instead, print the intersection between hard
> affinity and online CPUs, which is --in case of this
> scheduler-- the effective affinity always used for
> the vCPUs.
>
> This change also takes the chance to add a scratch
> cpumask area, to avoid having to either put one
> (more) cpumask_t on the stack, or dynamically
> allocate it within the dumping routine. (The former
> being bad because hypervisor stack size is limited,
> the latter because dynamic allocations can fail, if
> the hypervisor was built for a large enough number
> of CPUs.) We allocate such scratch area, for all pCPUs,
> when the first instance of the RTDS scheduler is
> activated and, in order not to loose track/leak it
> if other instances are activated in new cpupools,
> and when the last instance is deactivated, we (sort
> of) refcount it.
>
> Such scratch area can be used to kill most of the
> cpumasks{_var}_t local variables in other functions
> in the file, but that is *NOT* done in this chage.
>
> Finally, convert the file to use keyhandler scratch,
> instead of open coded string buffers.
>
> Signed-off-by: Dario Faggioli <dario.faggi...@citrix.com>
> Cc: George Dunlap <george.dun...@eu.citrix.com>
> Cc: Meng Xu <xumengpa...@gmail.com>
> Cc: Jan Beulich <jbeul...@suse.com>
> Cc: Keir Fraser <k...@xen.org>
> ---
> Changes from v3:
>  * coding style and '!' vs '==NULL' consistency improved,
>    as requested during review
>
> Changes from v2:
>  * added refcounting, to avoid leaking the scratch cpumasks
>  * added some ASSERT()s to validate the refcounting
>
> Changes from v1:
>  * improved changelog;
>  * made a local variable to point to the correct
>    scratch mask, as suggested during review.
> ---
>  xen/common/sched_rt.c |   66 
> ++++++++++++++++++++++++++++++++++++++++++-------
>  1 file changed, 57 insertions(+), 9 deletions(-)
>
> diff --git a/xen/common/sched_rt.c b/xen/common/sched_rt.c
> index 7c39a9e..59ead57 100644
> --- a/xen/common/sched_rt.c
> +++ b/xen/common/sched_rt.c
> @@ -124,6 +124,24 @@
>  #define TRC_RTDS_BUDGET_REPLENISH TRC_SCHED_CLASS_EVT(RTDS, 4)
>  #define TRC_RTDS_SCHED_TASKLET    TRC_SCHED_CLASS_EVT(RTDS, 5)
>
> + /*
> +  * Useful to avoid too many cpumask_var_t on the stack.
> +  */
> +static cpumask_t **_cpumask_scratch;
> +#define cpumask_scratch _cpumask_scratch[smp_processor_id()]

The cpumask_scratch seems never used in this patch.. Did I miss anything?
If it's not used in any other places, do we really need this #define?

Thanks,

Meng


-----------
Meng Xu
PhD Student in Computer and Information Science
University of Pennsylvania
http://www.cis.upenn.edu/~mengxu/

_______________________________________________
Xen-devel mailing list
Xen-devel@lists.xen.org
http://lists.xen.org/xen-devel

Reply via email to