Padraig O'Sullivan wrote:
> On Sat, May 2, 2009 at 3:19 PM, Jay Pipes <[email protected]> wrote:
> Further narrowing down has focused on the revision series r982.1.1
> through r982.1.5.  Attached is the diff for that, and somewhere in there
> is the regression.
> 
> Note that the goal here is not necessarily to undo Padraig's work on
> standardizing Bitset, but to look into why/where specifically we're
> seeing that regression on concurrency loads >128.  Remember, no shame,
> no blame, many hands make light work. :)
> 
>> From looking at it myself, one thing that could be an issue (I'm not
>> sure) is the assignment operator. For example, there are a few places
>> where I do something like this:
> 
>> param->needed_fields= *(table->read_set);
>> param->needed_fields|= *(table->write_set);
> 
>> Since the bitset assignment operator will erase all bits in
>> param->needed_fields and then insert a copy of each bit in
>> table->read_set into param->needed_fields, could there be some
>> un-necessary overhead here?
> 
>> Would it be better to do something like:
> 
>> param->needed_fields.reset();
>> param->needed_fields|= *(table->read_set);
>> param->needed_fields|= *(table->write_set);
> 
>> and avoid the assignment operator. Are the overheads of the assignment
>> operator likely to be an issue?

I don't think so, unless it is implemented poorly...

I took a quick look at the libstdc++ implementation, and it uses the default
copy assignment operator, which means that it basically does a memcpy() to do
the copy.  This means we have four memory hits for each element in the bitset
(twice in needed_fields, once in read_set, and once in write_set).

The latter approach does a memset(), and two times a loop over the read sets to
do the |=, it would probably be slower than doing a memcpy() and a loop once,
but not certain. It has 5 memory hits for each element in the bitset (three
memory hits in needed_fields, one in read_set, and one in write_set).

/Matz

