On 09/24/2012 02:12 PM, Dor Laor wrote:
In order to help PLE and pvticketlock converge I thought that a small test code should be developed to test this in a predictable, deterministic way. The idea is to have a guest kernel module that spawn a new thread each time you write to a /sys/.... entry. Each such a thread spins over a spin lock. The specific spin lock is also chosen by the /sys/ interface. Let's say we have an array of spin locks *10 times the amount of vcpus. All the threads are running a while (1) { spin_lock(my_lock); sum += execute_dummy_cpu_computation(time); spin_unlock(my_lock); if (sys_tells_thread_to_die()) break; } print_result(sum); Instead of calling the kernel's spin_lock functions, clone them and make the ticket lock order deterministic and known (like a linear walk of all the threads trying to catch that lock).
By Cloning you mean hierarchy of the locks? Also I believe time should be passed via sysfs / hardcoded for each type of lock we are mimicking
This way you can easy calculate: 1. the score of a single vcpu running a single thread 2. the score of sum of all thread scores when #thread==#vcpu all taking the same spin lock. The overall sum should be close as possible to #1. 3. Like #2 but #threads > #vcpus and other versions of #total vcpus (belonging to all VMs) > #pcpus. 4. Create #thread == #vcpus but let each thread have it's own spin lock 5. Like 4 + 2 Hopefully this way will allows you to judge and evaluate the exact overhead of scheduling VMs and threads since you have the ideal result in hand and you know what the threads are doing. My 2 cents, Dor
Thank you, I think this is an excellent idea. ( Though I am trying to put all the pieces together you mentioned). So overall we should be able to measure the performance of pvspinlock/PLE improvements with a deterministic load in guest. Only thing I am missing is, How to generate different combinations of the lock. Okay, let me see if I can come with a solid model for this. -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html