Topics

02 Things you need to know
Server
Linux settings

Performance of Domino on Linux Systems
Domino benchmarks and workload capacity are significantly affected by the hardware and operating system processes that run beneath the Domino Server. This document discusses some known limits of Domino running on Linux (and some settings made at the Linux operating system level that can affect those limits). As of R5.0.2, the capacity of Domino Servers that run on Linux platforms is still being investigated. Please see the 'Performance Tuning a Domino for Red Hat Linux Server' and 'Performance Tuning a Domino for SuSE Linux Server' topics below.

As additional information about Linux capacity and performance is developed, more documentation will be released in the usual Lotus forums.

Linux Services
Most Linux distributions enable services for the following by default: NNTP, SMTP, IMAP, POP3, and HTTP. In order to use the versions of these services provided by the Domino server, you must disable the corresponding Linux services. For IMAP and POP3, this is most easily done by editing the /etc/inetd.conf file and commenting out the entries for pop3 and IMAP. For SMTP, NNTP, and HTTP, you must use the appropriate utility for the given Linux distribution to disable these services.

Concurrent Task Limits
Because of limitations in the Linux 2.2.5 kernel, the Domino server cannot accommodate more than approximately 200 concurrent tasks. A task is roughly defined as one of the following (with a session being a user connection):

The limitations that affect this are the maximum number of concurrently open file descriptors per user/system and the maximum number of processes/threads per user/system. Increasing these limitations will result in the Domino server being able to support a larger number of concurrent tasks.

Important Notes about Rebuilding your Kernel
It is true that you can rebuild the Linux kernel and increase the limits discussed in this document. In fact, this is what has been done by the operating system developers in the Red Hat 6.1 kernel distribution itself. Very early preliminary testing indicates Domino should perform with higher capacity on Red Hat 6.1.

However, care should be taken when modifying any Linux limits for the following important reasons:


You must consider and accept all these factors before Linux kernel modification on Domino systems. These factors must be considered in addition to the usual caveats that come with customizing the kernel (as noted in the Linux kernel documentation).

File Descriptors
As of the Linux 2.2.5 kernel, the default settings for the maximum number of open file descriptors per user is 1024 with a system limitation of approximately 3000 total open file descriptors. Red Hat 6.1 has the same default user limit; however it also contains code providing for a workaround to increase this number. As root, you can increase the values in the running kernel by echoing a larger value into /proc/sys/fs/file-max and /proc/sys/fs/inode-max, keeping a 3/1 ratio between the values contained in this file. For example:

$ echo "16384" > /proc/sys/fs/file-max
$ echo "55296" > /proc/sys/fs/inode-max

...will increase the file-max value to 16K and inode max to 54K resulting in a system wide maximum of 16K open file descriptors. Keep in mind this will increase the memory usage of the running kernel. To complete this workaround, you must then increase the per user limits to allow usage of these descriptors. One such method is to, as root, use the ulimit command to increase the user limit and the su to the user id owning/running the Domino server. For example:

$ su
# ulimit 8192
# su - notesadmin
$ cd /my/notes/data/directory
$ /opt/lotus/bin/server

...will increase the user maximum limit to 8K open file descriptors. (This number must be less than the system-wide limit defined above).

Thread/Processes
Because each thread is a light-weight-process (LWP) on Linux, each is curtailed by the maximum number of running processes, just like normal processes. This means that a process with 200 threads and 56 processes together total 256 processes, meeting the standard limitation of 256 processes per user in the 2.2.5 kernel. In the Red Hat 6.1 distribution, this limitation has been increased to 2000 processes per user, and 3000 system wide.

Examples
Roughly speaking, you can figure that each user for your server uses about three file descriptors and constitutes one process for each task that the user is performing. For example, a user accessing his mail file is one thread of the dbserver, uses one file descriptor for the network connection, one file descriptor for access to the name and address book, and one file descriptor for access to the mail file. These numbers are very hard to quantify because the task can greatly change the needs.

As an example, consider a user accessing the Domino server via HTTP. For each request generated by the browser, the user uses a network file descriptor, a thread for the request, a file descriptor for the item being requested, and yet more file descriptors are required for authentication. If the browser supports multiple concurrent requests, we can see that one user can use quite a few requests (say, four concurrent requests, which would mean four threads and over 12 file descriptors). With this in mind, we try and approximate the user load as three file descriptors and one thread for each task (as noted previously), which gives an idea of how many users a configured Domino server can handle. For instance, at 16K file descriptors and 2000 threads, the limitation is the thread count and we see that the server should be able to support approximately 2000 tasks using 2000 threads and 6000 file descriptors. However, keep in mind that the shells of the user running the Domino server also count, as well as any other processes the user is running (X, kvt, kdwm,…). Therefore, this task count would be less as you definitely do not want to exhaust the user's resources.