Bert Scalzo on Linux Maximus for Oracle
Mr. Bert Scalzo, a respected Oracle professionals, has published
an excellent paper titled "Linux Maximus, Part 1: Gladiator-like
Oracle Performance":
Scalzo notes that Linux does not perform super-fast without
proper configuration and that tweaking Linux and Oracle can
result in a 1,000% performance improvement:
"Believe it or not, it's quite easy to get upwards of
1000% database improvement through proper Linux tuning and
database configuration for Linux."
In the section titled "DB low hanging fruit", Mr. Scalzo notes
that doubling the database blocksize improved TPC-C throughout:
"Even a PC with its limited bus and I/O capabilities can
reap huge benefits from a larger block size. The load time
improved over 138%, with no detriment to the TPS. "
Scalzo also shows how adjusting initialization and tablespace
parameters improved Oracle performance on Linux:
"We got improvements of 342% for the load time and 24%
for the TPS; not bad for requiring absolutely no extensive
or detailed performance monitoring."
Linux Kernel Tuning for Oracle
Mr Scalzo then focuses on tuning the Linux filesystem I/O
performance:
"vm.bdflush = 100 1200 128 512 15 5000 500 1884 2
Where according to /usr/src/Linux/Documentation/sysctl/vm.txt:
The first parameter 100 %:
governs the maximum number of dirty buffers in the buffer cache.
Dirty means that the contents of the buffer still have to be
written to disk as opposed to a clean buffer, which can just be
forgotten about. Setting this to a high value means that Linux
can delay disk writes for a long time, but it also means that it
will have to do a lot of I/O at once when memory becomes short.
A low value will spread out disk I/O more evenly.
The second parameter 1200
ndirty: gives the
maximum number of dirty buffers that bdflush can write to the
disk in one time. A high value will mean delayed, bursty I/O,
while a small value can lead to memory shortage when bdflush
isn't woken up often enough.
The third parameter 128
nrefill: the
number of buffers that bdflush will add to the list of free
buffers when refill_freelist() is called. It is necessary to
allocate free buffers beforehand, as the buffers often are of a
different size than the memory pages, and some bookkeeping needs
to be done beforehand. The higher the number, the more memory
will be wasted and the less often refill_freelist() will need to
run.
refill_freelist() 512:
when this comes across more than nref_dirt dirty buffers, it
will wake up bdflush.
age_buffer 50*HZ, age_super
parameters 5*HZ: govern the maximum time Linux waits
before writing out a dirty buffer to disk. The value is
expressed in jiffies (clockticks); the number of jiffies per
second is 100. Age_buffer is the maximum age for data blocks,
while age_super is for filesystem metadata.
The fifth 15 and the last two
parameters 1884 and 2: unused by the system so we
don't need to change the default ones."
|

|
|