On Tue, Sep 25, 2012 at 05:00:30PM +0200, Dor Laor wrote: > On 09/24/2012 02:02 PM, Raghavendra K T wrote: > >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? > > No, I meant to clone the implementation of the current spin lock > code in order to set any order you may like for the ticket > selection. > (even for a non pvticket lock version) Wouldn't that defeat the purpose of trying the test the different implementations that try to fix the lock-holder preemption problem? You want something that you can shoe-in for all work-loads - also for this test system. > > For instance, let's say you have N threads trying to grab the lock, > you can always make the ticket go linearly from 1->2...->N. > Not sure it's a good idea, just a recommendation. So round-robin. Could you make NCPUS threads, pin them to CPUs, and set them to be SCHED_RR? Or NCPUS*2 to overcommit. > > >Also I believe time should be passed via sysfs / hardcoded for each > >type of lock we are mimicking > > Yap > > > > >> > >>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. > > > > Do you mean the various options for PLE/pvticket/other? I haven't > thought of it and assumed its static but it can also be controlled > through the temporary /sys interface. > > Thanks for following up! > Dor > -- > To unsubscribe from this list: send the line "unsubscribe linux-kernel" in > the body of a message to majordomo@xxxxxxxxxxxxxxx > More majordomo info at http://vger.kernel.org/majordomo-info.html > Please read the FAQ at http://www.tux.org/lkml/ > -- 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