[libdispatch-dev] Results from running libdispatch tests on Solaris using libkqueue and libdispatch with patches

Joakim Johansson jocke at tbricks.com
Wed Jul 28 01:14:42 PDT 2010


On 27 jul 2010, at 12.33, Joakim Johansson wrote:

> I will try it using Mark Heily’s userspace pthread_workqueue implementation as well and see how that works.

And the answer is… Quite a bit better!

I just tried it with libdispatch r188 + Solaris patches + libkqueue r280, results included below (there is an example of the spurious failures mentioned in dispatch_priority2).

The number of threads are now around 17, which seems much more reasonable on my machine, and the machine is no longer pushed up to a system load of 75 when running the tests… :-)

Latency for starfish is much more consistent and has overall lower values.

It would definitely be very nice to have the pthread_workqueue implementation integrated as a fallback as previously discussed between Mark/Jordan over time.

Joakim


—————————————————
node5:~/gcd/trunk/testing> ./dispatch_api

==================================================
[TEST] Dispatch (Public) API
[PID] 13047
==================================================

        Actual: 412870
        Expected: 412870
[PASS] dispatch_get_main_queue
node5:~/gcd/trunk/testing> ./dispatch_c99

==================================================
[TEST] Dispatch C99
[PID] 13062
==================================================

        Actual: 412870
        Expected: 412870
[PASS] dispatch_get_main_queue
node5:~/gcd/trunk/testing> ./dispatch_cascade

==================================================
[TEST] Dispatch Cascade
[PID] 13077
==================================================

maxcount = 1172
                                                                                
       *                                                                        
       *                                                                        
       *                                                                        
    *  *                                                                        
    *  *                                                                        
    *  *                                                                        
    *  *                                                                        
    *  *                                                                        
    *  *                                                                        
    *  * *  *                                                                   
    *  * *  *                                                                   
    *  * *  * *                                                                 
    *  * *  * *  *                                                              
    * ** ** * *  * * * *                                       *                
    * ** ** * *  * * * *                                       *                
    * ** ** * * ** * * *  *           *                        *                
    * ** ** * **** * * ** * *  * * *  *                        *                
    * ** **** **** * * ** * * ** * *  * *  *     *             *                
   ** ** **** **** * * **** * ** * *  * ****   * * **  *       *                
node5:~/gcd/trunk/testing> ./dispatch_debug

==================================================
[TEST] Dispatch Debug
[PID] 13092
==================================================

node5:~/gcd/trunk/testing> ./dispatch_priority

==================================================
[TEST] Dispatch Priority
[PID] 13107
==================================================

LOW: 37
************************                                                        
DEFAULT: 71
*********************************************                                   
HIGH: 84
*****************************************************                           
        Actual: 192
        Expected: 192
[PASS] blocks completed
        Actual: 37
        Expected: <84
[PASS] high priority precedence
node5:~/gcd/trunk/testing> ./dispatch_priority2

==================================================
[TEST] Dispatch Priority (Set Target Queue)
[PID] 13122
==================================================

        Actual: 413170
        Expected: 413170
[PASS] q[i]
        Actual: 417480
        Expected: 417480
[PASS] q[i]
        Actual: 417530
        Expected: 417530
[PASS] q[i]
LOW: 63
****************************************                                        
DEFAULT: 64
****************************************                                        
HIGH: 66
******************************************                                      
        Actual: 193
        Expected: 192
[FAIL] blocks completed (dispatch_priority.c:82)
        dispatch_priority.c:82
        Actual: 63
        Expected: <66
[PASS] high priority precedence
node5:~/gcd/trunk/testing> ./dispatch_starfish

==================================================
[TEST] Dispatch Starfish
[PID] 13137
==================================================

lap: 10
count: 1000
delta: 723891749 ns
math: 361.584290 ns / lap
        Actual: 361
        Expected: <1000
[PASS] Latency
lap: 9
count: 1000
delta: 699582448 ns
math: 349.441782 ns / lap
        Actual: 349
        Expected: <1000
[PASS] Latency
lap: 8
count: 1000
delta: 799519154 ns
math: 399.360217 ns / lap
        Actual: 399
        Expected: <1000
[PASS] Latency
lap: 7
count: 1000
delta: 802168767 ns
math: 400.683700 ns / lap
        Actual: 400
        Expected: <1000
[PASS] Latency
lap: 6
count: 1000
delta: 720398591 ns
math: 359.839456 ns / lap
        Actual: 359
        Expected: <1000
[PASS] Latency
lap: 5
count: 1000
delta: 932910394 ns
math: 465.989208 ns / lap
        Actual: 465
        Expected: <1000
[PASS] Latency
lap: 4
count: 1000
delta: 825487034 ns
math: 412.331186 ns / lap
        Actual: 412
        Expected: <1000
[PASS] Latency
lap: 3
count: 1000
delta: 772381517 ns
math: 385.804954 ns / lap
        Actual: 385
        Expected: <1000
[PASS] Latency
lap: 2
count: 1000
delta: 826056037 ns
math: 412.615403 ns / lap
        Actual: 412
        Expected: <1000
[PASS] Latency
lap: 1
count: 1000
delta: 867257324 ns
math: 433.195467 ns / lap
        Actual: 433
        Expected: <1000
[PASS] Latency
node5:~/gcd/trunk/testing> ./queue_finalizer

==================================================
[TEST] Dispatch Queue Finalizer
[PID] 13152
==================================================

        Actual: 4133b0
        Expected: 4133b0
[PASS] dispatch_queue_new
        Actual: 8e3ce4e70cba8e97
        Expected: 8e3ce4e70cba8e97
[PASS] finalizer ran
node5:~/gcd/trunk/testing> /usr/sbin/psrinfo 
0       on-line   since 04/30/2010 16:29:35
1       on-line   since 04/30/2010 16:29:46
2       on-line   since 04/30/2010 16:29:46
3       on-line   since 04/30/2010 16:29:46
4       on-line   since 04/30/2010 16:29:46
5       on-line   since 04/30/2010 16:29:46
6       on-line   since 04/30/2010 16:29:46
7       on-line   since 04/30/2010 16:29:46
node5:~/gcd/trunk/testing> 

—————————————————




More information about the libdispatch-dev mailing list