> 
>> -Padraig
> 
> Eyeballs please! :)
> 
> Cheers,
> 
> Jay
> 
> Jay Pipes wrote:
>>>> So, the regression occurred somewhere in the 971.1.63 subtree:
>>>>
>>>> +----------------+-------------+-------------+
>>>> | version        | concurrency | tps         |
>>>> +----------------+-------------+-------------+
>>>> | trunk-971.1.62 |           2 | 1049.583333 |
>>>> | trunk-971.1.62 |           4 | 1441.090000 |
>>>> | trunk-971.1.62 |           8 | 1951.853333 |
>>>> | trunk-971.1.62 |          16 | 2594.673333 |
>>>> | trunk-971.1.62 |          32 | 3363.063333 |
>>>> | trunk-971.1.62 |          64 | 3915.066667 |
>>>> | trunk-971.1.62 |         128 | 3908.363333 |
>>>> | trunk-971.1.62 |         256 | 2933.943333 |
>>>> | trunk-971.1.62 |         512 | 1975.433333 |
>>>> | trunk-971.1.62 |        1024 | 1284.683333 |
>>>> | trunk-971.1.62 |        2048 |  603.176667 |
>>>> | trunk-971.1.63 |           2 | 1041.916667 |
>>>> | trunk-971.1.63 |           4 | 1435.300000 |
>>>> | trunk-971.1.63 |           8 | 1902.173333 |
>>>> | trunk-971.1.63 |          16 | 2583.553333 |
>>>> | trunk-971.1.63 |          32 | 3358.056667 |
>>>> | trunk-971.1.63 |          64 | 3889.813333 |
>>>> | trunk-971.1.63 |         128 | 3853.060000 |
>>>> | trunk-971.1.63 |         256 | 2344.860000 |
>>>> | trunk-971.1.63 |         512 | 1843.083333 |
>>>> | trunk-971.1.63 |        1024 | 1087.163333 |
>>>> | trunk-971.1.63 |        2048 |  442.003333 |
>>>> | trunk-989      |           2 | 1050.630000 |
>>>> | trunk-989      |           4 | 1417.433333 |
>>>> | trunk-989      |           8 | 1942.686667 |
>>>> | trunk-989      |          16 | 2612.166667 |
>>>> | trunk-989      |          32 | 3389.150000 |
>>>> | trunk-989      |          64 | 3944.433333 |
>>>> | trunk-989      |         128 | 3924.076667 |
>>>> | trunk-989      |         256 | 2964.776667 |
>>>> | trunk-989      |         512 | 1981.050000 |
>>>> | trunk-989      |        1024 | 1273.133333 |
>>>> | trunk-989      |        2048 |  563.350000 |
>>>> +----------------+-------------+-------------+
>>>>
>>>> A benchmark of 971.1.62 did *not* show the regression, so somewhere in
>>>> the bitset patch is our regression.  I'll be digging further down into
>>>> that subtree shortly, but it's good to know where the regression has
>>>> been introduced.
>>>>
>>>> Cheers!
>>>>
>>>> jay
>>>>
>>>> Jay Pipes wrote:
>>>>> Brian Aker wrote:
>>>>>> Hi!
>>>>>> A few places to look:
>>>>>> 971.1.47 (replication)
>>>>> Hi again!  OK, so I had to make a few quick changes to the automation
>>>>> suite to support non-integer revisions, but those have been made and I
>>>>> am happy (and relieved) to report that replication (r971.1.47) is NOT
>>>>> the cause of the regression... yeah, Jay! \o/
>>>>> +----------------+-------------+-------------+
>>>>> | version        | concurrency | tps         |
>>>>> +----------------+-------------+-------------+
>>>>> | trunk-989      |           2 | 1050.630000 |
>>>>> | trunk-989      |           4 | 1417.433333 |
>>>>> | trunk-989      |           8 | 1942.686667 |
>>>>> | trunk-989      |          16 | 2612.166667 |
>>>>> | trunk-989      |          32 | 3389.150000 |
>>>>> | trunk-989      |          64 | 3944.433333 |
>>>>> | trunk-989      |         128 | 3924.076667 |
>>>>> | trunk-989      |         256 | 2964.776667 |
>>>>> | trunk-989      |         512 | 1981.050000 |
>>>>> | trunk-989      |        1024 | 1273.133333 |
>>>>> | trunk-989      |        2048 |  563.350000 |
>>>>> | trunk-971.1.47 |           2 | 1049.383333 |
>>>>> | trunk-971.1.47 |           4 | 1407.180000 |
>>>>> | trunk-971.1.47 |           8 | 1930.036667 |
>>>>> | trunk-971.1.47 |          16 | 2604.316667 |
>>>>> | trunk-971.1.47 |          32 | 3379.230000 |
>>>>> | trunk-971.1.47 |          64 | 3889.433333 |
>>>>> | trunk-971.1.47 |         128 | 3910.143333 |
>>>>> | trunk-971.1.47 |         256 | 2933.186667 |
>>>>> | trunk-971.1.47 |         512 | 2021.323333 |
>>>>> | trunk-971.1.47 |        1024 | 1282.256667 |
>>>>> | trunk-971.1.47 |        2048 |  589.543333 |
>>>>> +----------------+-------------+-------------+
>>>>>> 971.1.63 (first introduction of Bitmap)
>>>>> Running this rev now...it may turn out to be the cause, and if so, I
>>>>> will dig down into Padraig and Monty's Bitmap changes to see which
>>>>> specific revision contains the culprit :)
>>>>> /me loves automated benching...
>>>>> Cheers,
>>>>> Jay
>>>>>> Cheers,
>>>>>>     -Brian
>>>>
>>>>>> On May 1, 2009, at 9:11 PM, Jay Pipes wrote:
>>>>>> Hi!
>>>>>> Somewhere in r990, we have had a significant regression, most evident in
>>>>>> concurrency levels greater than 128 concurrent connections:
>>>>>> +-----------+-------------+-------------+
>>>>>> | version   | concurrency | tps         |
>>>>>> +-----------+-------------+-------------+
>>>>>> | trunk-989 |           2 | 1050.630000 |
>>>>>> | trunk-989 |           4 | 1417.433333 |
>>>>>> | trunk-989 |           8 | 1942.686667 |
>>>>>> | trunk-989 |          16 | 2612.166667 |
>>>>>> | trunk-989 |          32 | 3389.150000 |
>>>>>> | trunk-989 |          64 | 3944.433333 |
>>>>>> | trunk-989 |         128 | 3924.076667 |
>>>>>> | trunk-989 |         256 | 2964.776667 |
>>>>>> | trunk-989 |         512 | 1981.050000 |
>>>>>> | trunk-989 |        1024 | 1273.133333 |
>>>>>> | trunk-989 |        2048 |  563.350000 |
>>>>>> | trunk-990 |           2 | 1038.133333 |
>>>>>> | trunk-990 |           4 | 1381.933333 |
>>>>>> | trunk-990 |           8 | 1897.276667 |
>>>>>> | trunk-990 |          16 | 2547.196667 |
>>>>>> | trunk-990 |          32 | 3331.570000 |
>>>>>> | trunk-990 |          64 | 3896.483333 |
>>>>>> | trunk-990 |         128 | 3850.016667 |
>>>>>> | trunk-990 |         256 | 2331.543333 |
>>>>>> | trunk-990 |         512 | 1862.316667 |
>>>>>> | trunk-990 |        1024 | 1103.903333 |
>>>>>> | trunk-990 |        2048 |  436.976667 |
>>>>>> +-----------+-------------+-------------+
>>>>>> The above TPS column is the average of 3 iterations of a readonly
>>>>>> sysbench workload for the revision/concurrency pair.
>>>>>> Unfortunately, r990 was a very big revision with a lot of changes:
>>>>>> http://bazaar.launchpad.net/~drizzle-developers/drizzle/development/revision/990
>>>>>> This makes it very difficult to tell what precisely has caused the
>>>>>> regression.  I'd like to suggest that going forward, we really try to
>>>>>> keep the size of merges and commits small so that it is easier to tell
>>>>>> where regressions occur.
>>>>>> Anyone interested in looking through the commit diff above is welcome to
>>>>>> suggest ideas where regression may have occurred...but it might be, like
>>>>>> Brian says, death by a thousand cuts...
>>>>>> Cheers!
>>>>>> Jay
>>>>>> --
>>>>>> _______________________________________________________
>>>>>> Brian "Krow" Aker, brian at tangent.org
>>>>>> Seattle, Washington
>>>>>> http://krow.net/                     <-- Me
>>>>>> http://tangent.org/                <-- Software
>>>>>> _______________________________________________________
>>>>>> You can't grep a dead tree.
>>>>
>>>>
>>>>>> _______________________________________________
>>>>>> Mailing list: https://launchpad.net/~drizzle-discuss
>>>>>> Post to     : [email protected]
>>>>>> Unsubscribe : https://launchpad.net/~drizzle-discuss
>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>> _______________________________________________
>>>> Mailing list: https://launchpad.net/~drizzle-discuss
>>>> Post to     : [email protected]
>>>> Unsubscribe : https://launchpad.net/~drizzle-discuss
>>>> More help   : https://help.launchpad.net/ListHelp
>>>>
>>
_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp
>>
>>

> _______________________________________________
> Mailing list: https://launchpad.net/~drizzle-discuss
> Post to     : [email protected]
> Unsubscribe : https://launchpad.net/~drizzle-discuss
> More help   : https://help.launchpad.net/ListHelp

-- 
Mats Kindahl
Senior Software Engineer
Database Technology Group
Sun Microsystems

_______________________________________________
Mailing list: https://launchpad.net/~drizzle-discuss
Post to     : [email protected]
Unsubscribe : https://launchpad.net/~drizzle-discuss
More help   : https://help.launchpad.net/ListHelp

Reply via email to