LinSched, a Userspace Linux Scheduler Simulator

Well, this is quite interesting. This is one of those items where I have to make sure everybody realises I’m no developer as to not make myself look like an idiot. Having said that – LinSched. It’s a user-space program that hosts the Linux kernel scheduler, so you can create and test scheduling policies on arbitrary hardware topologies – without actually having to work with the real hardware.

Originally developed at the University of North Carolina, it is being used by Google to test scheduler policies. “At Google we have used Linsched as a testing tool to validate the behavior of the kernel scheduler,” details Google’s Ranjit Manomohan, “We could cut down our validation time from several days to a couple of hours due to the ability to run multiple tests on several different types of hardware models.”

This has already led to several improvements in the kernel scheduler, thanks to the high fegree of code sharing between LinSched and the ‘real’ scheduler. “Due to the high degree of code sharing between LinSched and the Linux scheduler, porting LinSched code to Linux is reasonably straightforward,” Manomohan explains, “LinSched may be especially useful to those who are new to Linux scheduler development.”

“Since Linsched allows arbitrary hardware topologies to be modeled, it enables testing of scheduler changes on hardware that may not be easily accessible to the developer,” he adds, “For example, most developers don’t have access to a quad-core quad-socket box, but they can use LinSched to see how their changes affect the scheduler on such boxes.”

The code is out there.

22 Comments

  1. 2010-10-13 10:47 am
  2. 2010-10-13 3:42 pm
    • 2010-10-13 4:16 pm
      • 2010-10-13 5:20 pm
        • 2010-10-13 5:37 pm
        • 2010-10-13 7:52 pm
  3. 2010-10-13 7:51 pm
    • 2010-10-13 9:01 pm
      • 2010-10-14 7:24 am
        • 2010-10-14 8:24 am
          • 2010-10-14 1:27 pm
        • 2010-10-14 8:49 am
          • 2010-10-14 1:30 pm
        • 2010-10-14 9:47 am
          • 2010-10-14 10:59 am
    • 2010-10-13 9:08 pm
    • 2010-10-14 5:27 am
    • 2010-10-15 2:12 am
  4. 2010-10-14 7:24 am
  5. 2010-10-14 4:15 pm
    • 2010-10-15 2:07 am
      • 2010-10-15 8:35 am