Caz Yokoyama
2009-Jun-28 13:36 UTC
[Xen-devel] Has anyone ever talked about/implemented scheduling policy for Hyperthread/Multi-core/NUMA?
Hello Xen developers, I am new to this mailing list. I examined Credit scheduling and found that it does load balancing between symmetric multi processors (SMP). In the function, csched_load_balance(), it checks whether the physical CPU(PCPU) N+1 has something to do when PCPU N is nothing to do. Note: N is CPU ID. If so, N takes the job of N+1. If N+1 is idling, then N+2 is checked. In this scheme, N+1, N+2, . are checked in this order because csched_load_balance() assumes SMP. On Hyperthread/Multi-core/NUMA, it is better to check the closest neighbor first, i.e. the same Hyperthread CPU first, then the same socket CPU second, then others. To find the closest neighbor first, I am thinking to have a 2 dimensional array. I.e. for CPU N, Neighbor[N, 0] = CPU ID of the same Hyperthread CPU Neighbor[N, 1] = CPU ID of the same socket CPU Neighbor[N, 2] = CPU ID of the same socket CPU Neighbor[N, 3] = CPU ID of others Neighbor[N, 4] = CPU ID of others ... 1. Has anyone ever talked about or implemented csched_load_balance() for Hyperthread/Multi-core/NUMA? 2. is my understanding above correct? 3. Is the current implementation of csched_load_balance() the result of evaluation even on Hyperthread/Multi-core/NUMA? 4. Do you have better idea for finding closest neighbor first? 5. Do you have an idea how to build the array, Neighbor[]? Thank you. -Caz Yokoyama, caz at caztech dot com. 503-804-1028(m). _______________________________________________ Xen-devel mailing list Xen-devel@lists.xensource.com http://lists.xensource.com/xen-devel