[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Xen-devel] credit2 data structures



>>> On 13.10.11 at 14:54, Juergen Gross <juergen.gross@xxxxxxxxxxxxxx> wrote:
> On 10/13/2011 02:24 PM, Jan Beulich wrote:
>>>>> On 13.10.11 at 12:11, George Dunlap<George.Dunlap@xxxxxxxxxxxxx>  wrote:
>>> On Thu, Oct 13, 2011 at 10:42 AM, Jan Beulich<JBeulich@xxxxxxxx>  wrote:
>>>> Apart from the possibility of allocating the arrays (and maybe also the
>>>> cpumask_t-s) separately (for which I can come up with a patch on top
>>>> of what I' currently putting together) - is it really necessary to have
>>>> all these, the more that there can be multiple instances of the structure
>>>> with CPU pools?
>>> I'm not quite sure what it is that you're asking.  Do you mean, are
>>> all of the things in each runqueue structure necessary?  Specifically,
>>> I guess, the cpumask_t structures (because the rest of the structure
>>> isn't significantly larger than the per-cpu structure for credit1)?
>> No, it's really the NR_CPUS-sized array of struct csched_runqueue_data.
>> Credit1 otoh has *no* NR_CPUS sized arrays at all.
>>
>>> At first blush, all of those cpu masks are necessary.  The assignment
>>> of cpus to runqueues may be arbitrary, so we need a cpu mask for that.
>>>   In theory, "idle" and "tickled" only need bits for the cpus actually
>>> assigned to this runqueue (which should be 2-8 under normal
>>> circumstances).  But then we would need some kind of mechanism to
>>> translate "mask just for these cpus" to "mask of all cpus" in order to
>>> use the normal cpumask mechanisms, which seems like a lot of extra
>>> complexity just to save a few bytes.  Surely a system with 4096
>>> logical cpus can afford 6 megabytes of memory for scheduling?
>> I'm not concerned about the total amount if run on a system that
>> large. I'm more concerned about this being a single chunk (possibly
>> allocated post-boot, where we're really aiming at having no
>> allocations larger than a page at all) and this size being allocated
>> even when running on a much smaller system (i.e. depending only
>> on compile time parameters).
>>
>>> For one thing, the number of runqueues in credit2 is actually meant to
>>> be smaller than the number of logical cpus -- it's meant to be one per
>>> L2 cache, which should have between 2 and 8 logical cpus, depending on
>>> the architecture.  I just put NR_CPUS because it was easier to get
>>> working.  Making that an array of pointers, which is allocated on an
>>> as-needed basis, should reduce that requirement a great deal.
>> That would help, but would probably not suffice (since a NR_CPUS
>> sized array of pointers is still going to be larger than a page). We
>> may need to introduce dynamic per-CPU data allocation for this...
> 
> Couldn't the run-queue data be dynamically allocated and the pcpu-data of
> credit2 contain a pointer to it?

Not if the per-CPU data is also per scheduler instance (which I can't
easily tell whether it is).

Jan


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


 


Rackspace

Lists.xenproject.org is hosted with RackSpace, monitoring our
servers 24x7x365 and backed by RackSpace's Fanatical Support®.