How to Enable Write Cache

HP ProLiant DL320 G5/G5p

$ time createdb -E UTF8 -T template0 xyz
real	0m46.307s
user	0m0.048s
sys	0m0.016s

遅い、 何この遅さは・・・うたた寝できそうなくらい遅い。
ちなみに、ハードウェアはHP ProLiant DL320 G5p(lspci) 。 OSは、Debian GNU/Linux 6.0(kernel 2.6.32-5-686)。
同機種の同じ構成のもので同じことやってみたけど、こんなに遅くない。
dmesgを確認してみると、ディス書込み時のキャッシュが無効になっていることが分かったので、dmesgに以下のように表示されることを目標にして色々と調べました。

【After】
 [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
【Before】
 [sda] Write cache: disabled, read cache: enabled, doesn't support DPO or FUA

ここら辺(How to Enable Drive Write Cache on SATA Hard Drives for HP ProLiant ML and DL Servers)を当たってみたんだけど、ちょっと違う。HPのサポートに問い合わせたけど、故障ではない、情報を持っていないと言われたので、やっぱり自分で何とかしようと意を決することに。
途中、「BIOS not installed!」なんてことになってフラフラになりながら解に到達。
LSI LogicのコントローラーでRAID 1構成を取っているので、LSIのオフィシャルに何か情報ないかなと探したら、「LSI UTIL」というユーティリティーが配布されていまして、このユーティリティを使ってWrite cacheを有効にできます。

# ./lsiutil
LSI Logic MPT Configuration Utility, Version 1.62, January 14, 2009
1 MPT Port found
     Port Name         Chip Vendor/Type/Rev    MPT Rev  Firmware Rev  IOC
 1.  /proc/mpt/ioc0    LSI Logic SAS1068E B3     105      01172800     0
Select a device:  [1-1 or 0 to quit] 1
 1.  Identify firmware, BIOS, and/or FCode
 2.  Download firmware (update the FLASH)
 4.  Download/erase BIOS and/or FCode (update the FLASH)
 8.  Scan for devices
10.  Change IOC settings (interrupt coalescing)
13.  Change SAS IO Unit settings
16.  Display attached devices
20.  Diagnostics
21.  RAID actions
22.  Reset bus
23.  Reset target
42.  Display operating system names for devices
43.  Diagnostic Buffer actions
45.  Concatenate SAS firmware and NVDATA files
59.  Dump PCI config space
60.  Show non-default settings
61.  Restore default settings
66.  Show SAS discovery errors
69.  Show board manufacturing information
97.  Reset SAS link, HARD RESET
98.  Reset SAS link
99.  Reset port
 e   Enable expert mode in menus
 p   Enable paged mode
 w   Enable logging
Main menu, select an option:  [1-99 or e/p/w or 0 to quit] 21
 1.  Show volumes
 2.  Show physical disks
 3.  Get volume state
 4.  Wait for volume resync to complete
23.  Replace physical disk
26.  Disable drive firmware update mode
27.  Enable drive firmware update mode
30.  Create volume
31.  Delete volume
32.  Change volume settings
33.  Change volume name
50.  Create hot spare
51.  Delete hot spare
99.  Reset port
 e   Enable expert mode in menus
 p   Enable paged mode
 w   Enable logging
RAID actions menu, select an option:  [1-99 or e/p/w or 0 to quit] 32
Volume 0 is Bus 0 Target 1, Type IM (Integrated Mirroring)
Volume 0 Settings:  write caching disabled, auto configure
Volume 0 draws from Hot Spare Pools:  0
Enable write caching:  [Yes or No, default is No] Yes
Offline on SMART data:  [Yes or No, default is No] return
Auto configuration:  [Yes or No, default is Yes] return
Priority resync:  [Yes or No, default is No] return
Hot Spare Pools (bitmask of pool numbers):  [00 to FF, default is 01] return
RAID ACTION returned IOCLogInfo = 00010005
RAID actions menu, select an option:  [1-99 or e/p/w or 0 to quit] 0
Main menu, select an option:  [1-99 or e/p/w or 0 to quit] 0
     Port Name         Chip Vendor/Type/Rev    MPT Rev  Firmware Rev  IOC
 1.  /proc/mpt/ioc0    LSI Logic SAS1068E B3     105      01172800     0
Select a device:  [1-1 or 0 to quit] 0

 
OS再起動後にもう一度、PostgreSQLでcreatedbした結果。

$ time createdb -E UTF8 -T template0 xyz
real	0m0.651s
user	0m0.052s
sys	0m0.008s

まずまずの結果が出ました。
 

関連記事一覧

  1. この記事へのコメントはありません。