[haiku] Re: Scheduler (was: Re: Re: Multi-track recording and compositing)

  • From: "Bruno Albuquerque" <bga@xxxxxxxxxxxxx>
  • To: haiku@xxxxxxxxxxxxx
  • Date: Sun, 07 Jun 2009 07:37:46

On Sat, 06 Jun 2009 22:38:13 +0200, Stephan Assmus said:

> On 2009-06-07 at 00:13:42 [+0200], Cyan <cyanh256@xxxxxxxxxxxx> wrote:
> > I posted a scheduler timing test app the last time this topic came 
> > up ( 
> > http://knothole.no-ip.org/timingtest.zip ) which got a few 
> > downloads, but 
> > I haven't heard of anyone running this under Haiku yet. Did anyone 
> > try it?
> 
> Interesting. This is a run I did when the machine was totally idle 
> otherwise:

These are my results with an idle system just after boot:

System "idle" : 

Version 1.0
Idle,  no CPU load random test...  47µs jitter [excellent]
Idle,  no CPU load 100Hz test....  14µs jitter [earth-shattering!]
Idle,  no CPU load 1kHz test.....  47µs jitter [excellent]
Pulsed normal load random test...  42µs jitter [excellent]
Pulsed normal load 100Hz test....  16µs jitter [earth-shattering!]
Pulsed normal load 1kHz test.....  46µs jitter [excellent]
Steady normal load random test...  10µs jitter [earth-shattering!]
Steady normal load 100Hz test....   8µs jitter [earth-shattering!]
Steady normal load 1kHz test.....  14µs jitter [earth-shattering!]
Pulsed urgent load random test...  15µs jitter [earth-shattering!]
Pulsed urgent load 100Hz test....  45µs jitter [excellent]
Pulsed urgent load 1kHz test.....  52µs jitter [excellent]
Steady urgent load random test...  11µs jitter [earth-shattering!]
Steady urgent load 100Hz test....   9µs jitter [earth-shattering!]
Steady urgent load 1kHz test.....  33µs jitter [excellent]
Pulsed R. T.  load random test...  45µs jitter [excellent]
Pulsed R. T.  load 100Hz test....  55µs jitter [excellent]
Pulsed R. T.  load 1kHz test.....  48µs jitter [excellent]
Pulsed R.T.D. load random test...  46µs jitter [excellent]
Pulsed R.T.D. load 100Hz test....  46µs jitter [excellent]
Pulsed R.T.D. load 1kHz test.....  47µs jitter [excellent]
Please wait...
Misc.  system load random test... 108µs jitter [very good]
Misc.  system load 100Hz test.... 283µs jitter [okay]
Misc.  system load 1kHz test..... 454µs jitter [very poor]

Overall rating: [very poor]

It seems that whatever the "Misc. system load" tests are doing, we are 
bad at handling that. Other than that, I did notice something. First 
some background:

I have a bad case of the problem where the system sometimes simply 
freezes up for a few seconds. It is noticeable because the entire 
desktop stops redrawing (mouse still works) and, for example, the 
Deskbar clock stops updating (I have show seconds enabled) and if 
Activity Monitor is running it also stops for the same period. My first 
theory about this was a scheduler problem, followed by a general IO 
problem and a memory allocation problem. it seems that although our 
scheduler is not shining right now, it is not responsible for what I 
see. Here is a run of the test where I performed a SVN up in the middle 
of it (usually the system freezes for a few seconds while svn is 
scanning the files and also at the end when it is probably cleaning 
itself up (removing the locks, for example). I don't remember seeing 
this when it was actually updating the files but I may have just missed 
it. Anyway:

Version 1.0
Idle,  no CPU load random test...  47µs jitter [excellent]
Idle,  no CPU load 100Hz test....  14µs jitter [earth-shattering!]
Idle,  no CPU load 1kHz test.....  47µs jitter [excellent]
Pulsed normal load random test...  42µs jitter [excellent]
Pulsed normal load 100Hz test....  16µs jitter [earth-shattering!]
Pulsed normal load 1kHz test.....  46µs jitter [excellent]
Steady normal load random test...  10µs jitter [earth-shattering!]
Steady normal load 100Hz test....   8µs jitter [earth-shattering!]
Steady normal load 1kHz test.....  14µs jitter [earth-shattering!]
Pulsed urgent load random test...  15µs jitter [earth-shattering!]
Pulsed urgent load 100Hz test....  45µs jitter [excellent]
Pulsed urgent load 1kHz test.....  52µs jitter [excellent]
Steady urgent load random test...  11µs jitter [earth-shattering!]
Steady urgent load 100Hz test....   9µs jitter [earth-shattering!]
Steady urgent load 1kHz test.....  33µs jitter [excellent]
Pulsed R. T.  load random test...  45µs jitter [excellent]
Pulsed R. T.  load 100Hz test....  55µs jitter [excellent]
Pulsed R. T.  load 1kHz test.....  48µs jitter [excellent]
Pulsed R.T.D. load random test...  46µs jitter [excellent]
Pulsed R.T.D. load 100Hz test....  46µs jitter [excellent]
Pulsed R.T.D. load 1kHz test.....  47µs jitter [excellent]
Please wait...
Misc.  system load random test... 108µs jitter [very good]
Misc.  system load 100Hz test.... 283µs jitter [okay]
Misc.  system load 1kHz test..... 454µs jitter [very poor]

Overall rating: [very poor]

As you can see, as far as the scheduler is concerned, not much changed 
from one run to the other. Also, I wanted to attribute this to the work 
when flushing caches from time to time but this should not freeze the 
entire UI, right?

Sysinfo output on this machine:

Kernel name: kernel_x86 built on: Jun  4 2009 22:01:36 version 0x1
4 Intel Core 2 Extreme, revision 4676 running at 3673MHz (ID: 
0x00000000 0x00000000)

CPU #0: "Intel(R) Core(TM)2 Extreme CPU X9650  @ 3.00GHz"
        Type 0, family 6, model 23, stepping 6, features 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE 
MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Intel: 0x0008e3bd
                SSE3 MONITOR DS-CPL EST TM2 CMPXCHG16B
        Extended AMD: type 0, family 0, model 0, stepping 0, features 
0x20100000
                NX 64
        Power Management Features:

        L2 Data cache 8-way set associative, 1 lines/tag, 64 bytes/line
        L2 cache: 6144 KB, 16-way set associative, 0 lines/tag, 64 
bytes/line

        Inst TLB: 2M-bytes pages, 4-way set associative, 8 entries OR 
4M, 4-way, 4 entries
        Inst TLB: 4K-bytes pages, 4-way set associative, 128 entries
        Data TLB: 4M-byte pages, 4-way set associative, 32 entries
        64-byte Prefetching
        L1 Data TLB: 4K-bytes pages, 4-way set associative, 16 entries
        L1 Data TLB: 4M-bytes pages, 4-way set associative, 16 entries
        L2 cache: 6144 KB, 24-way set associative, 64 bytes/line
        L1 inst cache: 32 KB, 8-way set associative, 64 bytes/line
        Data TLB: 4K-bytes pages, 4-way set associative, 256 entries
        L1 data cache: 32 KB, 8-way set associative, 64 bytes/line

CPU #1: "Intel(R) Core(TM)2 Extreme CPU X9650  @ 3.00GHz"
        Type 0, family 6, model 23, stepping 6, features 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE 
MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Intel: 0x0008e3bd
                SSE3 MONITOR DS-CPL EST TM2 CMPXCHG16B
        Extended AMD: type 0, family 0, model 0, stepping 0, features 
0x20100000
                NX 64
        Power Management Features:

        L2 Data cache 8-way set associative, 1 lines/tag, 64 bytes/line
        L2 cache: 6144 KB, 16-way set associative, 0 lines/tag, 64 
bytes/line

        Inst TLB: 2M-bytes pages, 4-way set associative, 8 entries OR 
4M, 4-way, 4 entries
        Inst TLB: 4K-bytes pages, 4-way set associative, 128 entries
        Data TLB: 4M-byte pages, 4-way set associative, 32 entries
        64-byte Prefetching
        L1 Data TLB: 4K-bytes pages, 4-way set associative, 16 entries
        L1 Data TLB: 4M-bytes pages, 4-way set associative, 16 entries
        L2 cache: 6144 KB, 24-way set associative, 64 bytes/line
        L1 inst cache: 32 KB, 8-way set associative, 64 bytes/line
        Data TLB: 4K-bytes pages, 4-way set associative, 256 entries
        L1 data cache: 32 KB, 8-way set associative, 64 bytes/line

CPU #2: "Intel(R) Core(TM)2 Extreme CPU X9650  @ 3.00GHz"
        Type 0, family 6, model 23, stepping 6, features 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE 
MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Intel: 0x0008e3bd
                SSE3 MONITOR DS-CPL EST TM2 CMPXCHG16B
        Extended AMD: type 0, family 0, model 0, stepping 0, features 
0x20100000
                NX 64
        Power Management Features:

        L4 Unified cache 24-way set associative, 1 lines/tag, 64 bytes/
line
        L2 cache: 6144 KB, 16-way set associative, 0 lines/tag, 64 
bytes/line

        Inst TLB: 2M-bytes pages, 4-way set associative, 8 entries OR 
4M, 4-way, 4 entries
        Inst TLB: 4K-bytes pages, 4-way set associative, 128 entries
        Data TLB: 4M-byte pages, 4-way set associative, 32 entries
        64-byte Prefetching
        L1 Data TLB: 4K-bytes pages, 4-way set associative, 16 entries
        L1 Data TLB: 4M-bytes pages, 4-way set associative, 16 entries
        L2 cache: 6144 KB, 24-way set associative, 64 bytes/line
        L1 inst cache: 32 KB, 8-way set associative, 64 bytes/line
        Data TLB: 4K-bytes pages, 4-way set associative, 256 entries
        L1 data cache: 32 KB, 8-way set associative, 64 bytes/line

CPU #3: "Intel(R) Core(TM)2 Extreme CPU X9650  @ 3.00GHz"
        Type 0, family 6, model 23, stepping 6, features 0xbfebfbff
                FPU VME DE PSE TSC MSR PAE MCE CX8 APIC SEP MTRR PGE 
MCA CMOV PAT
                PSE36 CFLUSH DS ACPI MMX FXSTR SSE SSE2 SS HTT TM PBE
        Extended Intel: 0x0008e3bd
                SSE3 MONITOR DS-CPL EST TM2 CMPXCHG16B
        Extended AMD: type 0, family 0, model 0, stepping 0, features 
0x20100000
                NX 64
        Power Management Features:

        L0 1-way set associative, 1 lines/tag, 1 bytes/line
        L2 cache: 6144 KB, 16-way set associative, 0 lines/tag, 64 
bytes/line

        Inst TLB: 2M-bytes pages, 4-way set associative, 8 entries OR 
4M, 4-way, 4 entries
        Inst TLB: 4K-bytes pages, 4-way set associative, 128 entries
        Data TLB: 4M-byte pages, 4-way set associative, 32 entries
        64-byte Prefetching
        L1 Data TLB: 4K-bytes pages, 4-way set associative, 16 entries
        L1 Data TLB: 4M-bytes pages, 4-way set associative, 16 entries
        L2 cache: 6144 KB, 24-way set associative, 64 bytes/line
        L1 inst cache: 32 KB, 8-way set associative, 64 bytes/line
        Data TLB: 4K-bytes pages, 4-way set associative, 256 entries
        L1 data cache: 32 KB, 8-way set associative, 64 bytes/line

3009437696 bytes free      (used/max  211263488 / 3220701184)
                           (cached    325988352)
    129153 semaphores free (used/max       1919 /     131072)
      3920 ports free      (used/max        176 /       4096)
      3923 threads free    (used/max        173 /       4096)
      2026 teams free      (used/max         22 /       2048)

-Bruno


Other related posts: