|
Update
kernel
For better performance
upgrade to the 2.4.18 or better kernel. It is quite stable and the performance
increase is tremendous over the 2.2 series kernel.
All the major Linux distros
(Redhat, Suse, Mandrake, Debian, Gentoo) now offer the 2.4.18 kernel
precompiled and patched for you. So you don't have to do it yourself.
The 2.5x kernel looks like
it will have many performance advantages - particularly on multiple
cpu machines - but you shouldn't yet use this kernel in production. Aslo follow the information in the redbook for Lotus Domino for increasing the number of threads.
Update
rc.local file
Try these parameters and if they work add them to your rc.local file
so that they take effect each time you boot the machine. This will increase
the number of file handles available and the number of inodes.
locate
rc.local
pico /etc/rc.d/rc.local
echo "65536" > /proc/sys/fs/file-max
echo "196608" > /proc/sys/fs/inode-max
(inode limit should be 2..3 times file limit).
Set inode-state and inode-nr
chattr
-R +A /local/notesdata
sets noatime for file system below notesdata directory. Oracle users
say that this gives them a 5-8% boost - I have seen mild improvements
in domino.
Edit the
/etc/sysctl.conf file (redhat)
and add the following line:
# Improve
the number of open files
fs.file-max = 8192
su to the domino account
and issue
ulimit -n 90000
Which allows domino 90000
file descriptors
ulimit -a #see the new settings
A couple of other ones:
echo "100
1200 128 512 15 5000 500 1884 2">/proc/sys/vm/bdflush
(one line)
echo 300 400 500 > /proc/sys/vm/freepages
TCPIP Settings
Make sure you have a good
network card - some do not give full 10/100 Meg Access.
Upgrade to 2.4.18 or better as the kernel tcpip stack performance is much better.
For a Web Server:
echo "10240 61000" > /proc/sys/net/ipv4/ip_local_port_range
echo "134217728" > /proc/sys/kernel/shmmax
echo 300 > /proc/sys/net/ipv4/tcp_keepalive_time
On a LAN
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
disable TCP timestamps
echo 0
> /proc/sys/net/ipv4/tcp_window_scaling
disable window scaling
echo 0
> /proc/sys/net/ipv4/tcp_stack
disable selective acks
Even better
- recompile the kernel
Note -changing your kernel
can cause problems. Typically problems are displayed in Domino by giving
you a "insufficient memory" error. Here are some kernel hacks
you can try - I have tried most of them - but I typically do not yet use them on production machines.
1) modify values in include/linux/fs.h
and limits.h and recompile the kernel.
limits.h
#define NR_OPEN 1024 /* 256*/
#define OPEN_MAX 1024 /* 256*/ /* # open files a process may
have */
fs.h:
#define NR_OPEN 1024 /*256*/
#define NR_INODE 65536 /*3072*/ /* this should be bigger than NR_FILE
*/
#define NR_FILE 16384 /*1024*/ /* this can well be larger on a larger
system */
2) add some
custom scalability patches
The three areas
that domino will definitely benefit are:
- Scheduler improvements
- Threads
- IO Improvements
If you decide to apply any
of these patches make sure that you read all documentation.
Scheduler:
There are tons of different
scheduler patches:
Threads
An excellent Next
Generation Pthreads patch from IBM - you will need 2.4.19pre8
or better. It should allow you to have 30 -100,000 threads active
at any given time.
Ingo Molgar has npt - which will probably be included in the 2.6 kernel glibc
IO
UPDATE: new sys_epoll from 2.5x has been
backported to the 2.4x kernel by united linux and Notes 6.5 now uses this is on linux for the zOS s390.
I guess it is probably used by Domino 6.5x for Linux x86 as well....
Async
O/I Patch (libaio)
The existing select() and poll() model in the kernel exhibits rapid decay with
1000s of users because the way they are written each user/(process) requires more file descriptors. With
this project they are trying to take on the the Posix AIO specification
and Windows I/O Completion Ports (IOCP). I am guessing that this is
the I/O improvement in the Redhat Advanced Server. IOCP exists on
Widoze NT, AIX, & OS/400 - It is patented by MS. You can thus assume that domino is/will be optimized
for it. SGI has a nice kaio library. Unless they rewrite Domino to use it - it won't help.
Check out kegel for more
overview
or this paper
and this document
Bounce
Buffers
Systems
with a large amount of high memory and intense I/O activity can create
a large number of bounce buffers that can cause memory shortage problems.
In addition, the excessive number of bounce buffer data copies can
lead to performance degradation.
File name: block-highmem-all-18b.bz2
Raw
I/O Variable-Size Optimization Patch
The raw I/O variable-size patch changes the block size used for raw
I/O from hardsect_size (normally 512 bytes) to 4 kilobytes (K). The
patch improves I/O throughput and CPU utilization by reducing the
number of buffer heads needed for raw I/O operations.
File name:10_rawio-vary-io-1.
I/O
Request Lock Patch
improves SCSI I/O performance on Linux 2.4 multi-processor systems
by providing concurrent I/O request queuing.
How do you
tell which patches are applied to a particular kernel?
from Alan Cox:
"unpack the source rpm"
What does this
mean? Because the source is GPL - you can determine which patches a
particular distribution uses by:
rpm2cpio foo.rpm
| cpio -idmv --no-absolute-filenames
and then look
at the patches directory. Voila - the mystery of the different distros
is gone.
>>>
More linux & Domino info
>>company
homepage
Comments:
Warning: main(/home/ant/public_html/comments/annotate.php3): failed to open stream: No such file or directory in /home/ant/public_html/linux/dominoscale.php on line 223
Fatal error: main(): Failed opening required '/home/ant/public_html/comments/annotate.php3' (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/ant/public_html/linux/dominoscale.php on line 223
|