Granville Barnett

CPU Scheduling Simulator (CPUSS) 0.1 released!

I have an interest in CPU scheduling strategies so I thought I would make a framework (CPUSS) by which you could use standard strategies (first-come-first-served, shortest job first, round robin, priority etc) and also create your own and gather metrics from the strategies execution given n processes over T units of time (simulated time, simulated processes).

Download CPUSS 0.1 (or download later after you have read my summary of what is included in this release).

At the moment the features are fairly limited and the framework by which you can plug into to create your own strategies could be better, but remember this is the first early release.

Things to note about this release:

  • Simulates single core execution (multi-core/processor simulation is something that may be introduced depending on popularity, but would be interesting)
  • Two strategies ship with the bits at the moment:
    • FCFS
    • SJF
    • More in CPUSS 0.1 this release was primarily built around getting something released pretty quickly and seeing if the simulation environment could hold for various strategies
  • Metrics are gathered for free when using library strategies
    • If you create your own you must register a call to a single method, I won't bore you with the details as the documentation explains everything you need to know
  • Events exist so you can hook into the simulation, currently:
    • Runner.Started
    • Runner.Completed
    • Runner.ProcessStarted
    • Runner.ProcessCompleted
    • A preempted event will get added in the next release
  • Metrics that are gathered for every process include:
    • PID
    • Burst Time
    • Arrival Time
    • Start Time
    • Completion Time
    • At the moment I've done nothing that requires a process to have a priority but strategies will be introduced in CPUSS 0.2 that will require this.
  • Auto generation of process "loads" based on the principle that you define processes of varying properties, i.e. small, medium and large processes.  The arrival time, and PID of the processes is auto generated.  This feature will be particularly useful when testing custom strategies with varying scenarios to gain more balanced and comprehensive data to analyse further.
    • Small - 1ms - 40ms
    • Medium - 41ms - 100ms
    • Large - 101ms - 250ms

I think I have summarized up the main features.  Any feedback is gracefully encouraged.

Download CPUSS 0.1

Comments

No Comments