Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 27 Oct 2005 15:12:21 +0800
From:      David Xu <davidxu@freebsd.org>
To:        Xin LI <delphij@frontfree.net>
Cc:        current@freebsd.org, Marian Hettwer <MH@kernel32.de>
Subject:   Re: MySQL Performance 6.0rc1
Message-ID:  <43607DD5.3020708@freebsd.org>
In-Reply-To: <1130320668.810.87.camel@spirit>
References:  <435F48DA.6060009@kernel32.de> <1130320668.810.87.camel@spirit>

next in thread | previous in thread | raw e-mail | index | archive | help
Xin LI wrote:
> Hi, Marian,
> 
> 在 2005-10-26三的 11:14 +0200,Marian Hettwer写道:
> 
>>Hi Folks,
>>
>>I'm using RC1 on some of my test servers and workstations. So far, it 
>>runs very good (as in stable and fast) :)
>>However, I thought of doing a small benchmark of MySQL in comparison to 
>>Linux 2.6.8 (Debian Sarge) and the results are kinda... shocking.
> 
> [...]
> 
>>Any Ideas where this huge difference comes from? Did I oversee some 
>>debugging features still active in RC1 ?
> 
> 
> There are many factors that can affect the performance of MySQL.  Would
> you please post the output of "dumpfs /var | head -n 21" on your server?
> (Replace /var with whatever mountpoint that your database is stored in).
> 
> Some observations that I think can affect MySQL performance:
>  - Our malloc(3) implementation might be sub-optimal for the workload.
>  - Lack of some POSIX system call which was implemented in other ways
> (e.g. we do not have fsyncdata yet)
>  - Some detailed implementation difference between our and Linux's
> threading library, or MySQL itself.
> 
> I think David (davidxu@) had worked on performance of MySQL and he may
> have some suggestions.
> 
make sure key_buffer_size is 256M or more, set it in /etc/my.cnf:
[mysqld]
port            = 3306
socket          = /tmp/mysql.sock
skip-locking
key_buffer_size = 256M

also, after key buffer size is no longer a bottleneck factor, try
to repalce microtime() with getmicrotime() in gettimeofday syscall:
the syscall is in /sys/kern/kern_time.c, here is some benchmark results:

http://people.freebsd.org/~davidxu/mysql/gettimeofday_use_getmicrotime.txt
http://people.freebsd.org/~davidxu/mysql/gettimeofday_use_microtime.txt

Here is the ktrace dump for mysql server 4.1.14:
http://people.freebsd.org/~davidxu/mysql/mysql_ktrace.txt

Check gettimeofday syscall, it follows every I/O syscall, I think
our gettimeofday is tooooooo expensive, if we can directly get time from
memory, the performance will be improved further.

> BTW.  What file system are you using on your Debian test?  What's the
> mount options?
> 
> Cheers,




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