I made some experiments to see how one could improve performance of
communication between MySQL Server and
the ndbd processes. In the process I stumbled over a performance
improvement that makes a very simple select query
fetching one record from ndbd via primary key and 2 integer attributes
execute 40% faster (only accounts for time spent
in MySQL Server and ndbd, including client will decrease improvement in
percent). This will be pushed into all
branches this week.
In addition I experimented with various priority settings. The
communication cost was decreased by 10% when I raised the
priority of the MySQL Server process (in the experiment it was actually
an NDB API test program but this should not make a
big difference). This plays well with experiments made a couple of
years ago on Solaris 7 where I was able to increase
performance by 50% by setting the API part in real-time scheduling mode.
The major reason for these improvements is due to the thread model and
with a higher priority on the MySQL Server part, there
are less context switches.
The experiments were made on a Mac OS X laptop with all processes on
localhost. The results is only a hint of that a few percent
improvements can be derived through simple means. However before
actually used in practice they should be tested and
verified on the HW and OS used.
Rgrds Mikael
PS: I mainly used the renice shell command (renice -10 pid increases
the priority of process with number pid where -20 <= prio <= 20)
Mikael Ronström, Senior Software Architect
MySQL AB, www.mysql.com
Jumpstart your cluster:
http://www.mysql.com/consulting/packaged/cluster.html
| Thread |
|---|
| • Some experiments | Mikael Ronström | 1 Feb |