Contents | Previous | Next

IMAP Server

The Internet Message Access Protocol (IMAP) server, based on RFC 2060, permits a client email program to access remote message folders (called "mailboxes") as if they were local. IMAP's ability to access messages (both new and saved) from more than one computer has become more important as reliance on electronic messaging and use of multiple computers increase. The protocol includes operations for creating, deleting and renaming mailboxes; checking for new messages; permanently removing messages; setting and clearing flags; server-based parsing and searching; and selective fetching of message attributes, texts, and portions thereof for efficiency.

TCP/IP level 420, with z/VM 4.2.0, now supports the IMAP server. This section summarizes the results of a performance evaluation of this support.

Methodology  An internal CMS tool was used to simulate user load against an IMAP mail server using custom scripts. The scripts were staggered by using a uniformly distributed random number between 100 and 500 seconds to distribute the load evenly over a one-hour period.

Each simulated client, after logging in, checks its inbox for new messages six times (once at the end of each random period). Each time the inbox is checked, the client downloads five message headers from the inbox, reads those five messages, and then deletes one message. After the sixth iteration, the simulated user logs out and sends a new message (through SMTP). Each instance of sending a request to the IMAP server and receiving a response is considered a transaction. More specifically, a transaction is defined as each request issued by the internal tool to the IMAP server. For example; LOGIN, list INBOX, SELECT, UID fetch are transactions or requests sent to the IMAP server. Each simulated user issues 59 transaction requests to the IMAP server during each measurement run.

All measurements were done on a 2064-109 in an LPAR with 2 dedicated processors. The LPAR had 1GB central storage and 2GB expanded storage. All clients, the IMAP server, SFS server, and TCPIP stack ran on the same LPAR. APAR PQ54859 was applied to the IMAP server because it contained a fix to thread priority that impacted the performance. SFS ran with 504 agents, ensuring that the number of SFS agents was always greater than the number of IMAP threads. Response times were captured by the internal tool and CP monitor data was captured once the workload had reached a steady-state. The CP monitor data was then reduced using VMPRF. Data for SFS and TCP/IP is also shown but the focus is on what we see the IMAP server doing.

Throughput and Response Time Results  The throughput and response time results are summarized in Figure 1 and Figure 2.

Figure 1. IMAP Throughput



Figure imaptran not displayed.


Figure 2. IMAP Response Time



Figure imapresp not displayed.


The graphs show that response times are good until about 2900 users, when response times begin to rise sharply and transactions per second drop. At 3000 users the IMAP server is either running or waiting on the CPU for almost 90% of the time. So the primary constraint is due to IMAP only being able to run on a single processor at a time.

Detailed Results  The following tables give further detail for each of the measurements. All of the fields were obtained from the workload driver or derived from the CP monitor data, except IMAP threads which was obtained from the IMAP administration command IMAPADM servername STATS. Following is an explanation for each field.

trans/sec (est)

Transactions per second was estimated from monitor data records which show message traffic from TCPIP to the IMAP server. This value was compared to the value reported by the internal tool to ensure reasonableness. This value was then divided by the elapsed time shown in the VMPRF report.

Response time (driver)

The workload driver kept track of the time elapsed for each transaction request issued to the IMAP server and reported the average transaction time at the end of the run.

Total CPU Utilization

This field was obtained from the SYSTEM_SUMMARY_BY_TIME VMPRF report that shows the average of both processors.

IMAP CPU Utilization

This field is calculated from the IMAP entry in the USER_RESOURCE_UTILIZATION VMPRF report.

IMAP tot CPU msec/trans

This field was calculated from two of the previous fields (IMAP CPU Utilization divided by transactions per second) to show the number of IMAP milliseconds of time to transaction ratio.

IMAP virt CPU msec/trans

This field is calculated in the same manner as IMAP total CPU msec/trans, using virtual CPU seconds for the IMAP server.

IMAP CP CPU msec/trans

This is the difference of total CPU msec/trans less virtual CPU msec/trans yielding the time spent in CP on IMAP's behalf.

SFS CPU Utilization

This field is calculated in the same manner as IMAP CPU Utilization, using the SFS entry in the USER_RESOURCE_UTILIZATION VMPRF report.

SFS tot CPU msec/trans

See IMAP tot CPU msec/trans.

SFS virt CPU msec/trans

See IMAP virt CPU msec/trans.

TCPIP CPU Utilization

See IMAP tot CPU Utilization.

TCPIP tot CPU msec/trans

See IMAP tot CPU msec/trans.

TCPIP virt CPU msec/trans

See IMAP virt CPU msec/trans.

Number of IMAP threads

This number was obtained from the IMAP administration command IMAPADM, specifying the STATS option.

SFS sec per filepool req

Total Time Per File Pool Request field in SFS_BY_TIME VMPRF report.

SFS request per trans

Calculated by dividing FPR count from SFS_BY_TIME by Total Msgs from TCPIP to IMAP from USER_TO_USER_VMCOMM VMPRF report.


Table 1. IMAP Measurement Results


IMAP Clients
Run ID


1500
I50030z3


2000
I50040z2


2500
I50050z3


2750
I50055z2


2900
I50058z1


3000
I50060ze


trans/sec (est)
Response time (driver)
trans/sec/user
Total CPU Utilization


57.38
0.01
0.04
20.9


89.07
0.02
0.04
30.6


122.57
0.03
0.05
40.2


125.53
0.07
0.05
47.6


182.58
0.41
0.06
52.5


60.75
1.48
0.02
53.0


IMAP CPU Utilization
IMAP tot CPU msec/trans
IMAP virt CPU msec/trans
IMAP CP CPU msec/trans
Number of IMAP threads


26.59
4.63
4.33
0.30
5


41.01
4.61
4.34
0.26
5


56.59
4.62
4.39
0.23
10


67.39
5.41
5.16
0.25
37


75.58
4.14
3.95
0.19
30


77.07
12.69
12.08
0.60
45


SFS CPU Utilization
SFS tot CPU msec/trans
SFS virt CPU msec/trans
SFS CP CPU msec/trans
SFS sec per filepool req
SFS requests per trans


2.22
0.39
0.22
0.17
0.001
1.75


2.83
0.32
0.19
0.13
0.001
1.42


3.41
0.28
0.17
0.11
0.001
1.22


3.89
0.31
0.18
0.13
0.001
1.31


4.25
0.23
0.14
0.09
0.001
0.96


4.47
0.74
0.46
0.27
0.000
2.82


TCPIP CPU Utilization
TCPIP tot CPU msec/trans
TCPIP virt CPU msec/trans
TCPIP CP CPU msec/trans


2.78
0.48
0.29
0.19


3.70
0.42
0.26
0.16


4.28
0.35
0.21
0.14


5.16
0.41
0.30
0.15


5.50
0.30
0.19
0.11


5.13
0.85
0.49
0.35















Note: 2064-109; z/VM 4.2.0 with 64-bit CP; TCP/IP 420; IMAP with APAR PQ54859

SFS requests are mostly asynchronous and SFS response time is even for all measurements (even the 3000 user case). Therefore SFS is not a factor in the IMAP server response time.

Total CPU utilization shown includes activity in the IMAP clients as well as IMAP, TCPIP and SFS.

The IMAP server scales well to 2500 users. CPU msec/trans stays steady until after 2500 users. It increases slightly at 2750 users and begins to become unstable at 2900 users. By 3000 users the IMAP server cannot keep up with the requests coming in and the backlog affects the response time seen by the client dramatically.

Contents | Previous | Next