ufsstat - testers / feedback wanted!
Denis Antrushin
DAntrushin at mail.ru
Fri Oct 14 02:34:45 PDT 2005
Brian Candler wrote:
> On Thu, Oct 13, 2005 at 11:10:26AM -0700, Brooks Davis wrote:
>
>>>I don't think you can measure one single interger (or 64bit) increase in face
>>>of a operation that has to access backing store. Even if there is a
>>>performance hit, you don't have to build your kernel with the option enabled.
>>
>>The one thing I'd be worried about here is that 64bit updates are
>>expensive on 32bit machines if you want them to be atomic. Relative to
>>backing store they probably still don't matter, but the might be
>>noticable.
>
>
> I'd be grateful if you could clarify that point for me. Are you saying that
> if I write
>
> long long foo;
> ...
> foo++;
>
> then the C compiler generates code for 'foo++' which is not thread-safe?
> (And therefore I would have to protect it with a mutex or critical section)
Yes. On 32-bit it looks something like that:
cltd
movl $1 %eax
movl $0, %edx
addl -16(%ebp), %eax
adcl -12(%ebp), %edx
movl %eax, -16(%ebp)
movl %edx, -12(%ebp)
> Or are you saying that the C compiler inserts its own code around foo++ to
> turn it into a critical section, and therefore runs less efficiently than
> you'd expect?
C compilers not that smart yet, AFAIK :-)
More information about the freebsd-current
mailing list