内容


Notes 支持:增加内存真的有帮助吗?

Comments

[编者注:Lotus Support 为您提供了 From the Field 专栏,其中的专题技术文章都基于我们帮助客户解决实际问题得出的经验。本文描述了在 AIX 平台上进行的性能分析。对于 Windows NT 平台上的性能信息,请参见 “优化 Lotus Domino 服务器性能:端口加密与缓冲池设置”。]

为什么增加内存能够让性能很差的计算机摆脱性能困境呢?因为这招一般都管用。当然,能提升多少性能谁都说不准。例如,您希望将某人的台式机的内存从 16MB 升级到 32MB,然后精确地告诉他性能提升了几个百分点。这是不可能的。将台式机的内存从 16MB 升级到 32MB 通常能够显著改善性能。这个问题很简单,没有必要进行解释。

尽管升级台式机内存能够明显改善性能,但升级服务器的内存有时并不一定能得到相同的效果。我们使用服务器的方式与台式机不同。所以,为服务器添加更多的内存有时并不能明显改善性能。由于升级得到的性能效果不明显,所以应该仔细考虑和计划内存的升级。换句话说,在升级内存之前,管理员应该知道希望通过升级改善哪方面的性能。

幸运的是,Lotus 的一些员工正在尝试解决该问题。他们仔细观察了当内存从 512MB 增加到 1 GB 时 Domino 服务器的性能改进。尽管这些测试结果不能保证所有升级都能得到这样的性能改进,但它们确实证明了更多内存是有帮助的。这组人员的测试以及测试结果就是本文的重点。

不使用常规的机器

我们决定不在运行 Windows NT 的大型 Pentium 机器上进行测试。相反,我们选择在没有那么流行并且使用其他操作系统的机器上进行测试。原因很简单,我们希望模拟客户环境:

  • 计算机:在 SP 机架上的 IBM Thin3 Node,使用一个 120MHz PowerPC 处理器
  • 内存:第一组测试为 512MB,第二组测试为 1GB
  • 网络:使用 TCP/IP 的 Ethernet
  • 操作系统:IBM AIX version 4.20

我们使用这个硬件和操作系统配置安装 Domino Release 4.53。尽管我们可以调整各种 NOTES.INI 变量来改进性能,但是我们决定使用 "vanilla" 环境,并且仅调整以下设置(在所有测试和内存配置中保持不变):

  • NOTES_SHARED_DPOOLSIZE = 250,000,000(改变该设置以模拟客户环境)。
  • SERVER_MAX_CONCURRENT_TRANS = 30(改变该设置以模拟客户环境)。
  • NSF_BUFFER_POOLSIZE = 160,000,000(我们使用该设置作为内存控制机制。因此,增加内存时获得的性能提升源于物理内存的改变,而非其他东西)。

注意:我们并不推荐使用以上的 NOTES.INI 设置提升性能。要更多地了解服务器性能调优,请查看 “优化 Lotus Domino 服务器性能:端口加密与缓冲池设置” 和 “优化 Lotus Domino 服务器性能:CPU 可伸缩性”。要获得其他关于性能的信息,请查看 Lotus 性能专题

模拟负载

执行 Domino 服务器性能测试依赖于模拟真实用户负载的能力。由于很难聚集几百位用户,所以我们使用了各种来自特别设计的 Domino 数据库的测试脚本,以模拟这些用户。该数据库中的脚步帮助模拟 3 种类型的用户:

  • 随机用户 (75%):较少使用电子邮件。全天定期地发送主要基于文本的消息。
  • 活跃用户 (15%):全天定期地发送电子邮件,偶尔带有附件。有时执行组安排。
  • 高强度用户 (10%):大量使用电子邮件。大部分消息都带有附件,并且经常为其他用户执行组安排。

根据这个比例的混合用户,我们按照内存或用户的数量划分测试:

  • 测试 1:512MB 内存,350 个用户
  • 测试 2:512MB 内存,500 个用户
  • 测试 3:1GB 内存,350 个用户
  • 测试 4:1GB 内存,500 个用户

在模拟测试期间,我们通过以下工具收集统计数据信息:

  • Performance Toolbox for AIX (PTX):用于监控和调优系统性能的综合性工具。这个工具非常灵活,它能够记录超过 200 条 Domino 和 AIX 级别的统计数据。简而言之,它轮询用户的服务器,确定时间间隔并收集指定的统计数据(参考 IBM Web site 更多地了解 PTX)。
  • IPTrace:IPTrace 内建在 AIX 操作系统中,它获取负载生成的 LAN 活动的所有包的详细描述。这个自带的程序处理信息,并且提取包含有意义的 Domino Remote Procedure Calls (RPC) 的 IP 流量。

