The server availability index

Each server in a cluster periodically determines its own workload based on the response time of the requests the server has processed recently. The workload is expressed as a number from 0 to 100, where 0 indicates a heavily loaded server and 100 indicates a lightly loaded server. This number is called the server availability index.

About this task

As response times increase, the server availability index decreases.

The server availability index is approximately equal to the percentage of the total server capacity that is still available. For example, if the server availability index is 65, you still have approximately 65% of the capacity of your server available. Although the servers in your enterprise may vary in power and resources, the server availability index represents the same thing on each server -- the amount of total availability of that server that is still available.

The server availability index is based on the expansion factor, which indicates the current workload on a server. The expansion factor is determined by comparing recent response times for specific types of transactions to the minimum time in which the server has ever completed the same types of transactions. For example, if the server is currently averaging 12 microseconds to perform Database Open transactions but the minimum time the server has ever performed a Database Open transaction is 3 microseconds, the expansion factor for Database Open transactions would be 4 (the current time of 12 microseconds divided by the fastest time of 3 microseconds). In other words, the expansion factor determines how many times longer it takes for a transaction to complete currently than it takes under optimal conditions.

Domino® stores the minimum time for each type of transaction in memory and in the LOADMON.NCF file, which the server reads each time it starts. When the server shuts down, Domino® updates the LOADMON.NCF file with the latest information.

To determine the current expansion factor, Domino® tracks the most commonly used types of Domino® transactions for specified periods of time. By default Domino® tracks these transactions for 5 periods of 15 seconds each. Domino® then determines the average time it took to complete each type of transaction and divides that time by the minimum time it ever took to complete that same type of transaction. This determines an expansion factor for each type of transaction. To determine the expansion factor for the entire server, Domino® averages the expansion factors for all the types of transactions, giving a heavier weighting to the most frequently used types of transactions.

As the server gets busier, adding more load has an increasingly greater effect on performance and availability. Thus, adding more load to a busy server increases the expansion factor faster than adding more load to a less busy server.

Because servers differ in speed, capacity, and power, servers also differ in the workload they can handle. Therefore, the same expansion factor on two different servers does not necessarily indicate the same workload relative to the ability of the servers. For example, on a small server that takes a long time to perform transactions when the server is otherwise idle, an expansion factor of 40 might indicate that users are waiting many seconds for responses. On a very large, fast server, however, an expansion factor of 400 might indicate that users are waiting less than a second for responses.

How the availability index compares to the expansion factor

About this task

To determine the availability index, Domino® uses a formula that converts the expansion factor into an approximation of the percentage of the total server capacity that is still available. The following table shows a few examples of expansion factors converted to availability indexes.

Note: The values in the table are based on an expansion factor of 64 indicating a fully loaded server.
Table 1. Examples based on an expansion factor of 64

Expansion factor

Availability index

1<nozeros>

100<nozeros>

2<nozeros>

83<nozeros>

4<nozeros>

67<nozeros>

8<nozeros>

50<nozeros>

16<nozeros>

33<nozeros>

32<nozeros>

17<nozeros>

64<nozeros>

0<nozeros>

Note: The expansion factor and the availability index measure only the response time of the server, which is usually only a small portion of the response time clients experience. For example, the network response time between a client and a server often accounts for a significant portion of the response time the client experiences.

Changing the value of the expansion factor that indicates a fully loaded server

About this task

To use Domino® workload balancing effectively, you must adjust the relationship between the expansion factor and the availability index so that servers fail over when they reach the workload at which you want them to fail over. You do this by specifying the expansion factor value that you want to represent a fully loaded server. The default value in Domino® is 64. When the expansion factor reaches that value, the server is considered to be fully loaded, and the availability index drops to 0 (zero).

Note: You can use the Show AI server command to view a suggested availability index setting.

If your server is particularly powerful and fast, you might want to increase the value of the expansion factor that is considered fully loaded. On some very fast servers, you might want to make this value several hundred or higher. If your server is particularly slow, you might want to decrease this value.

To change the expansion factor value that indicates a fully loaded server, add the following setting to your NOTES.INI file, and then restart the server.

SERVER_TRANSINFO_RANGE=n 

For the value of n, choose a number such that 2 raised to the power of n equals the expansion factor value that you want to indicate a fully loaded server. The default value for n is 6, which leads to an expansion factor value of 64 because 2 raised to the 6th power is 64. If you set SERVER_TRANSINFO_RANGE to 7, then the expansion factor value that indicates a fully loaded server becomes 128. If you set SERVER_TRANSINFO_RANGE to 8, the value becomes 256.

To determine the optimal value for SERVER_TRANSINFO_RANGE, do the following:

Procedure

  1. During a period of heavy usage, monitor the expansion factor on your server. You can use the console command show stat server.expansionfactorto do this. You can also monitor performance statistics during these periods. Record enough values for the expansion factor during heavy usage so that you can determine the expansion factor value you want to indicate a fully loaded server.
  2. Determine a value for SERVER_TRANSINFO_RANGE such that 2 raised to the power of that value results in the expansion factor value you chose in step 1.

Results

When you change the expansion factor value that indicates a fully loaded server, the relationship between the expansion factor and the availability index changes. The following table shows a few examples of expansion factors converted to availability indexes when the value of SSERVER_TRANSINFO_RANGE is 8. The maximum expansion factor in this example is 256 because 2 raised to the power of 8 is 256.

Table 2. Examples of expansion factors converted to availability indexes

Expansion factor

Availability index

1<nozeros>

100<nozeros>

2<nozeros>

88<nozeros>

4<nozeros>

75<nozeros>

8<nozeros>

63<nozeros>

16<nozeros>

50<nozeros>

32<nozeros>

38<nozeros>

64<nozeros>

25<nozeros>

128<nozeros>

13<nozeros>

256<nozeros>

0<nozeros>

The server console command Show AI is used to obtain an appropriate value for this variable. Type the command after running the server under load for a while, and it will display the history of the expansion factor and AI for the server.

Changing the amount of data used to compute the expansion factor

About this task

Although it is not usually necessary, you can use the following NOTES.INI settings to change the amount of data that Domino® collects in order to figure the expansion factor.

  • To change the number of data collection periods that Domino® uses, use the NOTES.INI setting Server_Transinfo_Max=x where x is the number of collection periods you want Domino® to use.
  • To change the length of each data collection period, use the NOTES.INI setting Server_Transinfo_Update_Interval=x where x is the length of each period in seconds.