Lotus Notes 客户机的任务负载
提高性能,从而降低 TCO,是 Lotus Notes/Domino 7 的一个主要话题。对于 NRPC (Notes 远程过程调用,这是 Notes/Domino 专用的邮件协议)用户来说,我们通过删除一些内部约束来提高可伸缩性,并通过调整代码来实现在给定的处理器利用率的情况下能够服务更多用户。结果是大部分 Notes/Domino 7 平台在负担相同数量的 R6Mail 用户时,所使用的 CPU 利用率都会降低。CPU 的节约表现为我们在一个定制环境中期望看到的最大级别的性能改进。
本系列文章一共 3 篇,本文是其中的第 1 部分;在本文中,我们将通过对 Lotus Notes/Domino 7 与 6.5 版本进行比较来介绍我们所测量到的性能改进。本文将重点介绍通过使用 R6Mail 任务负载来模拟 Notes 用户所得到的基准测试结果。我们将给出在各种平台上所得出的基准测试结果。这些结果来自同一个 Domino 分区,除非特别声明,否则它都没有使用事务日志。我们将给出 Domino 7 使用基于 Notes 6.5 和 Notes 7 版本的邮件模板的邮件文件的结果。每个都会与 Domino 6.5 服务器进行比较,后者的邮件文件是基于 Notes 6.5 模板的。这些结果可以说明,在将用户邮件文件转换成 Domino 7 模板而不是对服务器进行升级这种迁移情况时,我们可以期望获得的改进结果。
所有这些结果都表示为秒级以下的 Domino 响应时间。为了进行基准测试,我们只运行 router 任务(除非特别说明),从而防止其他行为会破坏数据。我们希望您能够从中发现有用的信息,并能够深入理解 Notes/Domino 7 中已经采用的改进。
注意: 本文中的结果是从一个受控的环境中运行得出的。尽管在设计基准测试时已经进行了一些工作来包含典型的用户操作,但是实际用户利用 Notes 和 Domino 的方式很可能与基准测试所执行的功能测试的范围不同。因此这些结果应该主要用来理解 Domino 发行版本的性能,但不代表为真实情况所做的建议。要获得有关性能规划方面的帮助,我们建议您咨询硬件供应商。
还有,当我们介绍各种硬件平台上的结果时,这些配置并不是完全相同的。本文的主要目的是重点介绍 Domino 本身的性能,这些数据不应该用来在各种平台上相互进行比较。
R6Mail 任务负载
本文基准测试中所使用的任务负载是 Domino 产品中所包含的 server.load 性能工具中的 R6Mail。有关 server.load 以及这个任务负载的信息可以在 Domino Administration Guide 中找到。
然而,从较高的层次上来说,这个基准测试环境包含了一系列的负载生成工作站,每个都模拟了多达 1500 个虚拟用户的 Notes 客户机到服务器的操作。我们会继续增加负载生成器的个数,直到看到平均响应时间超过 1 秒为止。在 Domino 服务器端,我们配置了 Domino Directory 来处理测试中适当数量的虚拟用户,并为每个用户在自己的 data 目录中存放自己的邮件文件。
每个虚拟用户都会在 90 分钟内执行以下任务:
每 90 分钟执行的操作
R6Mail 任务负载
打开收件箱
6
阅读邮件
30
删除邮件
12
向收件箱中添加邮件
12(50 KB)
发送邮件到第三个接收者
1(平均 100 KB)
发送邀请给第三个接收者
1
发送 RSVP
1
关闭收件箱
6
这些任务负载可以划分为底层的 Domino 事务,其分布如下所示:
事务类型
百分比
阅读收件箱的文档
25
添加文档
25
打开邮箱
10
阅读文档
10
删除文档
10
准备/发送 RSVP
5.8
修改文档
5
关闭收件箱
5
目录查找/检验
1.7
准备/发送消息
0.8
准备/发送邀请
0.8
创建约会
0.8
本文中后续各节将介绍各个平台上的测试结果。
AIX
对于我们的 AIX 测试,使用下面的硬件设置:
型号
P670
CPU
32 个物理的 Power4 CPU,速度为 1.4 GHz,划分成 3 个逻辑分区(LPAR)。这些测试使用的 LPAR 配置分配了 8 个 CPU。
内存
测试 LPAR 分配了 32 GB 的 RAM。
活动的物理驱动器
64 个 SSA 驱动器,为 Domino Binaries 和 Domino Data 分配了 4 个 tray(每个 tray 也是一个逻辑卷)。
每个 tray 有 15 个 9 GB 的驱动器,还有 1 个 9 GB 的驱动器用来存放 JFS 日志。
活动的逻辑卷
5: 4 个逻辑卷用于 Domino Binaries 和 Domino Data(JFS 2) 1 个逻辑卷用于操作系统
操作系统
AIX 5.2
为了帮助对性能进行优化,我们在测试服务器的 Notes.ini 文件中使用以下设置:
Domino 6.5
Domino 7
NSF_Buffer_Pool_Size_MB=210
Server_Pool_Tasks=64
Server_Max_Concurrent_Trans=64
NSF_DbCache_MaxEntries=2000
ServerTasks=Router,LDAP,HTTP,SMTP
Server_Transinfo_range=12
NSF_Buffer_Pool_Size_MB=210
Server_Pool_Tasks=100
Server_Max_Concurrent_Trans=100
NSF_DbCache_MaxEntries=2000
Server_Transinfo_range=12
ServerTasks=Router,LDAP,HTTP,SMTP
AIX 使用了内存分段的架构来限制共享内存和堆所使用的段总量。因此我们使用一个很小的 NSF_Buffer_Pool_Size 值。这可以运行测试达到较高的模拟用户级别。在实际的产品配置中,我们期望 NSF Buffer Pool Size 值应该设置为一个比较大的值。 Server_Pool_Tasks 和 Server_Max_Concurrent_Trans 值的设置是为了支持在每个 Donimo 发行版本中都可以实现的较高用户数量。在修改这些设置的缺省值之前,我们建议您对自己的环境进行一下分析,从而得出要使用的优化值。
我们的测试可以使用最小的 ServerTasks,这在产品环境中并不常见。我们建议 Notes.ini 参数 Server_Transinfo_range 的设置在所有 Domino 产品机器上都采用。确定将这个参数设置为这个值是一个不断反复的过程,这要基于对 Server Expansion Factor 和 Server Availability Index 的监视情况而做出决定。要完整地理解这些值和设置的意义,请参考配置 Server Availability Index 的 Domino Administrator Help 一节的内容。
我们的实验室测试显示了在 p670 LPAR 上,可以在运行 Domino 7 时达到大约 15,000 个模拟的 Notes 用户,而在 Domino 6.5 上可以达到 10,000 个模拟用户。
下面这两个表对 Domino 6.5 和 Domino 7 在运行相同数量的模拟用户(10,000)时所消耗的系统资源进行了比较。在第一个表中,我们的模拟用户正在使用 Mail6 邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
23
17.6
-23
全部磁盘读取速度 KB/sec
1,150,318
905,709
-21
全部磁盘写入速度 KB/sec
3,316,083
3,175,272
-4
所使用的共享内存(MB)
1160
1152
1
所使用的进程内存(MB)
23
63
173
网络流量 bytes/sec
2,059,541
2,233,823
8
在第二个表中,Domino 7 用户使用的是 Mail7 邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
23
18.51
-20
全部磁盘读取速度 KB/sec
1,150,318
1,123,650
-2
全部磁盘写入速度 KB/sec
3,316,083
3,461,609
4
所使用的共享内存(MB)
1160
1190
3
所使用的进程内存(MB)
23
64
178
网络流量 bytes/sec
2,059,541
2,240,567
9
从以上两个表中我们可以看出,Domino 7 使用的 CPU 降低了 20% 到 23%,使用的内存稍微有些变多,磁盘 I/O 读取降低了 2% 到 21%,这些数据取决于在 Domino 7 服务器上采用的是哪个邮件模板。我们在图 1 中也可以看到 Domino 7 服务器在 CPU 利用率超过 25% 之前可以支持大约 12,000 到 14,000 个 R6Mail 用户(这取决于使用的是哪个邮件模板)。
图 1. Domino 7 与 Domino 6.5 在 AIX 上 CPU 利用率的比较
我们的 p670 机器被划分成 3 个 LPAR;这些结果是在一个 LPAR 上运行得出的。另外两个 LPAR 在运行这些测试时的负载也非常重,分别用于开发调试和测试。我们指出这一点是为了说明 LPAR 在 p670 上工作得是如此之好,以至于我们可以在这台机器上同时运行多种操作,仍然能够得出令人惊讶的测试结果。
回页首
SuSE linux(Intel)
下表显示我们在 NRPC 基准测试时所使用的服务器配置:
CPU
4 个 1.4 GHz 的 Xeon MP
内存
4 GB RAM
活动物理驱动器
SCSI 控制器,挂了 3 个 XP300 RAID 阵列;一个 FAStT 600,上面连接了两个 EXP700,所有这些都设置为 RAID 0 的配置。
活动逻辑卷
这些驱动器被配置为 14 个逻辑卷。一个用于 /opt,一个用于 /tmp,一个在需要时用来存放事务日志,11 个用来存储 Domino 数据。这样可以将邮件数据库分布到很多磁盘上,从而可以降低 I/O 的瓶颈问题。
操作系统
Linux SuSE SLES 9 SP2
这个系统是一个“非常保守的” Intel 平台,配有 4 个 1.4 GHz Xeon MP CPU(启用了超线程),配有 4 GB 的 RAM。磁盘配置采用了一个 IBM EXP 阵列,连接到一个 SCSI 控制器上;一个 FAStT 600 系统,通过两个 QLogic 的光纤卡连接到服务器上。我们的目标是降低磁盘的瓶颈,使系统能够达到 15,000 个模拟 Notes 用户。所使用的操作系统是 SuSE SLES 9,这样 Domino 7 就可以利用 2.6 内核中的新特性以及 NPTL Posix 库。
下表显示了我们在每个服务器的 Notes.ini 文件中所进行的修改:
Domino 6.5
Domino 7
ConstrainedSHMSizeMB=1024
NSF_buffer_pool_size_MB=256
NSF_DBUcache_max_entries=5000
NSF_DBcache_maxentries=5000
Server_Max_Concurrent_trans=200
server_pool_tasks=100
ServerTasks=Router
ConstrainedSHMSizeMB=2560
NSF_DBUcache_max_entries=6100
NSF_DBcache_maxentries=6100
NSF_buffer_pool_size_MB=512
Server_Max_Concurrent_trans=200
server_pool_tasks=100
ServerTasks=Router
此处值得一提的是 ConstrainedSHMSizeMB 变量的设置。在 Domino 6.x 中,这个值需要被设置为 1 GB 左右,因为 Domino 只能使用 2 GB 的内存(SuSE SLES 8 和 SLES 9 将分配给 Domino 的内存限制为 2 GB),其中一些空间要预留给栈的空间。在 Domino 7 中,这个 Notes.ini 参数的值可以增加,因为我们在 SuSE SLES 8 和 SLES 9 中已经找到了一种方法,可以为 Domino 缺省分配 4 GB 左右的内存。这是通过一个特定的程序 tunekrnl 实现的,它自动调整系统的参数来让 Domino 可以更加有效地运行。(在 Domino 7 中这是自动的。)这个表中还显示了正在运行的服务器任务被限制到这个 NotesBench 测试所需要的那些任务。这样让服务器对于这个测试可以达到最大的性能。
当设计 Domino 6 时,它所需要支持的 Linux(x86)内核还没有 sys-epoll 功能。因此,Domino 并不支持其他平台所使用的线程池模型。这就导致每个 NRPC 用户都会派生一个服务器线程。每个服务器线程都需要一个栈,这需要占用 256K 的内存。这些栈都是从操作系统分配给 Domino 的 2 GB 内存中分配的,因此 Domino 6 可以支持的 NRPC 用户的数量就限制为 3000。(Linux on zSeries 在 Domino 6.5 上就已经实现了 sys-epoll。)
在 Domino 7 中,我们利用了新内核的 sys-epoll 特性(例如 SuSE SLES 8 和 SLES 9),这可以允许 Domino 使用与其他平台上类似的线程池模型。这样,与 SLES 9 中所包含的 NPTL Posix 库的改进一起,可以极大地提高 Domino 的可伸缩性,这样就可以达到 15,000 个 R6Mail 用户 —— 这是 400% 的提高!(请参看图 2。)
图 2. Domino 7 与 Domino 6.5 在 SuSE Linux(Intel)上 CPU 利用率的比较
尽管 Domino 7 可以达到 15,000 个用户,下表仍然是对 3000 个用户所获得的结果进行比较,因为这是 Domino 6.x 可以达到的最高值。不幸的是,即使在这么低的用户数量情况下,对参数值的设置稍微变化就会得出很大百分比的变化。在对最终结果数据进行解释时应该考虑这个问题。还需要注意由于我们现在对于 Domino 7 来说可以使用更多内存了,因此共享内存值也更大了,这样就可以处理更大的负载了。在第一个表中,我们的模拟用户使用的是 Mail6 的邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
6
7.5
25
全部磁盘读取速度 KB/sec
4082
2280
-44
全部磁盘写入速度 KB/sec
3549
3460
-03
所使用的共享内存(MB)
615
977
59
所使用的进程内存(MB)
947
1,020
08
网络流量 bytes/sec
632128
752881
19
第二个表给出了使用 Mail7 模板运行 Domino 7 模拟用户的结果:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
6
8.3
38
全部磁盘读取速度 KB/sec
4082
3770
-08
全部磁盘写入速度 KB/sec
3549
3741
05
所使用的共享内存(MB)
615
998
62
所使用的进程内存(MB)
947
1,060
12
网络流量 bytes/sec
632,128
725,063
15
总结一下,Linux 系统上的 Domino 7 在 NRPC 的可伸缩性性能方面取得了巨大的进展,每个分区将用户数目提高了 400%。这让它可以与其他高性能的服务器平台在一个对等的领域中进行竞争了。
iSeries
Domino 7 为 iSeries 环境提供了非常好的性能。在本节中,我们将从两个不同的方面对这些结果进行讨论,一个使用了 iSeries model 570,另外一个使用了 iSeries model 810,从而揭示我们在使用 Domino 7 进行实验室测试时所发现的改进。
iSeries model 570
我们的第一个测试环境使用了一台 iSeries model 570,它配有 14 个处理器,同时具有足够的内存和磁盘资源。之所以选择这个配置是为了显示 Domino 7 在一个无限制的环境中的结果,也是为了测试 Domino 7 在一个 Domino 分区中能够支持更多用户的能力。
型号
iSeries model 570
CPU
14 个 1.65 GHz
内存
128 GB
磁盘驱动器
93
操作系统
I5/OS V5R3
所有测试使用的都是缺省设置,我们只是在 570 上进行测试时在 Domino 7 的 Notes.ini 中将 server_pool_tasks 的设置提高到 100。这样做是为了支持现在在一个 Domino 分区中可能支持的大量用户。
Domino 6.5 被限制为最多可以运行 10,000 个用户。在 Domino 7 中,这个限制已经取消了,在 iSeries 上可以在测试配置中运行 18,000 个用户。在对 Domino 6.5 和 Domino 7 采用 Domino 7 中使用的 Mail7.ntf 模板情况下,对 CPU 的占用比例进行比较,我们可以看到大概提高了 25%。如果在这两个测试中 Domino 6.5 和 Domino 7 都使用相同的 Mail6.ntf 模板,对结果进行比较我们就会发现在 10,000 个用户的情况下提高了 33%(请参看图 3)。
图 3. Domino 7 与 Domino 6.5 在 iSeries model 570 上 CPU 利用率的比较
这些数字表示了我们在定制环境中可以期望看到的最大性能改进。这个系统的 CPU 利用率非常低的原因是这个系统配置还被用来进行 Domino Web access 测试,这比 NRPC 所需要的 CPU 资源更多。
下面这两个表对在 iSeries model 570 上运行 10,000 个模拟 Notes 用户的结果进行了比较。在第一个表中,模拟用户使用的是 Mail6 邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
5.5
3.7
-33
磁盘读取 请求数/sec
87
90
3
磁盘写入 请求数/sec
669
594
-11
基本池页/sec
195
250
28
全部网络流量 KB/sec
2033
2022
-1
平均响应时间(msec)
1 GB/secs 以太网
8.0
6.7
-16
在这个表中,Domino 7 用户使用的是 Mail7 邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
5.5
4.1
-25
磁盘读取 请求数/sec
87
184
110
磁盘写入 请求数/sec
669
897
34
基本池页/sec
195
383
96
全部网络流量 KB/sec
2033
2841
40
平均响应时间(msec)
1 GB/secs 以太网
8.0
7.5
-6
尽管这两个模板都极大地降低了 CPU 的利用率,但是可以看出 Domino 服务器使用了更多的磁盘和内存资源来支持我们在 Domino 7 模板中包含的新特性。这两个表中的结果展示了 Domino 7 可以在一个分区中支持大量的用户,并且每个用户对于 CPU 的需求更低。除了 Domino 7 中其他内存和磁盘的处理,这个系统环境还显示 Domino 7 比 Domino 6.5 在使用这两个邮件模板时响应时间都得到了改善。
iSeries model 810
我们的第二个测试环境使用了一台 iSeries model 810,它配有两个处理器。这个服务器配有 16 GB 的内存和 63 块磁盘,配置有 4 个 Domino 分区。
型号
iSeries model 810
CPU
两个 750 MHz
内存
16 GB
磁盘驱动器
63
操作系统
I5/OS V5R3
我们为 Domino 6.5 和 Domino 7 测试都使用了缺省的 Notes.ini 设置。
我们为这个环境配置了 4 个 Domino 分区,测试的数据点有 6000 和 9000 个用户。在 6000 个用户时,每个分区上有 1500 个活动用户。在 9000 个用户时,有两个分区分别增加到 3000 个用户。与 model 570 的配置相比,这些数字反映了每个 Domino 分区中更加典型的配置用户数,并且在 router 任务中包含了更多的处理工作。
比较 Domino 6.5 和 Domino 7 在使用 Domino 7 中的新 Mail7.ntf 模板时的 CPU 利用率,我们可以看到在 9000 个用户时大约有 4% 的改进。如果我们对 Domino 6.5 和 Domino 7 在两个测试中都使用相同的 Mail6.ntf 模板的结果进行比较,就会发现在 9000 个用户时大约有 18% 的改进。这些数字代表了在一个配置了多个 Domino 分区并且每个分区都只有少量用户的定制环境中可以期望获得的性能提高的典型情况。这些结果如图 4 所示:
图 4. Domino 7 与 Domino 6.5 在 iSeries model 810 上 CPU 利用率的比较
下表显示了每个邮件文件的资源利用率的比较。第一个表显示了 9000 个模拟用户使用 Mail6 邮件模板的情况:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
81.4
67
-18
磁盘读取 请求数/sec
976
772
-21
磁盘写入 请求数/sec
772
762
-1
基本池页/sec
3761
2804
-25
全部网络流量 KB/sec
1814
1832
+1
平均响应时间(msec)
100 MB 以太网
105.3
51.4
-51
在第二个表中,Domino 7 用户使用的是 Mail7 邮件模板:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
81.4
77.9
-4
磁盘读取 请求数/sec
976
1180
+21
磁盘写入 请求数/sec
772
753
-2
基本池页/sec
3761
4938
+31
全部网络流量 KB/sec
1814
1850
+2
平均响应时间(msec)
100 MB 以太网
105.3
97.5
-7
虽然这两个模板都显示对 CPU 的占用降低了,但是 Domino 7 服务器使用了更多的磁盘和内存资源来支持 Mail7.ntf 模板中提供的新特性。
上一节中介绍的 Domino 7 的优点展示了在定制环境中可以实现的性能改进的范围。根据用于 Domino 处理所使用的 CPU、内存、磁盘和网络资源数量的不同,性能改进会有所区别。正如上表所表明的一样,当有充足的系统资源可以使用时,当 Domino 7 采用 Mail6.ntf 模板时,就能够实现更高的性能改进。随着 Domino 7 在一个 Domino 分区中支持的用户数的提高,使用更少的 Domino 分区也可以提供稳定的性能改进。
Solaris 9
用于性能测试的 Sun 6800 包括 8 个 CPU,整个系统中一共有 12 个 CPU。我们使用了 6 个 T3 阵列,每个磁盘阵列中有 9 块磁盘:
型号
Sun 6800
CPU
8 个 1050 MHz
内存
32 GB
活动物理驱动器
54
活动逻辑卷
6 个 Raid 0 阵列
操作系统
Solaris 9
我们在服务器上对 Notes.ini 文件进行了如下的修改:
Domino 6.5
Domino 7
nsf_buffer_pool_size_mb=1536
ServerTasks=Router
server_pool_tasks=100
server_max_concurrent_trans=100
NSF_dbcache_maxentries=18000
MEM_EnablePReAlloc=1
DEBUG_ENABLE_SYS_V_SHM=1
ConstrainedSHMSizeMB=3300
ServerTasks=Router
对于 Domino 6.5 的测试来说,我们使用了 1.5 GB 作为 NSF 缓冲池的大小,但是对于 Domino 7 来说,需要将这个值缩减为缺省的 1.2 GB,因为我们需要支持更多用户。我们还增加了 server_pool_tasks/server_max_concurrent_trans 以及 NSF_dbcache_maxentries 的设置,从而更好地处理更多活动用户。其他变化是为了为 Solaris 启用大页的支持,这样 Domino 7 就可以利用这种特性了。
Domino 6.5 被限制为最多可以处理 10,000 个 Notes 用户而不会用光句柄。在 Domino 7 中,这种限制已经取消了;在 Solaris 上,在我们的测试配置环境中,可以运行多达 18,000 个用户。另外,CPU 的利用率也在 18,000 个定义的用户中有 10,000 个处于活动状态时可以降低 46%。正如可以在图 5 中看到的一样,Domino 7 现在在与 Domino 6.5 中有 10,000 个用户处于活动状态时的 CPU 利用率相同的情况下也可以支持 14,000 和 15,000 个用户:
图 5. Domino 7 与 Domino 6.5 在 Solaris 9 上 CPU 利用率的比较
下表显示了当使用这两个模板以在 Domino 6.5 上所测量的最大用户数(10,000 个用户)运行时对资源的占用情况。第一个表显示了 10,000 个使用 Mail6 邮件模板的模拟用户运行时的结果:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
34.9
18.8
-46
全部磁盘读取速度 KB/sec
29,011
29,382
1
全部磁盘写入速度 KB/sec
13,631
12,248
-10
所使用的共享内存(MB)
2706
2114
-22
所使用的进程内存(MB)
18
56
211
网络流量 bytes/sec
1,934,801
1,912,166
-1
下表显示了 Domino 7 用户使用 Mail7 模板时的结果:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
34.9
22.8
-35
全部磁盘读取速度 KB/sec
29,011
30,583
5
全部磁盘写入速度 KB/sec
13,631
13,990
3
所使用的共享内存(MB)
2706
2173
-20
所使用的进程内存(MB)
18
57
217
网络流量 bytes/sec
1,934,801
1,908,093
-1
进程内存在 Domino 7 配置中更大,这是因为为了支持更多用户需要对配置进行一些修改。Domino 6.5 的用户数是使用 Mail6 模板时的情况。
一个分区的 Domino 7 在 Solaris 上的可伸缩能力已经提高到了 18,000 个用户,在 Domino 6.5 上只有 10,000 个用户。另外,特别是在高度并发用户的情况下,我们看到了 Domino 7 在处理同等用户负载时对 CPU 的占用率有巨大改善。
Windows 2003 Enterprise Server
在这个测试中,Domino 7 是在一个 eServer xSeries 365 的单分区服务器上构建的,它运行的是 Windows 2003 Enterprise Server 系统,具有两个处理器,没有启用超线程,Windows 可以识别 3.5 GB 的内存。Domino 可执行文件是安装在一个 IBM FAStT 600(200 GB,RAID 0)上的。邮件数据库分散在 5 个 IBM FAStT 600 阵列上,其配置也是 RAID 0。网络访问是通过一个 1 GB 的以太网适配器进行的,它采用的是全双工模式。下表给出了 xSeries 服务器的配置。
型号
eServer xSeries 365
CPU
两个 3.0 GHz
内存
3583 MB
活动物理驱动器
62
活动逻辑卷
5 个阵列 RAID 0
操作系统
Windows 2003 Enterprise Server
与其他测试一样,我们对该服务器的 Notes.ini 文件稍微进行了修改:
Domino 6.5
Domino 7
NSF_buffer_pool_size_MB=300
Server_Pool_Tasks=60
Server_Max_Concurrent_trans=100
NSF_DBcache_maxentries=10000
platform_statistics_enabled=1
platform_statistics_enabled=1
DEBUG_SHOW_SEM=1
NSF_Buffer_Pool_Size_MB=250
server_pool_tasks=60
server_max_concurrent_trans=100
NSF_DBcache_maxentries=15000
正如在其他平台上看到的一样,在 Windows 2003 Enterprise Server 上运行的 Domino 7 也可以在 CPU 占用率和可伸缩性方面提供了很好的改进。Domino 7 最大可以支持的用户数在 Windows 2003 平台上是 15,000,而 Domino 6.5 最大只能支持 10,000 个用户。
与 Domino 6.5 相比,Domino 7 在 10,000 个用户负载的情况下对 CPU 的占用率有了很大的改进。Domino 6.5 在处理 10,000 个用户时利用 58% 的 CPU,而 Domino 7 在处理 10,000 个用户的情况下只占用了 47% 的 CPU(减少了 19%)。随着 Domino 7 中用户数目的增加,所节省的 CPU 比率还可以提高。而且,正如在图 6 中看到的,在与 Domino 6.5 处理 10,000 个活动用户所使用的 CPU 比率相同的情况下,Domino 7 现在可以处理 12,000 到 14,000 个用户。
图 6. Domino 7 与 Domino 6.5 在 Windows 2003 Enterprise Server 上 CPU 利用率的比较
下面两个表显示了在测试 10,000 个使用 Mail6 和 Mail7 模板的用户运行时对资源的占用情况。第一个表显示的是使用 Mail6 模板得到的结果:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
58
41.6
-28
全部磁盘读取速度 KB/sec
18,651
14,375
-23
全部磁盘写入速度 KB/sec
11,127
10,434
-6
所使用的共享内存(MB)
1294
1199
-7
所使用的进程内存(MB)
23
40
74
网络流量 bytes/sec
2,068,184
2,049,162
-1
第二个表显示的是 Domino 7 用户使用 Mail7 模板时得到的结果:
资源
Domino 6.5
Domino 7
变化(百分比)
CPU 繁忙比率
58
46.9
-19
全部磁盘读取速度 KB/sec
18,651
18,138
-3
全部磁盘写入速度 KB/sec
11,127
11,505
3
所使用的共享内存(MB)
1294
1184
-8
所使用的进程内存(MB)
23
46
100
网络流量 bytes/sec
2,068,184
2,051,615
1
尽管这两个模板都显示了巨大的 CPU 占用率减少,但是可以看到 Domino 服务器在处理 Domino 7 中集成的新特性时,使用了稍微多一点儿的资源。
正如可以从这些基准测试数据中可以发现的一样,在 Windows 2003 Enterprise Server 上运行的 Domino 7 与 Domino 6.5 相比有几个方面的性能优势。这包括更少的 CPU 占用率、改进了内存的使用情况并且在 Domino 7 上可以多支持 50% 的用户数。
回页首
Linux on zSeries
当我们在 zSeries 平台上对 Domino 7 和 Domino 6.5 进行比较时,发现对于传统的 Notes 邮件 R6Mail 任务负载来说,对 CPU 的占用率减少了 25% 到 30%,事务日志减少了 10% 到 14%(在使用 ZSeries 硬件协助数据压缩特性时)。另外,Domino 7 中的各种跨平台的改进还可以节省 10% 到 20% 的处理器资源(例如快速池的实现和内存分片)。我们使用 SLES 8 with SP3 作为比较 Domino 6.5 和 Domino 7 的平台。然而,我们建议您在 SLES 9 上使用 Domino 7,因为我们的实验室测试显示使用 SLES 9 可以比 SLES 8 大约节省 10% 的 CPU。另外,SLES 9 是一个 64 位的操作系统,多个域分区(DPAR)可以安装到一个 LPAR 中。
这些 CPU 利用率方面的改进都是使用 R6Mail 任务负载得出的。Domino 7 邮件模板中包含的其他功能要比运行 R6Mail 任务负载测试多消耗 5% 到 15% 的 CPU。这可能会影响我们所观察到的 CPU 改进。本节将介绍使用 Domino 6 邮件模板和 Domino 7 邮件模板可以获得的 CPU 改进。这里继续重点介绍在将来的 Domino 发行版本中对 CPU 消耗情况的改进,包括 Domino 7 维护版本。
所有的 zSeries 性能测试都是在 z990 model 2084-C24 的一个逻辑分区(LPAR)上进行的。这个 z990 具有 24 个 CPU,其中 6 个专门用于性能测试的 LPAR。其余的 18 个 CPU 与其他机器资源一起与 13 个其他的 LPAR 进行共享,用于 Domino 的开发和测试。这台机器由 Quattro 引导,例如 z/OS、SLES 8、SLES 9 或 REL 4。对于 NRPC 邮件测试来说,我们使用了这 6 个 CPU 中的 3 个来运行 Domino 6.5 和 Domino 7,从而驱动负载对 CPU 的利用率可以更高。Domino 6.5 并不是在 SLES 9 或 REL 4 上运行的。性能测试 LPAR 配置了 12 GB 的内存。我们的 LAN 被隔离开,从而防止产生其他无关的网络流量。所有的磁盘都是从一个 Enterprise Storage Server(2105 Model 800)磁盘阵列中分配的,其中每个阵列都配置为一个 3390 model 3。我们为 Domino 的执行程序、数据(除了客户机的邮件数据库外)和 Domino 的地址薄(Names.nsf)都在单个卷(磁盘)上分配了单独的文件系统,在逻辑卷管理器(LVM)文件系统中为事务日志分配了两个卷。客户机的邮件数据库分布在 52 个 LVM 文件系统上,每个都分布在一个 LVM 中的 5 个卷上,每个文件系统都提供了 11.5 GB 的可用空间。在 Linux for zSeries 上使用的文件系统是 EXT 3。所安装的操作系统是 SLES 8 with SP3 或 SLES 9 with SP1。
在 SLES 8 上,只有 2 GB 的内存用作中央内存,因为这是一个 31 位的操作系统,有 2 GB 的扩展内存用作交换空间。在 SLES 9 上,我们使用了 12 GB 的内存。下表给出了硬件的配置:
型号
z990 2084-C24
CPU
3 个专用的 CPU
内存
12 GB
DASD 类型
2105 model 800, 3390 model 3 类型卷
文件系统
52 x 5 LVM 邮件数据库,7 个其他卷用于 Notes 数据、notesbin、Domino Directory、邮箱、实用程序和事务日志
操作系统
SLES 8 SP3 / SLES 9 SP1
在开始进行测试之前,我们配置 Domino 6.5 和 Domino 7 服务器的 notes.ini 文件,包括以下内容:
TRANSLOG_Status=1
TRANSLOG_MaxSize=3000
TRANSLOG_Performance=1
NSF_Buffer_Pool_Size_MB=256
Server_Pool_Tasks=100
ServerTasks=Router
NSF_DBCache_MaxEntries=10000
图 7 显示了 Domino 6.5 与 Domino 7 在运行 NRPC 邮件任务负载时的改进,它们分别使用了 Domino 6.5 中的 Mail6 模板和 Mail7 模板。
图 7. Domino 7 与 Domino 6.5 在 Linux on zSeries 上 CPU 利用率的比较
在我们的测试过程中,我们等待了 1 个小时来启动/添加 1000 个客户机,从而让每个变化都能够过渡到一个“恒定态”。图中所显示的 CPU 的百分比是一个小时后恒定态的平均值。在 Domino 6.5 中 Notes 客户机用户数的最大值为 10,000。然而在 Domino 7 中,这个值可以扩展到 12,000 个客户机用户。
图 7 显示了 Domino 7 在使用 6.5 的邮件模板时可以减少 15% 到 28% 的 CPU 利用率,Domino 7 在使用 Mail7 邮件模板时可以减少 9% 到 21% 的 CPU 利用率。我们可以非常清楚地看出,Domino 7 采用 Mail6.ntf 和 Mail7.ntf 对 CPU 的利用率都比 Domino 6.5 有很大的改进。我们将在将来的 Domino 发行版本中继续着重对 Mail7 模板进行优化。
图 8 显示了 SLES 9 上 CPU 改进的百分比情况。这显示了当 Domino 7 运行 Mail6 模板时对 CPU 的改进有 1% 到 18%。在 6000 个用户以后, SLES 8 就耗光了内存了。它需要不断向 SWAP 磁盘换入/换出内存。然而,SLES 9 上就不会发生这种情况;它有足够的内存可用。因此,我们看到 SLES 9 与 SLES 8 相比,在 Linux on zSeries 上的用户超过 6000 个之后对于内存的改善很大。
图 8. SLES9 中 CPU 改进的百分比
这些任务负载在 Domino 6.5 和 Domino 7 服务器上可以生成相同的负载。每个都会发送并接收相同数量的网络字节,每个都发送了相同数量的消息,每个都完成了相同数量的事务。
在 Domino 7 中对于 CPU 利用率的减少会转换为高任务负载情况下可靠性的提高,这样 Linux on zSeries 上的一个 Domino 7 分区就可以支持更多个客户机用户。更为重要的是,与 Linux on zSeries 上的 Domino 6.5 相比,Domino 7 对于 CPU 需求的降低可以降低总拥有成本。
回页首
z/OS
对于在 zSeries z/OS 平台上运行的 Domino 7 来说,它利用了 zSeries 的一些专有硬件特性,并对 Domino 服务器的代码进行了优化。第一个特性是事务日志的获益和性能成本。尽管事务日志提供了很多有益的特性,但是从对 CPU 的消耗来说,这是有确定的成本的。例如采用第三个 CPU 对数据进行压缩操作。对于 Domino 7 来说,就使用了 zSeries 的硬件辅助压缩特性。我们的基准测试已经表明,与 Domino 6.5 中所采用的软件压缩算法相比,在 z/OS 上运行 Domino 7 并使用硬件辅助来处理事务日志时,可以降低 CPU 利用率 10% 到 11%。
用来判断在 Domino 7 中可以进行性能优化的一种技术是对压力测试过程中所发生的内部操作进行分析。通过分析各个平台上的数据,我们发现 z/OS 比其他 Domino 平台在每次读写(向每个 Notes 客户机)时,需要分配更多的网络缓冲区内存。对于 z/OS 的内存分配算法的改进在我们的测试中可以减少 7% 的 CPU 利用率。
仅仅利用这些改进,z/OS 上的 Domino 7 与 Domino 6.5 相比就可以对 CPU 利用率改进 17% 到 20%。另外,Domino 7 中各种跨平台的改进还可以再节省 10% 的 CPU。与 Domino 6.5 相比,在 z/OS 上使用 Domino 7 来运行邮件基准测试可以总共改进 25% 到 30%(详见下表)。
这些 CPU 利用率的改进是使用 R6Mail 任务负载进行测量的,它使用了 Domino 6 邮件模板,分别运行的是 Domino 6.5 服务器和 Domino 7 服务器。正如前面介绍的一样,Domino 7 邮件模板中包含的功能会抵消一些 CPU 改进。
本节中所介绍的所有性能测试都是在 z990 model 2084-C24 的一个逻辑分区(LPAR)上进行的。这个 z990 具有 24 个 CPU,其中 6 个专门用于性能测试的 LPAR。其余的 18 个 CPU 与其他机器资源一起与 13 个其他的 LPAR 进行共享,用于 Domino 的开发和测试。这台机器有 Quattro 引导,例如 z/OS、SLES 8、SLES 9 或 REL 4。对于 NRPC 邮件测试来说,我们使用了这 6 个 CPU 中的 3 个来运行 Domino 6.5 和 Domino 7,从而驱动负载对 CPU 的利用率可以更高。Domino 6.5 并不是在 SLES 9 或 REL 4 上运行的。性能测试 LPAR 配置了 12 GB 的内存。我们的 LAN 被隔离开,从而防止产生其他无关的网络流量。所有的磁盘都是从一个 Enterprise Storage Server(2105 Model 800)磁盘阵列中分配的,其中每个阵列都配置为一个 3390 model 3。我们为 Domino 的执行程序、数据(除了客户机的邮件数据库外)和 Domino 的地址薄(Names.nsf)都在单个卷(磁盘)上分配了单独的文件系统。我们为事务日志数据分配了一个跨越两个卷的文件系统。客户机的邮件数据库分布在 53 个 z/FS 上,每个都分布在 5 个卷上,提供 11.5 GB 的可用空间。所安装的操作系统是 z/OS version 1 release 5。
下表给出了硬件的配置:
型号
z990 2084-C24
CPU
3 个专用 CPU
内存
12 GB
DASD 类型
2105 model 800, 3390 model 3 类型卷
文件系统
53 x 5 z/FS 邮件数据库,7 个其他卷用于 Notes 数据、notesbin、Domino Directory、邮箱、实用程序和事务日志
操作系统
z/OS 1.5
我们对 Domino 6.5 和 Domino 7 服务器的 notes.ini 文件进行了如下的修改: TRANSLOG_Status=1
TRANSLOG_MaxSize=3000
TRANSLOG_Performance=1
NSF_Buffer_Pool_Size_MB=128
Server_Pool_Tasks=100
ServerTasks=Router
NSF_DBCache_MaxEntries=10000
图 9 显示了 Domino 6.5 与 Domino 7 在运行 NRPC 邮件任务负载时的改进,它们分别使用了 Domino 6.5 中的 Mail6 模板和 Mail7 模板。
图 9. Domino 7 与 Domino 6.5 在 z/OS on zSeries 上 CPU 利用率的比较
正如 Linux on zSeries 上的测试一样,我们等待了 1 个小时来启动/添加 1000 个客户机,从而过渡到一个“恒定态”。我们所测量到的 CPU 的百分比是一个小时后恒定态的平均值。在 Domino 6.5 中,服务器在达到 9000 个用户之后就用光了共享内存。然而在 Domino 7 中,这个值可以扩展到 10,000 个客户机用户。
图 9 显示了 Domino 7 在使用 6.5 的邮件模板时可以减少 21% 到 29% 的 CPU 利用率,Domino 7 在使用 Mail7 邮件模板时可以减少 10% 到 19% 的 CPU 利用率。我们可以非常清楚地看出,Domino 7 采用 Mail6.ntf 和 Mail7.ntf 对 CPU 的利用率都比 Domino 6.5 有很大的改进。
图 10 显示了 Domino 7 上服务器任务的改进情况。 router 任务的 CPU 利用率在 Domino 6.5 和 Domino 7 之间保持不变。
图 10. 服务器任务的改进
这些任务负载在 Domino 6.5 和 Domino 7 服务器上可以生成相同的负载。
结束语
本节将对运行 Notes 客户机任务负载对 Domino 7 服务器进行的性能测试进行总结。正如您可以看到的一样,Notes/Domino 7 在我们所测试的所有平台上可伸缩性都得到了极大的提高,不过由于平台的差异,具体改进的比率可能会有所不同。在 Solaris 和 iSeries 平台上,我们可以访问的地址空间比其他平台更大,我们看到最大可以支持 18,000 个基准测试用户。在采用 SuSE Linux 时,我们可以利用 sys-epoll 内核改进来实现类似于 Domino 在其他平台上已经具有的线程池。这样可以将 Linux 平台上的可伸缩性从 3000 个用户剧增到 15,000 个用户。这些可伸缩能力的改进可以让服务器更加稳定,并为服务器提供了资源来处理其他用户。
正如我们在前面介绍的一样,本文是 3 篇系列文章的第 1 部分。在第 2 部分中,我们将讨论 Domino HTTP 的性能测试结果,这是对模拟 Domino Web Access 用户而得出的(使用 R6iNotes 任务负载)。在第 3 部分总结中,我们将给出在典型的企业环境中可以期望实现的结果,这是使用一个特殊的负载获得的,它包括集群复制、本地复制、全文本索引;并介绍一下 Notes 客户机的流量。
关于作者
Notes/Domino Performance Team 的成员,为本文提供贡献的包括 Rich Buck、Wu W Huang、Angelo Lynn、Dave Johnson、Joseph H Peterson、James Powers 和 Andrew Nolet。