四、确定IO等待时间
 
    查看操作系统的性能是确定IO等待时间最好的方式。用来评估操作系统性能的工具因操作系统而异。下面给出了一些可用的工具。
 
Windows NT/2000/2003/XP
 
对于Windows操作系统的系统性能分析的最佳工具是性能监视器。不幸的是,性能监视器不会提供实际的IO等待时间的统计数字,但它包括处理器的实时性能水平。 处理器:%处理器时间计量由处理器完成的实际工作。如果一个系统受到了大量交易数据的沉重打击,但%处理器时间远在100%之下,很有可能是受制于服务器的IO等待时间。装有固态盘的系统通常具有较高的%处理器时间的数字。
作为例子,下面两个Windows性能监视器屏幕截图供参考。
3: 处理器的硬盘写性能
 利用固态盘阵列提升数据库性能(二)
3显示了一个安装了IOMeter Server 2000系统执行100%的随机写入硬盘驱动器的处理器:%处理器时间性能。在这里可以看到,处理器的利用率平均约1.8%。不过,如果你在这个系统上打算尝试运行其他应用程序,处理器的利用率将仅略有增加,因为该处理器在等待硬盘驱动器的IO响应。这个例子的IOMeter显示平均每秒有150次磁盘驱动器写入(150 IOPS)。
 
4: 处理器的RamSan SSD写性能
利用固态盘阵列提升数据库性能(二)
 
4显示了在完全相同的系统和IOMeter数据访问情况下与TMS RamSan系统的比较。在这个例子中,处理器的平均利用率为68%。IOMeter显示每秒37,000写入RamSan37,000 IOPS)。SSD使CPU的使用率增加了3677%,并让服务器与光纤通道主机适配器性能达到饱和。且由于RamSan性能比最好的RAID还高,只发挥了RamSan能力的一小部分,如果挂接几个类似的服务器也能获得类似的性能结果。
在关注处理器性能指标的同时,TMS建议查看一下物理硬盘的“平价硬盘队列长度”和每秒硬盘字节数,以确定硬盘子系统的瓶颈。如果这些值一直很高,可以考虑将文件迁移到固态盘上。磁盘队列长度大于3表明存在问题。
  
UNIX
 
UNIX操作系统,下列命令很有用:topiostatsar。不同的命令会有不同的输出。
Solaris系统上执行Top命令时,会有如下格式的结果:
 
利用固态盘阵列提升数据库性能(二)

关键是这个命令提供了iowait”信息。特别要注意的是,top提供了性能快照。
也可以看看vmstat命令。它会告诉你你的系统是如何频繁分页到虚拟内存(磁盘)上的。如果分页频繁,可以考虑添加系统内存或使用固态盘分页。另一种方式是分页到磁盘,那样硬盘驱动器会引入系统性能瓶颈。
 
Oracle
 
8.1.7.2版本开始每一个版本的Oracle都带有Statspack工具用于数据库性能监测。在版本10g中,Oracle为了因应日益增加的复杂性和管理与优化大型数据库的高额成本,引入了自动负载信息库AWR Automatic Workload Repository与自动数据库诊断监控器ADDM Automatic Database Diagnostic Monitor。虽然AWR / ADDM是对Statspack一个大的提升,但即使是最好的数据库调优也无法修复缓慢的磁盘子系统。在繁忙时段的Statspack报告或AWR报告应,可以提供IO相关的统计数字,以帮助确定哪些文件可受益于迁移到固态盘上。
 
Oracle使用1-10个数据库或脏缓冲区写进程将更改的数据和rollback/undo数据写入磁盘,同时日志写进程将redo日志数据、归档日志进程将归档日志数据写入第二个存储位置。然而,Oracle的每个用户进程都从磁盘进行自己的读取,在大型Oracle系统中,这意味着成百上千的并发磁盘读请求。系统管理员对这种对存储系统的大量并发读访问需求通常了解不足,从而不恰当地配置磁盘RAID系统,以致发生争议。
 
关于OracleIO问题,最新版本增加了对存储的要求。过去的Oracle包括一个数据库、一些redo日志、归档日志和备份。现在,随着Oracle flashback功能的出现,它可以极大地提高数据库的DBA或开发人员应对变化的能力,数据被存储在多个地方。从rollback段更改为新的redo表空间很有好处,但在生产系统中有时也有超过800GBredo表空间,这时快速的IO能力对获得良好的系统性能是至关重要的。
 
如同本文的开头提到的那样,改善系统性能的方法之一是增加更多的系统。Oracle新的集群数据库RAC是添加更多系统的其中一个方法,以满足这些庞大的数据库系统的一些要求。这个架构关键的一点是,这些单个电脑都可以增加更多的计算机能力,但它们却都使用相同的共享磁盘系统。
如果数据库受到IO的限制,5个时间事件是首要查看的地方。图5显示了Statspack报告前5名事件的一个示例。
5: Oracle Statspack报告示例
 
 
利用固态盘阵列提升数据库性能(二)
5个时间事件Statspack报告涵盖的一段时间内提供一个数据库活动快照。如果这些顶尖的事件表明,该数据库的大部分时间都花在处理磁盘IO上,那么固态盘可以提供一个巨大的性能改进。下图6提供了表明固态盘应当纳入考虑范围的通常事件以及可以受益于固态盘的数据库组件的部分列表。
6: Statspack事件
 

 利用固态盘阵列提升数据库性能(二)

利用固态盘阵列提升数据库性能(二)