On 05/10/2010 07:47 PM, George Dunlap wrote:
It appears that in the new cpupools code:
* pdata_allocate is called from alloc_vcpu() with that cpu for the first time.
* this happens usually when dom0's cpus are allocated, as it cycles
through all of the cpus
No. It happens when idle vcpus are allocated. At this time there is no cpupool
existing, all physical cpus are marked as "free", e.g. they are in no pool at
all.
Dom0 vcpus are allocated in Pool-0. This pool is created after allocation of
the idle vcpus.
This seems a bit strange to me. Wouldn't it make more sense to pass,
or to make available, a cpumask of the cpus in a pool to the init
function?
No. A cpupool is created without any cpu in the beginning. Whenever a cpu is
added to a cpupool, alloc_pdata is called for this cpu.
BTW: Allocating the percpu data of the scheduler during the allocation of the
first vcpu on this cpu was in sched_credit.c before cpupools were introduced.
Also, is there documentation of the cpupool lifecycle anywhere, to
help scheduler writers understand what's going on?
Not yet.
I'll write something up in the next days.
Juergen
--
Juergen Gross Principal Developer Operating Systems
TSP ES&S SWE OS6 Telephone: +49 (0) 89 3222 2967
Fujitsu Technology Solutions e-mail: juergen.gross@xxxxxxxxxxxxxx
Domagkstr. 28 Internet: ts.fujitsu.com
D-80807 Muenchen Company details: ts.fujitsu.com/imprint.html
_______________________________________________
Xen-devel mailing list
Xen-devel@xxxxxxxxxxxxxxxxxxx
http://lists.xensource.com/xen-devel
|