Posts Tagged: 性能


22
八 11

Dell服务器RAID卡的简单调整

Dell的服务器因为性价比高,是中小企业构建IT设施采用的主流品牌。

下面简单说一下Dell服务器的RAID卡的性能调整。个人在这方面的经验并不十分丰富,有可能理解有误。

问题的焦点,是因为RAID卡的缓存模块的(BBU)电池,具体的原理,这里并不深研,有兴趣的同学,可跟据下面提供的URL自行研究。这块电池是可充电池,我的理解是这样的:这块电池的作用,是用来“保护数据”的,即当服务器突然掉电时,RAID卡的电池储存的电能足以驱动RAID卡和磁盘,某些固化在RAID卡中的程序会将RAID卡“缓存”(注意这里提到的缓存)的数据,写到磁盘上,从而降低、减少数据丢失的风险。

可能是可充电池的特性,这块可充电电池,在不使用时,也会有微弱的放电现象,当它的电量放电到低到一定程度时,RAID卡程序,会对电池进行一次“放电”,将剩余的电量放掉,然后再进行一次“充电”。

这其实是一种对“电池”保护机制,以及对RAID设施可用性提供保障的机制。

问题就出在这个放电、充电的过程。

默认情况下,当RAID卡的电池的电量低于某阈值时,RAID卡固化程序认为此时的电池是不可用的,为了保证数据的安全,会禁用RAID的“缓存”,这种默认的机制本来是合情合理的,没有什么可“质疑”的。问题是,当RAID的缓存被禁用之后,RAID的I/O能力会有所下降(这简直是一定的)。对于高I/O的应用来说,这种下降,有可能是致命的,可能会导致系统I/O阻塞,构架不良的系统,有可能会被这个“故障点”(正在充放电的设备上的应用)拖死。

有两种方法解决这个问题:

1. 检查电池的状态,对电池的充放电进行撑握,也可有计划地安排手动充放电。

此时I/O性能依然是会下降的,可以安排在系统负载低的时候进行手动充放电,从而避免充放电在未知的时间里自动进行充放电,影响业务。

2. 为了保障性能,粗暴地改变RAID卡策略,使在充放电时,不禁用RAID卡缓存。

些时I/O的性能不会下降,但是,假如在此时服务器掉电,RAID卡缓存中的数据会来不及写进磁盘,从而造成数据的丢失。

使用1比较稳妥,但是比较耗时、耗力。使用2比较简单,对于不是非常重要的数据、某者还有别的冗余方案的应用,可以使用。

Dell的服务器,大多使用的都是LSI的MegaRAID卡,查看系统使用的什么RAID卡,可以使用lspci命令,这个假如包含在pciutils包中。

常见的MegaRAID卡:

  • 02:0e.0 RAID bus controller [0104]: Dell PowerEdge Expandable RAID controller 4 [1028:0013] (rev 06)
  • 04:03.0 RAID bus controller [0104]: Dell PowerEdge Expandable RAID controller 4/Di [1028:000f] (rev 02)
  • 02:04.0 RAID bus controller [0104]: American Megatrends Inc. MegaRAID [101e:1960] (rev 02)
  • 02:03.0 RAID bus controller [0104]: LSI Logic / Symbios Logic MegaRAID [1000:1960] (rev 01)

也可以通过lsmod | grep megaraid 来检查系统使用的是不是MegaRAID卡。

MegaRAID卡,可以通过官方提供的工具MegaCli来进行控制,对缓存的控制策略调整就用这个工具来进行操作。

MegaCli的当前版本可从这里下载

假如你使用的是RHEL或者CentOS,可使用我的repo安装,步聚如下:

1) wget -P /etc/yum.repo.d http://www.bsdmap.com/bsdmap.repo

2) yum install megacli

默认安装在/opt/MegaRAID/MegaCli/目录下,32位系统为MegaCli,64位系统为MegaCli64,以64位系统为例:

