1. 测试建议
1.1 测试目的
某企业客户数据仓库平台经过几年的建设,在容量上和性能上将面临不能满足新的业务需求的局限性,需要为下一步分公司的硬件采购和总公司的统一规划上,拿出具有指导意义的平台方案建议。基于目前平台的现状,需要对IA64和X64体系进行对比测试,测试的目的是比对两个平台上原有X32应用在功能兼容性、性能指标、数据准确性等方面的重要指标。
1.2 测试关键点
兼容性:
OLEDB/ODBC驱动的IA64、X64的平台兼容性
调度平台的可用性:涉及到ASP、Main程序、数据仓库平台Portal等
SSIS包、SSAS、SSRS、SP的兼容性验证;
数据准确性:
几张关键业务表的数据抽取总行数、关键列求和、浮点字段的加和除;
增量更新表和全量更新表各确保有一个被测试;
性能:
OLEDB/ODBC驱动在IA64、X64平台的执行性能
SSIS的X32、X64、IA64的相同包、相同配置执行性能对比
根据CPU个数和内存情况对X64、IA64分别做优化后的执行对比(如增加并发数)
数据模型的分层汇总测试;
CubeDB生成立方体的测试;
SSIS包、SSAS、SSRS、SP的分段性能测试;
通过关键性能计数器记录性能影响的关键点;
结合测试机硬件配置和测试记录给出测试报告与采购部署建议,并提供数据基准参考;
2. 性能计数器
性能计数器是Windows平台对系统运行状态监控的重要工具,提供对操作系统本身和面向特定应用的各种性能参数,通过量化的性能计数器,可以对系统性能对比和问题追踪提供重要依据。以下分别介绍比较重要的SSIS性能计数器和操作系统计数器:
2.1 SQL Server提供的计数器
指标名称 | 指标描述 | 指标范围 |
1 .SQL Server SSIS Pipeline的性能计数器 | ||
Buffer memory | 正在使用的各种类型的内存缓冲区的大小。如果该数值大于物理内存量,则 Buffers Spooled 计数将随内存交换的增加而增加。内存交换的增加会降低数据流引擎的性能。 |
|
Buffers in use | 数据流引擎当前使用的各种类型的缓冲区对象的数量。 |
|
Buffers spooled | 写入磁盘的缓冲区的数量。如果数据流引擎运行时物理内存较低,则当前没有使用的缓冲区会被写入磁盘,然后在需要时重新加载。 |
|
Private buffer memory | 所有专用缓冲区所使用的内存总量。如果数据流引擎创建的是一个支持数据流的缓冲区,则该缓冲区就不是专用缓冲区。专用缓冲区是指转换仅用于临时工作的缓冲区。例如,聚合转换使用专用缓冲区来完成其工作。 |
|
Private buffers in use | 转换使用的缓冲区的数量。 |
|
Rows read | 源产生的行数。该数值不包括查找转换从引用表中读取的行数。 |
|
Rows written | 提供给目标的行数。该数值不反映写入目标数据存储区中的行数。 |
|
2 . SQL Server中缓冲器管理器( Buffer Manager)对象包含的性能计数器 | ||
缓冲区高速缓存命中率 (Buffer Cache Hit Ratio % ) | 指在缓冲区高速缓存中找到而不需要从磁盘中读取的页的百分比。该比率是缓存命中总次数与缓存查找总次数之比。经过很长时间后,该比率的变化很小。由于从缓存中读取数据比从磁盘中读取数据的开销小得多,一般希望该比率高一些。 | 该指标的值最好为 90% 或更高。通常可以通过增加 SQL Server 可用的内存数量来提高该指标的值。增加内存直到这指标的值持续高于 90%,表示 90% 以上的数据请求可以从数据缓冲区中获得所需数据。 |
缓冲总页数(Total Pages) | 指在SQL读写过程中使用的缓冲总页数 | 这个计数器是针对SQL Server的物理读写,不是整个系统的物理读写。物理读写比较耗时,所以上面的两个值不要太大。 |
读的页 /秒 ( Page Reads/sec) | 指每秒发出的物理数据库页读取数。该指标主要考察数据库从磁盘读取数据的频率。因为物理 I/O 会耗费大量时间,所以应尽可能地减少物理 I/O 以提高性能。 | 该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值。 |
写的页 /秒 ( Page Writes/sec) | 指每秒执行的物理数据库写的页数。该指标主要考察数据库向磁盘写入数据的频率。因为物理 I/O 会耗费大量时间,所以应尽可能地减少物理 I/O 以提高性能。 | 该指标的值应尽可能的小。可以通过使用更大的数据高速缓存、智能索引、更高效的查询或者改变数据库设计等方法,以降低该指标的值。 |
惰性写 /秒 ( Lazy Writes/sec) | 指每秒被缓冲区管理器的惰性编写器写入的缓冲区数。惰性编写器是一个系统进程,用于成批刷新脏的老化的缓冲区(包含更改的缓冲区,必须将这些更改写回磁盘,才能将缓冲区重用于其他页),并使它们可用于用户进程。 | 该指标的值 最好为 0。 |
3 .SQL Server中通用( General Statistics)对象包含的性能计数器 | ||
事务总数(Transactions) | 执行的事务总数 |
|
用户连接数(Use Connections) | 当前用户连接数 |
|
4 . SQL Server中访问方法( Access Methods)对象包含的性能计数器 | ||
全表扫描 /秒 ( Full Scans/sec) | 指 每秒全表扫描的数量。全表扫描可以是基本表扫描或全索引扫描。由于全表扫描需要耗费大量时间,因此全表扫描的频率过高的话,会影响性能。 | 如果该指标的值比 1或 2 高,应该分析设计的查询以确定是否确实需要全表扫描,以及 SQL 查询是否可以被优化。 |
页分割/秒(Page splits/sec) | 由于数据更新操作引起的每秒页分割的数量。[页拆分是说把已满的页上一半的数据移到两个新页上,以便在本页上腾出空间插入数据。页拆分会降低性能。] |
|
5 . SQL Server中锁(Locks)对象包含的性能计数器 | ||
死锁数(Number of Deadlocks) | (死锁的数量/秒) 导致死锁的锁请求的数量 |
|
平均等待时间(Average Wait Time) | (平均等待时间(毫秒)) 线程等待某种类型的锁的平均等待时间 |
|
6 . SQL Server中内存(Memory)对象包含的性能计数器 | ||
服务器内存总数(Total Server Memory) | Total Server Memory (KB) 计数器值与计算机的物理内存大小相比一直很高,可能需要更多的内存。 |
|
2.2 操作系统提供的计数器
指标名称 | 计数器 | 指标描述 |
Processor使用 | %Processor Time(所有实例) | 指处理器执行非闲置线程时间的百分比。这个计数器设计成用来作为处理器活动的主要指示器。它通过在每个范例间隔中衡 量处理器用于执行闲置处理线程的时间,并且用 100% 减去该值得出。(每 台处理器有一个闲置线程,该线程在没有其它线程可以运行时消耗周 期)。可将其视为范例间隔用于做有用工作的百分比。这个计数器显 示在范例间隔时所看到的忙时平均值。这个值是用 100% 减去该服务不活 动的时间计算出来的。 |
Processor瓶颈 | Interrupts/sec | 指处理器每秒钟接收并维护的硬件中断的平均值。它不包括 DPC,DPC 将单独计算。这个值是产生中断的设备(如:系统时钟、鼠标、磁盘驱动器、数据交流线路、网络街面卡和其它附件设备)的活动的间接指示器,这些设备通常在完成了一项任务或需要注意时中断处理器。正常的线程操作在中断时悬停。大多数的系统时钟每隔 10 毫秒中断处理器一次,形成了间隔活动的后台。这个计数值显示用上两个实例中观察到的值之间的差除于实例间隔的持续时间所得的值。 |
System/Processor Queue Length(所有实例) | 是指处理列队中的线程数。即使在有多个处理器 的计算机上处理器时间也会有一个单列队。不象磁盘计数器,这个计数器仅 计数就绪的线程,而不计数运行中的线程。如果处理器列队中总是有两个以上的线程 通常表示处理器堵塞。这个计数器仅显示上一次观察的值;而不是一个平 均值。 | |
System/Context Switches/sec | 指计算机上的所有处理器全都从一个线程转换到另一个线程的综合速率。当正在运行的线程自动放弃处理器时出现上下文转换,由一个有更高优先就绪的线程占先或在用户模式和特权(内核)模式之间转换以使用执行或分系统服务。它是在计算机上的所有处理器上运行的所有线程的Thread: Context Switches/sec 的总数并且用转换数量衡量。在系统和线程对象上有上下文转换计数器。这个计数值显示在上一次两个实例中观察到的值除于实例间隔的持续时间所得的值的差异。 | |
Process (进程) | Private Bytes | 指这个处理不能与其它处理共享的、已分配的当前 字节数。 |
Virtual Bytes | 指处理使用的虚拟地址空间的以字节数显示的当前大小。 使用虚拟地址空间不一定是指对磁盘或主内存页的相应的使用。虚 拟空间是有限,如果使用过多,可能会限制处理加载数据 库的能力。 | |
Working Set | 指这个处理的 Working Set 中的当前字节数。 Working Set 是在处理中被线程最近触到的那个内存页集。如果 计算机上的可用内存处于阈值以上,即使页不在使用中,也会留在一 个处理的 Working Set中。当可用内存降到阈值以下,将从 Working Set 中删除页。如果需要页时,它会在离开主内存前软故障返回 到 Working Set 中。sql server的进程Working Set(Process sqlservr) | |
Handle Count | 由这个处理现在打开的句柄总数。这个数字是在这个处理中每个线程当前打开的句柄的总数。 | |
Objects | Threads | 线程指在数据收集时在计算机中线程的数目。请注意这是 一个即时计算而不是一个时间间隔的平均值。一个线程为一个基本 的可执行实体,该实体在处理器中执行指令。 |
Memory使用 | Available Bytes | 是计算机上可用于运行处理的有效物理内存的字节数量。是用零、 空闲和备用内存表上的空间总值计算的。空闲内存指可以使用内存;零内存指为了防 止以后的处理看到以前处理使用的数据而在很多页内存中充满了零的内存。备用内 存是指从处理的工作集(它的物理内存)移到磁盘的,但是仍旧可以调用的内存。这个计数器只显示上一次观察到的值;它不是一个平均值。 |
Cache Bytes | 是 System Cache Resident Bytes 的总数。System Driver Resident Bytes、System Code Resident Bytes、以及 Pool Paged Resident Bytes 计数器。该计数器只显示最后一次观察的值,它不是一个平均值。 | |
Memory瓶颈或溢出 | Pages/sec | 是指为解析硬页错误从磁盘读取或写入磁盘的页数。(当处理程序请求 不在本身工作集或物理内存其它地方中的代码或数据,而必须要从磁盘上检索时就会出现硬页错误)。这个计数器设计成可以显示导致系统范围延缓类型错误的主要指示器。它是 Memory: Pages Input/sec 和 Memory: Pages Output/sec 的 总和。是用页数计算的,以便在不用做转换的情况下就可以同其它页计数如: Memory: Page Faults/sec 做比较,这个值包括为满足错误而在文件系统缓存(通常由应用程 序请求)的非缓存映射内存文件中检索的页。这个计数器显示用上两个实例中观察到的值 之间的差除于实例间隔的持续时间所得的值。 |
Page Reads/sec | 是指为解析硬页错误而读取磁盘的次数。(当处理请求的硬 页错误不在工作集和物理内存其它地方中的代码或数据,而必须从磁盘上检索时 就会出现硬页错误)。这个计数器设计成可以显示导致系统范围延缓 错误的主要指示器。这个包括要满足错误而在文件系统缓存(通常由应用程 序请求)的非缓存映射内存文件终检索的页。这个计数器显示用上两个实例中 观察到的值之间的差除于实例间隔的持续时间所得的值。 | |
Transition Faults/sec | 是指由在修改页列表、备份页表或在页错误时写入 磁盘上造成的页错误数量。这些页是在没有额外磁盘活动的情况下恢复的。传输 错误是在不计算每次操作时出错的页数的情况下计算错误数量。这个计数 器显示用上两个实例中观察到的值之间的差除于实例间隔的持续时间所得的值。 | |
Pool Paged Bytes | 指在分页池中的字节数,分页池是系统内存(操作系 统使用的物理内存)中可供对象(在不处于使用时可以写入磁盘的)使 用的一个区域。Memory: Pool Paged Bytes 的计数方式与 Process: Pool Paged Bytes 的方式不同,因此可能不等于 Process: Pool Paged Bytes: _Total 。这个 计数器仅显示上一次观察的值;而不是一个平均值。 | |
Pool Nonpaged Bytes | 指在非分页池中的字节数,非分页池是指系统内存(操作系统使用的物理内存)中可供对象(指那些在不处于使用时不可以写入磁盘上 而且只要分派过就必须保留在物理内存中的对象)使用的一个区域。Memory: Pool Nonpaged Bytes 的计数方式与 Process: Pool Nonpaged Bytes 的计数方式 不同,因此可能不等于Pool Nonpaged Bytes: _Total。 这个计数器仅显示上一次观察的值;而不是一个平均值。 | |
PhysicalDisk 的使用 | %Disk Time | 指所选磁盘驱动器忙于为读或写入请求提供服务所用的时间 的百分比。 请谨慎对待 % Disk Time 计数器。因为该计数器的 _Total 实例不能精确反映多磁盘系统的利用率,因此使用 % Idle Time 计数器也非常重要。 |
% Idle Time | 汇报在实例间隔时磁盘闲置时间的百分比。 | |
Disk Reads/sec | 指在此盘上读取操作的速率。 | |
Disk Writes/sec | 指在此盘上写入操作的速率。 | |
PhysicalDisk的瓶颈 | Avg.Disk Queue Length(所有实例) | 指读取和写入请求(为所选磁盘在实例间隔中列队的)的平均数。磁盘时间计数器应保持在2.0以下,超过3.0的平均磁盘队列长度(Avg. Disk Queue Length)就意味着可能遇到了磁盘I/O瓶颈,需要进一步使用Avg. Disk Read Queue Length和Avg. Disk Write Queue Length来确定是读取还是写入出现性能瓶颈 |
System | File Data Operations/ sec | 指在计算机的所有逻辑磁盘上读取和写入操作的综合速度。这是系统的逆转率:每秒钟的文件控制操作。这个总值显示了上两个实例中观察到的值的差异除于实例间隔的时间。 |
Processor Queue Length | 是指处理列队中的线程数。即使在有多个处理器 的计算机上处理器时间也会有一个单列队。不象磁盘计数器,这个计数器仅 计数就绪的线程,而不计数运行中的线程。如果处理器列队中总是有两个以上的线程 通常表示处理器堵塞。这个计数器仅显示上一次观察的值;而不是一个平 均值。 | |
网络使用 | Network Segment/ % Net Utilization |
|
网络吞吐量 |
| 协议传输计数器(随网络协议而改变);对于 TCP/IP:Network Interface/ Bytes total/sec |