De situatie:
HP Proliant ML570
Processor: 4x XEON 3.0 Ghz
Geheugen: 4GB
OS: Red Hat Enterprise 3
Kernel: 2.4.21
Raidcontroller: Compaq Smart Array 64xx
Aan de RAID-controller hangen in totaal 12 schijven, 6 per kanaal. Er zijn in totaal 5 raid-arrays geconfigureerd:
1: raid 1, over 2 schijven van 36GB die elk op een apart kanaal hangen. Deze is weer onderverdeeld in verschillende partities waaronder /boot, /usr, /opt, /tmp, / en var. Tevens is er een swap partitie en een partitie die gebruikt wordt voor een later te noemen software raid.
2: raid 1, over 2 schijven van 72 GB die elk op een apart kanaal hangen. Deze is onderverdeeld in 3 partities, voor /home, een swap partitie en een partitie voor de later te noemen software raid.
3: raid 1+0, over 4 schijven van 36GB, 2 schijven per kanaal. Onderverdeeld in 3 partities, voor /db, een swap partitie en wederom een partitie voor de software raid.
4: raid 1, over 2 schijven van 36GB, elk op een apart kanaal. Onderverdeeld in 4 partities. Hier geen swap partitie en geen partitie voor software raid.
5: raid 1, over 2 schijven van 36GB, elk op een apart kanaal. Onderverdeeld in 6 partities, waaronder weer een swap partitie en een partitie voor software raid.
En dan nog de eerder genoemde software raid, dit is een raid 0 over de eerder genoemde partities.
Het probleem:
Wanneer er veel lees-activiteiten zijn dan schiet de IO-wait torenhoog de lucht in. Vooral op de 3e raid-array (de raid 1+0) vindt erg veel leesactiviteit plaats. Het iostat commando geeft voor deze partitie ook erg grote getallen aan:
Regelmatig (en in de toekomst nog steeds meer) vindt er meer lees-activiteit plaats dan normaal. Het is dus belangrijk dat de performance wordt verbeterd.
Wat me verder opvalt met het iostat commando, is dat de swap partities op de arrays 1, 2 en 5 vrijwel niet gebruikt worden. De swap partitie op array 3 (natuurlijk weer de drukste array..) wel:
Wat nu..?
Wat zou ik kunnen doen om de performance te verbeteren? Zou de software raid een oorzaak kunnen zijn? Is de raid configuratie uberhaupt wel slim aangepakt? Wellicht zou de drukste array een eigen controller moeten krijgen? Tijdens mijn zoektocht kwam ik op linuxquestions.org nog tegen dat er problemen zouden zijn bij Red Hat Enterprise 3 in combinatie met XEON processoren, maar heb er verder niet echt wat over kunnen vinden. Zijn er mensen die hier ervaringen mee hebben?
Ter aanvullende informatie nog wat output van /proc/scsi/aic7xxx/0, Target 3 valt me hierbij op.. is hier iets raars mee aan de hand?
/proc/scsi/aic7xxx/1, hier ziet target 3 er wel gewoon zo uit als de rest
HP Proliant ML570
Processor: 4x XEON 3.0 Ghz
Geheugen: 4GB
OS: Red Hat Enterprise 3
Kernel: 2.4.21
Raidcontroller: Compaq Smart Array 64xx
Aan de RAID-controller hangen in totaal 12 schijven, 6 per kanaal. Er zijn in totaal 5 raid-arrays geconfigureerd:
1: raid 1, over 2 schijven van 36GB die elk op een apart kanaal hangen. Deze is weer onderverdeeld in verschillende partities waaronder /boot, /usr, /opt, /tmp, / en var. Tevens is er een swap partitie en een partitie die gebruikt wordt voor een later te noemen software raid.
2: raid 1, over 2 schijven van 72 GB die elk op een apart kanaal hangen. Deze is onderverdeeld in 3 partities, voor /home, een swap partitie en een partitie voor de later te noemen software raid.
3: raid 1+0, over 4 schijven van 36GB, 2 schijven per kanaal. Onderverdeeld in 3 partities, voor /db, een swap partitie en wederom een partitie voor de software raid.
4: raid 1, over 2 schijven van 36GB, elk op een apart kanaal. Onderverdeeld in 4 partities. Hier geen swap partitie en geen partitie voor software raid.
5: raid 1, over 2 schijven van 36GB, elk op een apart kanaal. Onderverdeeld in 6 partities, waaronder weer een swap partitie en een partitie voor software raid.
En dan nog de eerder genoemde software raid, dit is een raid 0 over de eerder genoemde partities.
Het probleem:
Wanneer er veel lees-activiteiten zijn dan schiet de IO-wait torenhoog de lucht in. Vooral op de 3e raid-array (de raid 1+0) vindt erg veel leesactiviteit plaats. Het iostat commando geeft voor deze partitie ook erg grote getallen aan:
code:
1
2
| Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d2p3 224.52 14348993180298.83 150.88 18446744071655006876 193970362 |
Regelmatig (en in de toekomst nog steeds meer) vindt er meer lees-activiteit plaats dan normaal. Het is dus belangrijk dat de performance wordt verbeterd.
Wat me verder opvalt met het iostat commando, is dat de swap partities op de arrays 1, 2 en 5 vrijwel niet gebruikt worden. De swap partitie op array 3 (natuurlijk weer de drukste array..) wel:
code:
1
2
| Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn cciss/c0d2p2 3.36 12.15 15.40 15625968 19803552 |
Wat nu..?
Wat zou ik kunnen doen om de performance te verbeteren? Zou de software raid een oorzaak kunnen zijn? Is de raid configuratie uberhaupt wel slim aangepakt? Wellicht zou de drukste array een eigen controller moeten krijgen? Tijdens mijn zoektocht kwam ik op linuxquestions.org nog tegen dat er problemen zouden zijn bij Red Hat Enterprise 3 in combinatie met XEON processoren, maar heb er verder niet echt wat over kunnen vinden. Zijn er mensen die hier ervaringen mee hebben?
Ter aanvullende informatie nog wat output van /proc/scsi/aic7xxx/0, Target 3 valt me hierbij op.. is hier iets raars mee aan de hand?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
| Adaptec AIC7xxx driver version: 6.2.36
Adaptec (Compaq OEM) 3960D Ultra160 SCSI adapter
aic7899: Ultra160 Wide Channel A, SCSI Id=7, 32/253 SCBs
Allocated SCBs: 6, SG List Length: 85
Serial EEPROM:
0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a
0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a
0x08f4 0x605d 0x2807 0x0010 0x0301 0xffff 0xffff 0xffff
0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0x0250 0x4a50
Target 0 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 1 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 2 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 3 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Goal: 40.000MB/s transfers (20.000MHz, offset 32, 16bit)
Curr: 40.000MB/s transfers (20.000MHz, offset 32, 16bit)
Channel A Target 3 Lun 0 Settings
Commands Queued 11289875
Commands Active 0
Command Openings 1
Max Tagged Openings 0
Device Queue Frozen Count 0
Target 4 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 5 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 6 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 7 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 8 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 9 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 10 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 11 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 12 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 13 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 14 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 15 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit) |
/proc/scsi/aic7xxx/1, hier ziet target 3 er wel gewoon zo uit als de rest
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
| Adaptec AIC7xxx driver version: 6.2.36
Adaptec (Compaq OEM) 3960D Ultra160 SCSI adapter
aic7899: Ultra160 Wide Channel B, SCSI Id=7, 32/253 SCBs
Allocated SCBs: 6, SG List Length: 85
Serial EEPROM:
0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a
0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a 0xcb3a
0x08f4 0x605d 0x2807 0x0010 0x0301 0xffff 0xffff 0xffff
0xffff 0xffff 0xffff 0xffff 0xffff 0xffff 0x0250 0x4a50
Target 0 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 1 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 2 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 3 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 4 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 5 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 6 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 7 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 8 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 9 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 10 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 11 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 12 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 13 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 14 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit)
Target 15 Negotiation Settings
User: 160.000MB/s transfers (80.000MHz DT, offset 127, 16bit) |