On Wed, 2012-05-23 at 16:34 +0800, Liu ping fan wrote: > so we need to migrate some of vcpus from node-B to node-A, or to > node-C.
This is absolutely broken, you cannot do that. A guest task might want to be node affine, it looks at the topology sets a cpu affinity mask and expects to stay on that node. But then you come along, and flip one of those cpus to another node. The guest task will now run on another node and get remote memory accesses. Similarly for the guest kernel, it assumes cpu:node maps are static, it will use this for all kinds of things, including the allocation of per-cpu memory to be node affine to that cpu. If you go migrate cpus across nodes everything comes down. Please go do something else, I'll do this.