1. 查看当前“策略”
/opt/MegaRAID/MegaCli/MegaCli64 -ldinfo -lall -a0

Adapter 0 — Virtual Drive Information:
Virtual Disk: 0 (Target Id: 0)
Name:Virtual Disk 0
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0
Size:953344MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:1
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk’s Default
Virtual Disk: 1 (Target Id: 1)
Name:
RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3
Size:3813376MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:5
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, No Write Cache if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk’s Default

Exit Code: 0×00

2. 调整

/opt/MegaRAID/MegaCli/MegaCli64 -LDSetProp CachedBadBBU -lall -a0

再查看
/opt/MegaRAID/MegaCli/MegaCli64 -ldinfo -lall -a0

Adapter 0 — Virtual Drive Information:
Virtual Disk: 0 (Target Id: 0)
Name:Virtual Disk 0
RAID Level: Primary-0, Secondary-0, RAID Level Qualifier-0
Size:953344MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:1
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, Write Cache OK if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk’s Default
Virtual Disk: 1 (Target Id: 1)
Name:
RAID Level: Primary-5, Secondary-0, RAID Level Qualifier-3
Size:3813376MB
State: Optimal
Stripe Size: 64kB
Number Of Drives:5
Span Depth:1
Default Cache Policy: WriteBack, ReadAheadNone, Direct, Write Cache OK if Bad BBU
Current Cache Policy: WriteBack, ReadAheadNone, Direct, Write Cache OK if Bad BBU
Access Policy: Read/Write
Disk Cache Policy: Disk’s Default

Exit Code: 0×00

 

embedded_mr_sw_ug.pdf

http://linux.dell.com/repo/hardware/

http://tools.rapidsoft.de/perc/

http://linux.dell.com/

http://linux.dell.com/wiki/index.php/Repository/firmware

 

http://hwraid.le-vert.net/wiki/LSIMegaRAID

http://hwraid.le-vert.net/wiki/LSIMegaRAIDSAS

 


24
二 10

使用expires模块降低apache负载

使用expires模块声明静态文件过期时间-减少客户端不必要的请求

<Location />
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/* “access plus 1 month”
ExpiresByType text/css “access plus 1 month”
ExpiresByType text/javascript   “access plus 1 month”
ExpiresByType application/x-javascript “access plus 1 month”
</IfModule>
</Location>
另一种方式:
<FilesMatch “\.(css|js|jpg|gif|png)$”>
<IfModule mod_expires.c>
ExpiresActive  On
ExpiresDefault A2592000
</IfModule>
</FilesMatch>

12
九 09

计算机资源-时间与空间关系

原作者:曹刚

计算机由cpu、内存、硬盘三个重要硬件构成,cpu是计算资源,属于时间资源,内存和外部存储(硬盘等)属于空间资源。在计算机中,我们知道速度最快的是cpu,cpu由控制单元、运算单元、时钟组成。cpu寄存器阵列实际上相当于处理器内部存储器,寄存器容量非常小,仅用于临时存储计算数据所用,它的存储速度最快。
我们大家知道,cpu速度相对磁盘来说,相差非常大,因此cpu是不能直接从硬盘读取数据的,必须先把数据从磁盘读取到内存之后,cpu才能对内存中的数据进行操作,内存的速度比磁盘快很多,但是要比cpu慢。我们可以看见,速度从慢到快的顺序来排列为:磁盘-内存-cpu。
从目前的情况来看,每隔一段时间,cpu的运算速度便会大幅度提升,但是内存和磁盘(特别是磁盘)的速度一直没有多大提升。因此在我们的系统中,经常发现的系统瓶颈出现在磁盘上。如果磁盘、内存速度和cpu速度一样快,那么我们工作中很多问题就很简单了,但是事实却是相反,因此我们有必要深入了解时间与空间的关系,在这个基础上进行架构设计、软件设计以及维护,能够起到事半功倍的效果。