2 x quad-core system is slower that 2 x dual core on FreeBSD
Alexey Popov
lol at chistydom.ru
Wed Nov 21 03:14:10 PST 2007
Hi.
Kris Kennaway wrote:
>> In the meantime there is unfortunately not a lot that can be done,
>> AFAICT. There is one hack that I will send you later but it is not
>> likely to help much. I will also think about how to track down the
>> cause of the contention further (the profiling trace only shows that
>> it comes mostly from vget/vput but doesn't show where these are called
>> from).
> Actually this patch might help. It doesn't replace lockmgr but it does
> fix a silly thundering herd behaviour. It probably needs some
> adjustment to get it to apply cleanly (it is about 7 months old), and I
> apparently stopped using it because I ran into deadlocks. It might be
> stable enough to at least see how much it helps.
Sorry, I didn't try you patch yet but I have other news.
As mentioned in the description of your patch there is probably a
scalability problem with stat() syscall on FreeBSD.
The PHP code of our site consists of large amount of modules. I think
this is true for many other large PHP sites.
I reached out that PHP calls lstat() for every path element of each file
it opens including modules. Truss output shows that PHP makes more than
2000 lstat's for one /index.php request. After investigation I found out
that lstats() are called from realpath() libc function. It turned out
that PHP has "realpath cache", but it's size by default is 16K which is
not enough for my files. I set realpath_cache_size to 256K and now there
is no that much lstat calls.
Performance of 8-core machine growed in ~ 50% for me on 7-STABLE. Now it
can handle 30 and more requests per seconds. I have the similiar results
with 6-STABLE. Now I have not that big %sys values as it was before (see
attached top output).
Nevertheless, Linux with its >50 rps is still far away from FreeBSD.
Linux makes that 2000+ lstat's without problem. There's still stat(),
open(), gettimeofday(), close() syscalls for each include file in PHP
that i can not switch off.
And also it is unclear for me what to do with MySQL which happened to
have the same problems for me.
With best regards,
Alexey Popov
More information about the freebsd-stable
mailing list