In a recent blog entry ("The MySQL “swap insanity” problem and the
effects of the NUMA architecture"
http://jcole.us/blog/archives/2010/09/28/mysql-swap-insanity-and-the-numa-architecture/),
Jeremy Cole describes a particular but common problem with large memory
installations of MySql on multi-core multi-cpu 64bit NUMA machines,
where debilitating swapping of large amounts of memory occurs even
when there is no (direct) indication of a need to swap.

Without getting into the details (it involves how Linux assigns memory
to the different nodes (each multi-core CPU is viewed as a
'node' in the Linux NUMA view)), the offered partial solution is to
start MySql using the
numactl[1] program, like:
 numactl --interleave all mysql

I was wondering if any of the SOLR people have used this when starting
up Apache
(or whatever servlet engine you use for your SOLR) to reduce unnecessary swap.

You probably want to be monitoring the NUMA memory hit statistics
found here, with and without the numactl, while testing this:
 /sys/devices/system/node/node*/numastat

--

Note that numactl has a number of other interesting and useful
features. One that I have used is the --cpubind  which restricts the
number of CPUs that an application can run on. There are times when
this can improve performance, such as when you have 2 demanding
applications running: by assigning one to half of the CPUs and the
other to the other half of
the CPUs, you _can_ have improved performance due to better locality, cache
hits, etc. It takes some tuning and experimentation. YMWV

-Glen
http://zzzoot.blogspot.com/

[1]http://linuxmanpages.com/man8/numactl.8.php



-- 

-

Reply via email to