Editor's note: Know a lot about this topic? Want to share your expertise? Participate in the IBM Lotus software wiki program today.
The goal of performance tuning is to improve the output based on certain hardware. You should pay particular attention to the tuning parameters that apply to your hardware and network configurations.
This article shows you how to conduct performance tuning in three aspects: the operating system, Lotus Domino, and Lotus Quickr. Tuning the operating system involves improving the performance of the operating system itself, which reacts to the performance of Lotus Quickr services for Lotus Domino. Lotus Quickr 8.1 supports the Microsoft® Windows®, AIX®, and System i® operating systems. Another layer, the Lotus Domino server, is the back end for Lotus Quickr services for Lotus Domino, so tuning the Lotus Domino server also reacts to improvements in the performance of Lotus Quickr.
A different version of Lotus Quickr, Lotus Quickr services for WebSphere Portal, is not covered in this article. Here, when we refer to "Lotus Quickr," we mean Lotus Quickr services for Lotus Domino exclusively.
Tuning: The operating system aspect
This section describes how to tune performance from the operating system aspect: Microsoft Windows, AIX, and System i5.
Tuning the Microsoft Windows operating system
We cover these aspects of tuning the performance of Microsoft Windows:
- Virtual memory
- Register tuning
Background and virtual memory
Select Background services so that all programs receive equal amounts of processor time. Follow these steps:
- Open the Control Panel.
- Double-click System.
- Click the Advanced tab on the System Properties page.
- In the Performance frame, click Settings.
- Click the Advanced tab on the Performance Options page.
- Select Background services on the Processor scheduling frame.
To increase virtual memory, follow these steps:
- In the Virtual Memory frame, click Change.
- Customize the customer virtual memory size according to your logical disk volume.
Try to allocate your hard disk to different logical volumes, which can make it easy to expand virtual memory in different logical volumes. For the Windows operating system, install Lotus Quickr in the non-system hard disk. After Lotus Quickr has been running for a long time, fragmented files can make the system slow, which shows up as poor performance. To avoid this degradation in performance, you should run Disk Defragmenter weekly or biweekly.
Disable or remove unnecessary services
Some Windows system services are unnecessary for Lotus Quickr. For example, in most enterprise customer applications, users do not use the Print function of the Lotus Domino server; if that is the case, the administrator might disable the Print function and any other unnecessary services.
Disabling or removing unnecessary services is the best way to increase your server performance.
Apply the Registry changes shown in listing 1 to the Lotus Quickr server.
Listing 1. Registry changes
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters] "TcpTimedWaitDelay"=dword:0000001e "MaxUserPort"=dword:0000fffe "TcpWindowSize"=dword:0000ffff "MaxFreeTcbs"=dword:00011940 "MaxHashTableSize"=dword:0000ffff
These tuning parameters cover several aspects of the Windows operating system. Let's discuss them one by one.
The TcpTimedWaitDelay parameter, which controls the amount of time the operating system waits to reclaim a port after an application closes a TCP connection, has a default value of four minutes. With heavy loads, these limits might be exceeded and so can result in an address in use: connect exception. If you experience address in use: connect exceptions, try to increase the value of MaxUserPort and TcpTimedWaitDelay in the Registry.
The MaxUserPort parameter determines the highest port number that TCP can assign when an application requests an available user port from the system. Typically, ephemeral ports (that is, those used only briefly) are allocated to port numbers 1024 through 5000.
To increase the throughput of the server, decrease TcpTimedWaitDelay from the default of four minutes to 30 seconds (0000001e), and increase MaxUserPort from the default of 5000 to 65,534 (0000fffe) as shown in listing 1.
The TCPWindowSize parameter sets the maximum TCP window. With the large TCP window size, fewer acknowledgments are sent back, resulting in more optimized network communication between the sender and the receiver. Change the default of 17,520 bytes to 65,535 (0000ffff ) bytes as shown in listing 1.
The MaxFreeTcbs parameter is the threshold number of active TCP connections required before TCP Control Blocks in the TIME-WAIT state are reused. Changing MaxFreeTcbs allows the system to avoid reusing TCP Control Blocks. We changed the value of MaxFreeTcbs from the default of 1m000 to 72,000 (00011940) as shown in listing 1.
The MaxHashTableSize parameter controls the size of the TCP Control Block (TCB) table. The TCB table stores the control values for each active TCP connection. On a server with many active network connections, a large TCB table can reduce the amount of time that the system spends to locate a particular TCB. We changed the value of MaxHashTableSize from the default of 512 (0X200) to 65,535 (0000ffff) as shown in listing 1.
For more information on tuning for Windows, refer to the IBM Redbooks® publication, "Tuning IBM System x Servers for Performance."
Tuning the AIX operating system
The AIX 5L operating system provides many parameters that let users tune to improve performance for Lotus Domino servers, which then can react to Lotus Quickr. You can tune from the Lotus Domino server account settings, network interface cards, processor and memory, disk I/O, and more. This section discusses some of these parameters.
Using S (system scope) as the value in the AIXTHREAD_SCOPE parameter means using one kernel thread per user thread instead of the default setting of one kernel thread per eight user threads. In the Lotus Notes® user profile, enter this parameter:
export AIXTHREAD_SCOPE=SNetwork interface
To improve transfer and receive large amounts of data, you can configure a couple of network adapter settings. For each active network adapter, the transmit queue (tx_for Ethernet) and the receive queue size should be increased to their maximum value.
To view the queue size for the ent0 adapter, use following command:
# lsattr -El ent0
To change the queue size parameters, perform the procedure shown in listing 2.
Listing 2. Changing queue size parameters
Bring down the interface: # ifconfig en0 detach Change the value of the appropriate parameter: # chdev -l ent0 -a tx_que_size=*** ent0 changed Bring the interface back to the up state: # ifconfig en0 up
Paging space tuning
Consider the following virtual member manager parameters:
You can change them by using the vmo command:
vmo -p -o <parameter>=<value>
For example, to set the minfree parameter to 1920, use the following syntax:
#vmo -p -o minfree=1920
You also can change these parameters by command: smitty tuning. For more detailed information, you can refer to the related tuning materials listed in the Resources section of this article.
Disk and I/O considerations
Use the iostat command ( iostat –DR and/or iostat –d) to look for hot disks, file systems, and disk queue depths that can be tuned to provide better storage throughput. If the read and write parameters are set too high, consider using storage area networks to increase performance.
For more AIX operating system tuning, see the IBM Redbooks publication, "AIX 5L Performance and System Tuning."
Tuning the System i5 operating system
Lotus Domino server on the System i5 operating system is an application that runs within its own subsystem, but also competes for overall System i5 system resources.
System i5 operating system performance factors
Table 1 lists the factors that are most often associated with System i5 operating system performance.
Table 1. Typical performance categories and degradation influences on System i5
|Performance category||Factors affecting performance||Available tools for monitoring and intervention|
|Processor load||Job processor usage||Work with Active Jobs (WRKACTJOB)|
Work with System Activity (WRKSYSACT)
|Main storage||Faulting statistics|
|Work with System Status (WRKSYSSTS)|
|Disk||Low arm number|
Low arm speed
|Work with Disk Status (WRKDSKSTS)|
Line user excess
|Work with TCP/IP Connection Status (NETSTAT)|
Performance Tools Advisor for the System i5 operating system
Performance Tools Component Report for System i5 operating system
|Input/output processes||Processor imbalance IOP deficiency||Performance Tools Advisor for the System i5 operating
Performance Tools Component Report for System i5 operating system
|Applications||Object locks||Performance Tools for iSeries® (5722-PT1)|
Work with Object Locks (WRKOBJLCK)
The following sections describe the System i5 operating system tuning options:
- Adjusting system values
- Disk I/O
- Network tuning
Adjusting the System i5 system values
Table 2 contains a list of the System i5 system values that can be changed to help improve performance for a Lotus Domino server. You can make these changes using the Work with System Values (WRKSYSVAL) command.
Table 2. System i5 system values
|System value||Definition||Default value||Recommended value||Need IPL to update?|
|QTOTJOB||Total number of jobs for which the auxilliary storage is
allocated during initial program load (IPL). |
NOTE: If set too high, this parameter can significantly lengthen the total time to IPL.
|QADLTOTJ||Additional number of jobs that need storage allocated when QTOTJOB is reached||10||Varies||No|
|QACTJOB||Initial number of active jobs for which auxiliary storage is allocated during an IPL||20||Varies||Yes|
|QADLACTJ||Additional number of active jobs that need storage allocated when QACTJOB is reached||10||Varies||No|
|QMAXACTLVL||Maximum activity level of the system||*NO MAX||Varies||No|
|QMCHPOOL||Size of the *MACHINE storage pool (Pool 1 in WRKSYSSTS)||20||Varies||No|
|QBASPOOL||Minimum size of the *BASE storage pool (Pool 2 in WRKSYSSTS)||5% of the main storage with a minimum value of 2000 KB||Varies||No|
|QBASACTLVL||Activity level for the *BASE storage pool||6||120 times the number of Lotus Domino servers||No|
|QPFRADJ||Performance adjustment values that specify whether the system should adjust values during IPL, at regular intervals for system pool sizes and activity levels, or not make any automatic adjustments. This functionality is commonly referred to as the iSystem 5 performance adjuster.||3 (Automatic adjustment)||2 (Adjustment at IPL and automatic adjustment) or 3 (Automatic adjustment), to allow for automatic adjustment of memory pool activity levels.||Yes|
|QDYNPTYADJ||Priority of interactive jobs is dynamically adjusted to maintain high performance of batch job processing.||1 (On)||Varies||Yes|
|QDYNPTYSCD||The dynamic priority scheduler 1 (On) Varies Yes QPRCMLTTSK Processor multitasking capability 2 (System-controlled)||1 (On)||Varies||Yes|
|QPRCMLTTSK||Processor multitasking capability||2 (System-controlled)||1 (On)||Yes|
Processor tuning: Choosing processor priority
All the Lotus Domino jobs on System i5 run as batch immediate jobs, and all have a run priority of 20. If the response time rises exceptionally high during the times when you observe high processor utilization caused by jobs such as UPDATE or AMGR, you can reduce the priority of those tasks to improve performance.
Memory tuning: Choosing a memory pool to use
By default, all the Lotus Domino servers run in the BASE memory pool. Therefore, it makes sense to assign one of the shared pools to a single Lotus Domino subsystem. You can change the size and activity level of a shared pool and the expert cache behavior (paging option) with the CHGSHRPOOL or WRKSHRPOOL commands, and then you can use the CHGSBSD command to assign the pool to the subsystem.
Disk I/O tuning
Separating some auxiliary storage pools (ASPs) for journal files was essential to our test. Using ASPs is particularly important to separate the transaction logging files from the Lotus Domino data files and the Lotus Quickr cache from the Lotus Quickr data for performance reasons.
You can leverage a number of tools and parameters to improve the network performance on your system. The following section describes network tuning from a couple of aspects.
Interfaces and routes
By default, System i load balances network traffic across any configured network interface that shares a common route. Some switches generate a route table that includes the IP address of the host and the MAC address of the adapter that owns the IP address. You might experience performance problems related to this load balancing, though. By looking at CFGTCP menu option 2, you can identify how many routes your system has defined and determine whether they are bound to specific interfaces.
Host table and domain information
A Lotus Domino server frequently has to resolve its own name. Keep in mind that it is quicker to allow the Lotus Domino server to resolve its name in the local host table than to query DNS. Use menu options 10 and 12 on the CFGTCP menu to configure this setting.
Maximum transmission unit (MTU) size
An MTU of 1496 bytes is a good size for most Lotus Domino servers. Consult your network administrator for more information about MTUs and your switch’s ability to handle large frames.
TCP/IP buffer size
You can increase Lotus Quickr Web serving performance by tuning the buffer size that is used by TCP/IP, especially when sending large amounts of data. If your network is reliable, try increasing the buffer size from the default (8000) to 64000.
TCPONLY for Ethernet
TCP/IP performance can be further improved by setting the TCPONLY parameter to *YES on an Ethernet line description. This setting decreases the TCP/IP code path length by limiting the code that is loaded in the IOP for the line description.
Line speed and duplex
The settings of the line description should match the hardware to which it is cabled. If the System i unit is cabled to a 1 GB switch and that switch is set to automatically negotiate the fastest line speed and duplex possible, the System i line description should be configured to match the settings.
For more information on System i5 operating system tuning, see the IBM Redbooks publication, "Domino for iSeries Sizing and Performance Tuning."
Tuning on the Lotus Domino server
Because Lotus Quickr runs on the Lotus Domino server, the performance tuning for the Lotus Domino server is also useful in improving Lotus Quickr server performance. Tuning Notes.ini parameters and Lotus Domino settings can improve Lotus Quickr performance.
Disable unnecessary Lotus Domino task in Notes.ini
The default Lotus Domino task list is listed in this Notes.ini:
If some of these tasks are not used in the user’s environment, you can remove them from the Notes.ini. For example, in our single-server test environment, only the HTTP task is active:
To improve the Lotus Domino server performance, add the following parameters.
This variable specifies the maximum number of databases stored in the database cache (if enabled). For short intervals, Lotus Domino stores up to 1.5 times the number entered for this setting. Increasing the maximum number of databases improves performance but requires more memory.
This variable is used in conjunction with the NSF_DBcache_MaxEntries variable to allow the Lotus Domino server to cache the specified number of databases. You can set this variable to the maximum number of active or concurrent user databases for each Lotus Domino partition.
The setting in our environment is as follows:
NOTE: These parameters are related to your hardware, and so you should adjust them to optimize your particular hardware configuration.
Tuning in the Lotus Domino server setting
Lotus Quickr uses the Lotus Domino HTTP task, so the tuning for Lotus Domino Web setting also reacts to the Lotus Quickr performance.
Run Web agents and Web services concurrently
Lotus Quickr provides lots of Web services. Some functions can call Web services directly. Parts of some functions in the Blog and Wiki places are realized by the Lotus Domino agent. There are four agents in the Blog place and two agents in the Wiki place. Follow these steps:
- Open the names.nsf database in Lotus Quickr from the Lotus Notes client or connect to the Lotus Quickr server from the Lotus Notes Administrator client.
- Open the Lotus Quickr server document.
- Go to Internet Protocols - Domino Web Engine - Web Agents and Web Services.
There are two settings in this section:
- Run Web agents and Web services concurrently
- Web agent and Web services timeout
In our test environment, the option Run Web agents and Web services concurrently is selected. Keep the Web agent and Web services timeout value as the default value:”0”, which means there is no time limit for run Web agents and Web services.
Max concurrent agents
Most Lotus Quickr customers are global companies, so their workload is almost the same during daytime and nighttime. Therefore, adjust the Max concurrent agents setting from the names.nsf database by selecting the following:
Server tasks - Agent Manager - Daytime Parameters/Nighttime Parameters - Max concurrent agents
The value scope for the daytime and nighttime parameters ranges from 0 to 10; customers can adjust the value according to their workload. In our test environment, both the daytime and nighttime parameters are set to 10.
This section describes only some of the ways to tune the Lotus Domino server performance. In fact, there are many Lotus Domino server tuning methods and parameters. Almost all of them react to the performance of Lotus Quickr. For more details, refer to Lotus Domino performance materials listed in the Resoures section of this article.
Tuning on Lotus Quickr
This section describes performance tuning for Lotus Quickr itself and covers tuning the Notes.ini and qpconfig.xml settings.
Disable unnecessary Lotus Quickr services tasks in Notes.ini
After Lotus Quickr server installation, the following tasks are added automatically to the Notes.ini file by the Lotus Quickr server. If some of them are unnecessary for your current application, you can comment them out from the Notes.ini to improve Lotus Quickr performance.
ServerTasksAt3=Object Info -Full
ServerTasksAt4=qptool refresh -a,qptool report -policyexecute,qptool register –a
For a detailed explanation about these server tasks, refer to the related materials listed in the Resources section of this article.
Tuning Lotus Quickr in Notes.ini
There are many parameters in the Notes.ini file about Lotus Quickr performance. Let's discuss some of them here.
This variable enables or disables caching. Set QuickPlaceWebCacheEnabled=1 to enable caching. To disable server caching, set QuickPlaceWebCacheEnabled=0. The server cache is enabled by default.
The default cache directory is <DOMINOPROGRAM>>\data\domino\quickplace\cache. If this variable is not set in the Notes.ini file, then it is automatically set to the default directory. If a specified directory path is invalid, the server cache is disabled. The Lotus Quickr server reads and writes cache frequently from the directory, so set the directory on a RAID disk system or separate disk from the Lotus Quickr server code. If there is only one physical disk on the Lotus Quickr server, set the directory to a different logical hard disk from the Lotus Quickr server code.
QuickPlaceWebCacheLimitInMB=<Size in MB>
This variable controls the cache recycle size limitation. If the cache size is less than the set value, Lotus Quickr does not recycle the cache. If the cache size is greater than the setting, the Lotus Quickr server recycles the cache size to the set value. The default size is 50 MB.
Commonly, the larger the variable is, the better the Lotus Quickr performance. Note that if this variable is set too large, the Lotus Quickr server spends more resources to handle the larger cache size.
QuickPlaceWebCacheGCIntervalInMIN=<time interval in minutes>
This variable is used to set the time interval for cache cleaning; the default value is 60. The Lotus Quickr server judges the cache with the set time interval; if the cache size is greater than the QuickPlaceWebCacheLimitInMB setting, then the cache size is recycled to the set interval. The Lotus Quickr server performance can be poor when the cache is recycled, so be careful not to increase the time interval too much.
This variable is used to enable (1) or disable (0) the ability to check for the version number of the Lotus Quickr server.
QuickPlaceExpireCachedUsers=<time interval in seconds>
This variable is used to specify the length of time that user entries remain in the cache before the server removes them. The default for the interval is 120 seconds.
QuickPlaceTimedHashTableTimeout =<time interval in seconds>
This variable is used to set the frequency of the LDAP cache renewal used by Lotus Quickr.
This variable is used to specify the maximum number of user entries allowed in the cache. When the cache reaches the specified number, older entries are removed to make room for new ones. By default, 64 user entries are allowed in the cache.
These are the parameters settings used in our system test:
Tuning using the Lotus Quickr qpconfig setting
qpconfig.xml, located in the Lotus Domino data and shown in listing 3, is another important file for Lotus Quickr performance tuning. You can change some settings in this file to improve Lotus Quickr performance.
Listing 3. The qpconfig.xml file
<place_catalog_servers> <server> <domino_server_name>qpcat/IBM</domino_server_name> <nsf_filename>PlaceCatalog.nsf</nsf_filename> <statistics enabled="true" update_interval="<time interval in minutes>"/> </server> </place_catalog_servers> </place_catalog>
The update_interval parameter is used to specify the place catalog update interval period in minutes. The setting used in our system test environment is 1440.
For more Lotus Quickr tuning information, refer to the QuickPlace Version 7.0 Administrator’s Guide.
This article discusses how to improve the performance of Lotus Quickr services for Lotus Domino from three aspects: the operating sytem, Lotus Domino, and Lotus Quickr. The parameters discussed in this article are important in improving the performance of Lotus Quickr services for Lotus Domino. They are suitable for Lotus Quickr 8.0, Lotus Quickr 188.8.131.52, and Lotus Quickr 8.1. In our test environment, we compare some the performance of some transactions before and after tuning. Almost all transactions’ performance improved after tuning, with some improving by 20 percent to 40 percent.
- Participate in the discussion forum.
- Refer to the IBM Lotus Quickr Information Center (V8.0 and V8.1).
- Refer to the developerWorks® Lotus Quickr documentation page.
- Visit the Lotus Quickr product page on developerWorks Lotus.
- To learn more about the xSeries® server tuning, read the IBM Redbooks publication, "Tuning IBM x Servers for Performance."