Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 2 Apr 2009 18:19:30 +0800
From:      =?GB2312?B?tN7R0mNjdWl5eWFuQHNpbmEuY29t?= <ccuiyyan@gmail.com>
To:        freebsd-current@freebsd.org
Subject:   dup() scales badly on multicore platform
Message-ID:  <4451ccf20904020319r6b66f390vebbb678b9e8eb2ab@mail.gmail.com>

index | next in thread | raw e-mail

[-- Attachment #1 --]
Dear all;

       i benchchmark the dup() system call on 32 cores machine in
FreeBSD-current8.0.

       The results are bad. The phenomenon is easy to come out. Each
process(not thread) on the core

       dup() its private file, and close() in a tight loop. The time
completing the parallel workload

       is considered as performance. At first,  i think there are some
locks. However, lock profiling

       in FreeBSD is strange and interesting. I attach the graph and lock
profiling. Any ideas?

[-- Attachment #2 --]
 mutex:process lock)
     149       408    12180876      213508      146766     82      1  0   1322 /usr/src/sys/kern/kern_clock.c:286 (spin mutex:sched lock 1)
    2790      2240      453750      217852         710    639    306  0    334 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:USB device mutex)
   31220     20331   466506511      223166     1600017    291      0  0    353 /usr/src/sys/kern/kern_descrip.c:710 (sleep mutex:process lock)
     153       601    12195293      258655      146277     83      1  0   2039 /usr/src/sys/kern/kern_clock.c:286 (spin mutex:sched lock 2)
     151       395    12208207      268080      146745     83      1  0   2165 /usr/src/sys/kern/kern_clock.c:286 (spin mutex:sched lock 3)
    7974     52578      298977      276284        1212    246    227  0    176 /usr/src/sys/vm/vm_glue.c:689 (sleep mutex:process lock)
    2332     13892      147200      302482         710    207    426  0    136 /usr/src/sys/dev/usb2/core/usb2_request.c:474 (sleep mutex:Giant)
    8737     15271     4299801      338888       25016    171     13  0    769 /usr/src/sys/vm/uma_core.c:2524 (sleep mutex:g_bio)
   15498     13395     3934241      343776       25016    157     13  0    779 /usr/src/sys/vm/uma_core.c:1990 (sleep mutex:g_bio)
     162       356      419733      356862        4579     91     77  0   3547 /usr/src/sys/kern/sched_ule.c:2074 (spin mutex:sched lock 3)
    1165     12708      470365      387472         713    659    543  0     76 /usr/src/sys/kern/subr_turnstile.c:547 (spin mutex:turnstile chain)
     254       916      844616      388616        8279    102     46  0   2864 /usr/src/sys/kern/kern_intr.c:800 (spin mutex:sched lock 1)
    6956     18191     1511441      402382        3169    476    126  0    228 /usr/src/sys/vm/vm_fault.c:1007 (sleep mutex:vm object)
     136    130565       28795      433914         332     86   1306  0    302 /usr/src/sys/kern/sched_ule.c:2569 (spin mutex:sched lock 1)
     176       446      494854      464029        5375     92     86  0   4487 /usr/src/sys/kern/sched_ule.c:2074 (spin mutex:sched lock 2)
   38417      7562    13164154      469326        5766   2283     81  0    689 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:Giant)
   30603      9639    12304039      538138       12508    983     43  0    419 /usr/src/sys/dev/ata/ata-queue.c:177 (sleep mutex:ATA queue lock)
     164       419      581799      553747        6732     86     82  0   5672 /usr/src/sys/kern/sched_ule.c:2074 (spin mutex:sched lock 1)
     195      9941     2829970      616121       32150     88     19  0   3494 /usr/src/sys/kern/kern_timeout.c:436 (spin mutex:callout)
     182      4983     2243023      672841       25374     88     26  0   3584 /usr/src/sys/kern/kern_timeout.c:325 (spin mutex:callout)
    5961     22422      490335      780349        3116    157    250  0    945 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:sleep mtxpool)
    6763     89799     1123998      804901        3482    322    231  0    122 /usr/src/sys/vm/vm_object.c:447 (sleep mutex:vm object)
   17068     15023    24074540      916282       98813    243      9  0   1414 /usr/src/sys/geom/geom_io.c:68 (sleep mutex:bio queue)
    8014     13019      792214     1146370        1119    707   1024  0    698 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:ohci0)
    5210      8052      753070     1191131        1066    706   1117  0    712 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:ehci0)
    8733     10715     3109705     1229676        1333   2332    922  0    342 /usr/src/sys/dev/usb2/core/usb2_transfer.c:1809 (sleep mutex:USB device mutex)
     212      1750     5995122     1452339       69777     85     20  0   8658 /usr/src/sys/kern/kern_timeout.c:272 (spin mutex:callout)
    4458     17933    26800701     1520828       93790    285     16  0   3149 /usr/src/sys/kern/subr_sleepqueue.c:236 (spin mutex:sleepq chain)
     250       608   569869085     1706686     4774453    119      0  0  12389 /usr/src/sys/kern/kern_timeout.c:246 (spin mutex:callout)
    4463     16718     3315242     1725846        5334    621    323  0    771 /usr/src/sys/kern/kern_intr.c:1133 (sleep mutex:Giant)
    1809    219449      129038     2286857         211    611  10838  0    209 /usr/src/sys/vm/vm_fault.c:375 (sleep mutex:vm object)
     924    164275       36963     2554204         200    184  12771  0    198 /usr/src/sys/kern/kern_mutex.c:137 (sleep mutex:vm object)
    9545    367923     1187075     2814977        2155    550   1306  0    238 /usr/src/sys/vm/vm_fault.c:297 (sleep mutex:vm object)
    1678     18926     2260649     3208378        7872    287    407  0    725 /usr/src/sys/kern/kern_conf.c:422 (sleep mutex:Giant)
    1683    101889     2267373     3829747        7937    285    482  0    784 /usr/src/sys/kern/kern_conf.c:454 (sleep mutex:Giant)
help

Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4451ccf20904020319r6b66f390vebbb678b9e8eb2ab>