(Re)implement the BFS scheduler into the FreeBSD - Final report

Abstract

Ovewview of accomplished milestone goals

  1. Simple scheduler with 64 round robin queues. I will also publish simple benchmarking results. - Acccomplished, benchmarks published on project blog page.

  2. The 64 queues act according to the BFS specification (With necessary modifications to match the FreeBSD design) Static priorities and SCHED_ISO are taken round robin, SCHED_NORMAL and SCHED_IDLEPRIO are taken according to their deadline. (The lookup is O(n)). I will also publish the results of the same benchmark tests as in the previous release point. - Accomplished, the necessary modifications have been described on my blog page.

  3. Implementing the scalability features to the BFS as specified in the BFS specification. I might also consider adding improvements which are not part of the BFS spec. I will also publish the results of the same benchmark tests as in the previous release points.-Partially accomplished. I implemented cache locality and CPU affinity. I considered researching the scenarios where the scheduler caused bad user experience and fixing it as my priority.

  4. Running (implementing) additional benchmarks, analysing results. Finding the cause of possible bad results, bug fixing.-Accomplished, benchmarks have been published on my project blog page.

Scheduler characteristics

The scheduler shows the best performance when running on top of small number of CPU cores. Here I present the sysbench benchmark on amd64 machine with 2 cores. When the number of cores increases, the scheduler performance goes down when compared to the other schedulers (4BSD and ULE). http://rudot.blog.com/files/2011/08/plot_sysbench_2cpu.gif

# of threads

4BSD

FBFS

ULE

1

567.67

552.79

551.22

2

1016.09

947.07

929.73

3

996.46

949.89

935.66

4

975.27

950.46

924.17

5

954.44

950.58

919.60

6

940.93

948.40

913.45

7

921.10

948.32

897.68

8

921.26

946.30

898.29

9

911.30

946.30

889.82

10

906.52

946.18

885.45

11

897.82

945.69

878.32

12

893.87

945.65

874.08

13

886.44

944.82

866.88

14

883.50

942.59

863.34

15

876.91

940.93

858.07

16

869.90

940.91

857.42

More information

To find out more information about the scheduler, latest patches, or what other people say about this scheduler, please visit the project blog page http://rudot.blog.com

RudolfTomori/rudotSoC2011/report (last edited 2011-08-20T12:12:20+0000 by RudolfTomori)