然后,我们将这些工具收集的数据输入到 IBM DB2 数据库做进一步分析。

查看图表

我们已经了解硬件、软件和测试方法的细节,现在开始了解最重要的部分 —— 测试结果。下面的图表反映了负载分别为 350 和 500 位用户时增加内存的好处。每组图表前面都有简要的描述;但我们相信图表显示的结果会证明它们的真实性。

事务测试

第一个测试度量每分钟在服务器和客户机之间发生的 Domino RPC 的数量。一开始我们就看到了添加更多内存带来的正面性能影响。

图 1. 每分钟的事务数量
每分钟的事务数量
每分钟的事务数量

输入和输出测试

接下来的 3 个测试度量更多内存对磁盘 I/O 的影响。第一个测试 “每秒磁盘 I/O 操作” 显示了当内存从 512MB 增加到 1GB 时,性能得到了明显的提升。另外两个测试 “用户为 350 时每秒 I/O 字节数” 和 “用户为 500 时每秒 I/O 字节数” 帮助证实第一次测试的结果 —— 更多的内存能够减少从硬盘获取数据的次数,这意味着更佳的磁盘 I/O 性能。此外,在最后两个图表中,“total read” 实现了很大的性能提升。但 “Total written” 的性能提升很少。为什么出现这种差距?答案很简单。一部分磁盘数据被存储在内存中。因此,请求存储在内存中的数据的读事件不会访问硬盘。不过,磁盘写事件通常会访问磁盘。

图 2. 每秒磁盘 I/O 操作
每秒磁盘 I/O 操作
每秒磁盘 I/O 操作
图 3. 用户为 350 时每秒 I/O 字节数
用户为 350 时每秒 I/O 字节数
用户为 350 时每秒 I/O 字节数
图 4. 用户为 500 时每秒 I/O 字节数
用户为 500 时每秒 I/O 字节数
用户为 500 时每秒 I/O 字节数

CPU 性能测试

在上面的测试中,我们看到磁盘 I/O 操作得到了巨大的改进。不过,增加内存对 CPU 性能的正面影响没有这么大。接下来的两个测试表明,即使是 CPU 密集型操作也能通过增加内存获得一些性能提升。“系统调用” 测试度量每秒执行的系统服务调用;“运行队列长度” 测试计算等待 CPU 的线程数。

图 5. 内存和用户数量对系统调用的影响
内存和用户数量对系统调用的影响
内存和用户数量对系统调用的影响
图 6. 内存和用户数量对运行队列长度的影响
内存和用户数量对运行队列长度的影响
内存和用户数量对运行队列长度的影响

邮件数据库测试

最后的测试度量 3 种数据库操作所需的时间:

  • Open Collection:打开数据库的操作
  • Read Entries:当用户在 Notes 客户端视图中向上或向下查看邮件条目描述时,将发生该事件
  • Find by Key:该事件是在分类文档列表上执行的名称查找的一部分

这 3 个图表演示了邮件数据库中的特定用户活动。在这些测试中,增加内存能够加快事件的执行速度。与前两个测试类似,总体性能影响不如 I/O 测试明显。

图 7. Open Collection 图表
Open Collection 图表
Open Collection 图表
图 8. Read Entries 图表
Read Entries 图表
Read Entries 图表
图 9. Find by Key 图表
Find by Key 图表
Find by Key 图表

结束语

这些图表表明,内存越多越好。但是,Domino 内存使用的测试结果并不具有普遍性。有许多变量能够直接影响到这些测试:

  • 服务器的硬件配置
  • 服务器的软件配置
  • 操作系统的配置
  • 数据库的大小
  • 数据库的内存
  • 不同的网络变量,比如传输协议、带宽和流量

尽管这些测试受到不同变量的影响,最终结果都是为了回答一个简单但重要的问题 —— 更多的内存会有帮助吗?虽然某些测试的结果比另一些测试更显著,但它们对该问题的回答都是一样的 —— 更多的内存是有帮助的。

不过,关于更多内存的问题并不是一个理论问题。解决这个问题具有实际意义。在用户处于增长临界点时(350 至 500 位用户),管理员必须决定是增加当前服务器的资源,还是购买新的服务器。了解增加内存是否能够提升服务器性能,这将直接影响到您的购买决策。在这些测试中,最终的结果确实影响到客户的决策 —— 他们决定安装更多的内存,延长当前硬件的使用时间。


相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Lotus
ArticleID=398606
ArticleTitle=Notes 支持:增加内存真的有帮助吗?
publish-date=03011999