高性能服务器网络可伸缩性
高性能可伸缩服务器的大量使用增加了网络和系统性能的复杂性。
在本文中,学习如何对多节点高性能 Linux® 系统进行优化(使用系统板
载千兆以太网适配器,有 1 到 4 个节点)。了解可能导致问题的网络可伸
缩性场景以及避免 问题的方法。
有许多资料讨论 了网络性能、优化和调优,涉及各种硬件、平台和
操作系统以及各种工作负载。但是,高性能可伸缩服务器(比如 IBM®
eServer™ xSeries® x460 和 IBM System x™ 3950)的大量使用毕竟增加
了网络和系统性能的复杂性。例如,对于可以通过添加完整的机架(或节
点)来增加容量的可伸缩服务器,提高跨多节点系统的网络 可伸缩性对
总体系统性能非常重要。
系统配置
测试用系统(SUT)是一个 4 节点的 IBM eServer xSeries 460 ,运行
SUSE Linux Enterprise Server 10 for AMD64 and EM64T (x86-64)。每个
节点的配置如下:
系统: IBM eServer xSeries 460
CPU : 4 个 64 位 Intel® Xeon® 处理器 7040 3.0GHz
内存: 32GB (4 个内存卡上各有 8 个 1 GB DIMM)
以太网适配器: Broadcom 5704 10/100/1000 dual Ethernet/on
system board/64-bit 266MHz PCI-X 2.0
网络驱动程序: tg3 c3.49
网络 型: 千兆以太网
线程化: 超线程技术
所 有测试场景都使用 IBM System p5™ 550 系统,每个系统有两个
Intel Dual-Port 以太网适配器,运行 Red Hat Enterprise Linux 4 Update 4 。
4 节点的绑定(bond)测试还包含一个 2 节点的 IBM eServer xSeries 460 ,
运行 SUSE Linux Enterprise Server 10 for AMD64 and EM64T (x86-64)。
SUT 和驱动程序通过一个 Cisco Catalyst 3750G-24TS 交换机网络。
测试方法
由于多种原因,我选用 netperf 基准(具体地说,是单向流测试
TCP_STREAM)测试可伸缩性演示工作负载,原因包括它的简单性、可
度量性、在 Linux 上的稳定性、广泛的应用以及能够精确地度量批量数
据传输性能。它是一个基本的客户机-服务器模型基准,包含两个对应的
可执行文件 netperf 和 netserver 。
简单的 TCP_STREAM 测试从 netperf 系统到 netserver 系统的数据
传输时间,以此度量一个系统发送数据和另一个系统接收数据的速度。
在执行时,netperf 建立一个到远程系统的控制连接(通过 TCP)。这个连
接用来在系统之间传递配置信息和结果。使用另一个连接执行度量,在
此期间保留控制会话但是没有通信流(除非某些 TCP 选项需要通信)。
在这里描述的所有测试中,当 IBM eServer xSeries 460 执行网络发
送(netperf)、网络接收(netserver)或同时执行这两种操作(双向)时,都度
量网络吞吐量和 CPU 利用率。在客户机发送端记录客户机和服务器之
间的吞吐量,并由 netperf 基准报告记录的数据。
每 个环境的完整测试对于从 64 字节到 256KB 的 15 种消息大小分
别执行 3 分钟的流测试。这个范围包含 1460 和 1480 字节的消息大小,
所以在 Linux 将消息分割为小数据包发送到网络之后,总的数据包大小
接近默认的最大传输单位(MTU)1500。在 SUT 上度量 CPU 利用率并由
sysstat 包中的 sar 实用程序报告,这一信息表示为 netperf 测试期间的系
统平均值。所有 CPU 和中断信息也来自 sar 数据。
在可伸缩性演示中,修改了配置和参数来影响行为。以各种组合启
用和 禁用它们将导致不同的结果。通过设置 SMP IRQ 亲合位掩码
/proc/irq/nnn/smp