List:Commits« Previous MessageNext Message »
From:Olav Sandstaa Date:June 24 2008 8:24am
Subject:Re: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172
View as plain text  
Vladislav Vaintroub wrote:
>>>   -In SerialLog::createNewWindow you have an optimization to only
>>>       
>> read
>>     
>>> the size of the file if the highWater == 0. This saves a system call
>>> once in a while, but if I understand the code correctly this code only
>>> runs each time you actually switches to a new log file. If this is the
>>> case, I am not sure if an extra system call is worth to optimize away?
>>>       
>> Disagree.  (highWater == 0) means  that you are actually going to
>> switch
>> files.  If it is not zero, which is most of the time by far, you don't
>> want
>> to do this stuff.
>>
>>     
> Olav's original point (and I agreed with this point already) is that using
> highWater and saving fstat/GetFileSizeEx
> does not seem to bring a measurable performance gain. On the other hand,
> messing up with highWater makes code harder to read.
>   

In addition to making it harder to read it also makes it harder to 
maintain since it would introduce a new dependency on highWater. If 
anyone should need to change some code that maintain the value of 
highWater they had to take into account this new usage of it.

About the performance impact of having this system call. If I understood 
the code correctly this will be called once for each log file switch. 
With a default size of log file of 10 MB and with current disks able to 
write maximum (optimistically) 100 MB/s this should result in maximum 10 
extra system calls per second (much less than the context switch frequency).

> After thinking a while about it, I prefer to check in a version that *does
> not* use highWater hack. But if measurements done by PAE, Kelly, Intel or
> Hakan show a bottleneck here, we can use this optimization.  In my opinion
> it could be a sane overall strategy for Falcon (don't optimize too early and
> try to keep code straight, unless measurement shows potential savings of a
> particular optimization).
>   

Mostly agree, I still think it is important to look for optimizations 
early but then only include them if we think they might have an impact.

>>>   -For the two new member functions in the SerialLogFile class you
>>>       
>> use
>>     
>>> uint64 for representing the size of the file. The exiting member
>>> functions and internal variables use int64 for representing the file
>>>       
>> size.
>>
>> Agree to use signed.
>>     
>
> So , now there are 3 of us who believe in existence of negative file sizes;)
>   

:-) It is more that I believe in consistent interfaces. I would not 
object if we rewrote all the methods of the SerialLogFile class to use 
unsigned types for values relating to the file size.

..olav

Thread
bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Vladislav Vaintroub19 Jun
  • Re: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Olav Sandstaa20 Jun
    • RE: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Vladislav Vaintroub20 Jun
    • RE: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Kevin Lewis22 Jun
      • RE: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Vladislav Vaintroub22 Jun
        • RE: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Kevin Lewis23 Jun
        • Re: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712)WL#4172Sergei Golubchik23 Jun
        • Re: bzr commit into mysql-6.0-falcon branch (vvaintroub:2712) WL#4172Olav Sandstaa24 Jun