这里有多个问题 – 但是从这个开始:我们有一个带有RAID10configuration的PERC 6 / i RAID控制器(或控制器)的戴尔PowerEdge R710。
系统正在运行Ubuntu Server 10.04 LTS,MySQL执行读取密集型工作负载。
我使用blockdev --setra ### /dev/sda增加了readahead blockdev --setra ### /dev/sda来增加readahead(读取至less在理论上是顺序读取)。 这似乎没有产生重大影响。 我没有改变磁盘电梯(我已经看到了推荐和deadline推荐)。
系统上的负载突然升起,似乎与磁盘I / O等待有关。 系统可以等待磁盘I / O的50%时间 – 而CPU%大约为7-10%。 与RAID5和写密集型MySQL安装相当的系统完全吸引了这个系统。
根据Dell OpenManage的报告,RAID10系统似乎有两个PERC 6 / i控制器; 然而,只有控制器0有一个机箱,只有控制器0有RAID。 RAID由四个磁盘组成(插槽0-3,我相信)有两个空闲插槽。
系统还运行在PowerSavingconfiguration文件中,该configuration文件可让操作系统pipe理CPU速度。
该系统也受到一些Linux内核中发现的fsync()错误的困扰。
最后,PERC 6 / i报告固件已过期:它具有6.2.0-0013并且希望6.3.0-0001。
现在的问题是:
我强烈怀疑有一些configuration会将磁盘变成可怕的高速度,但我似乎无法把它压低。
更新 :这里使用的四个磁盘是日立HDS721010CLA332型号,它被列为具有SATA“总线协议”,但也有“SAS地址”? 这些磁盘是那些我听说过的SAS模拟驱动器应该是相当慢的? 无论如何,这些显然是7200 RPM驱动器。
比较系统中有SAS驱动器:希捷ST31000640SS – 也是7200 RPM。 这个比较系统也使用了两个RAID控制器,并且与它们相关联的“背板”条目。
PERC 6 / i是双端口控制器; 每个端口有4个SAS通道。 在R710的8×2.5机箱中,这是前面板磁盘到SAS通道的一对一映射。 在3.5英寸机箱上,端口6和7未使用。 对于4磁盘arrays,可以将2个磁盘移动到插槽4和5,以便在通道之间分配工作负载,尽pipePERC卡上仍有单个处理器和内存。
更新固件通常是一个好主意,而且是一个相当轻松的过程(尽pipe它需要重启)。
4磁盘RAID 10为您提供2个写入磁盘和4个读取磁盘的性能(绝对最佳情况)。 一个7200转的硬盘驱动器应该提供75-100 IOps。 你看到什么样的performance? 你读iostat接近100的%util吗?
如果主要负载是由数据库产生的,那么你认为这主要是顺序的? 数据库是定型随机访问的情况。 您可以使用iostat查看平均请求大小。 collectl还会给你提供关于在内核中完成的I / O合并的信息。 它是否符合你主要连续读取的期望?
你的意思是什么fsync()内核错误?
你使用什么文件系统? 什么挂载选项? noatime选项可以在ext [34]上购买你明显的速度,因为访问时间的修改可能意味着每次读取文件(最糟糕的情况下,高分辨率时间戳)的额外写入。
答案部分;)
固件更新可能有帮助,但不要期待奇迹。 你可能会获得几个百分点,而不是
RAID 10是性能最好的级别(如果你想保持冗余),所以它本身不应该引起问题。 但是,您可能有分区和/或LV不与条带大小alignment。 这可能会导致小型随机读取(最坏的情况)所需的IO增加两倍,并且会对任何types的I / O施加开销。
省电模式不应该花费太多。 从你告诉我们的磁盘太忙而不能被closures,并且CPU无论如何都在等待I / O。
小心使用显示平均CPU负载的工具。 这个数字当然是一个很好的起点,看看一个球场的负载,但是如果你看到24个CPU系统的负载是50%,你怎么知道12个cpus没有被100%利用,另外12个空闲呢? 我已经看到负载小于10%的情况,但是在100%处理中断的情况下,1个CPU正在被攻击。 -标记
我们的一台服务器有RAID控制器和固件版本; 显然,最新版本的固件修复了写caching电池没有正确充电的错误。 由于电池没有被充电,控制器切换到直写模式保护您的数据,显着影响您的performance。
更新固件,并给它几个小时的电池充电。 那么你会正常运行。