Sollte das RAID nicht schneller sein?

Hi,

ich habe zwei 4-Port 3ware RAID Controller an denen 8 HDDs angeschlossen sind. Die RAID Controller fassen immer je 2 HDDs zu einem RAID 1 zusammen. Ich habe also 4 RAID 1 Volumes. Unter Debian macht mdadm daraus dann ein RAID 0, sodass es quasi ein RAID 10 wird. Die verbauten Festplatten sind Seagate Baracudas (ST31500341AS) und
Wester Digital (Western Digital Caviar Black HD WD 1,5TB intern Festplatte (8,9cm (3,5 Zoll), 7200rpm, 4,2ms, 64MB Cache, SATA). Laut der Specs müssten alle Platten ca 130 MB/s liefern. Leider messe ich gerade mal etwas mehr für das gesamte RAID 10:

Code:
mathias@labstorage:~$ sudo dd if=/dev/zero of=/dev/raid10/test1 bs=1MB
dd: writing `/dev/raid10/test1': No space left on device
107375+0 records in
107374+0 records out
107374182400 bytes (107 GB) copied, 600.73 s, 179 MB/s
mathias@labstorage:~$

Den RAIDs geht es gut und es sind auch gerade keine verification oder sonstige Tasks am laufen:

Code:
mathias@labstorage:~$ sudo tw_cli /c0 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-1    OK             -       -       -       1396.97   RiW    OFF    
u1    RAID-1    OK             -       -       -       1396.97   RiW    OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.36 TB     2930277168    9VS3KLMA            
p1     OK               u0     1.36 TB     2930277168    9VS3WE5B            
p2     OK               u1     1.36 TB     2930277168    9VS21E4F            
p3     OK               u1     1.36 TB     2930277168    9VS3KLQS            

Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
---------------------------------------------------------------------------
bbu   On           Yes       OK        OK       OK       255    28-Jan-2012  

mathias@labstorage:~$ sudo tw_cli /c5 show

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-1    OK             -       -       -       1396.97   RiW    OFF    
u1    RAID-1    OK             -       -       -       1396.97   RiW    OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.36 TB     2930277168    WD-WMAY02080918     
p1     OK               u0     1.36 TB     2930277168    9VS3KLZB            
p2     OK               u1     1.36 TB     2930277168    9VS3KACP            
p3     OK               u1     1.36 TB     2930277168    9VS40T2R            

Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
---------------------------------------------------------------------------
bbu   On           Yes       OK        OK       OK       255    28-Jan-2012  

mathias@labstorage:~$ cat /proc/mdstat 
Personalities : [raid0] 
md0 : active raid0 sde[3] sdd[2] sdc[1] sdb[0]
      5859328000 blocks super 1.2 512k chunks
      
unused devices: <none>
mathias@labstorage:~$

Ist doch nicht normal die Geschwindigkeit oder?

ciao
serow
 
Wie sind denn die Controller angebunden und welche CPU hast du drin?
 
Hi,

hier die Infos:

Code:
mathias@labstorage:~$ lspci
...
01:00.0 RAID bus controller: 3ware Inc 9650SE SATA-II RAID PCIe (rev 01)
02:00.0 RAID bus controller: 3ware Inc 9650SE SATA-II RAID PCIe (rev 01)
...
mathias@labstorage:~$

Code:
mathias@labstorage:~$ cat /proc/cpuinfo
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 15
model name      : Intel(R) Xeon(R) CPU            3050  @ 2.13GHz
stepping        : 2
cpu MHz         : 2133.877
cache size      : 2048 KB
physical id     : 0
siblings        : 2
core id         : 0
cpu cores       : 2
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 10
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow
bogomips        : 4267.75
clflush size    : 64
cache_alignment : 64
address sizes   : 36 bits physical, 48 bits virtual
power management:

...

Grüße
serow
 
PCIe, potenter Prozessor. Also liegts schonmal nicht an der Verarbeitungsleistung oder der verfügbaren Bandbreite.
Sind die Controller auch im AHCI-Modus?
 
Hi,

ich nehme an das finde ich nur in den Settings des Controllers selbst raus oder? Etwas blöd, weil ich bis Freitag nur remote (SSH) auf das System zugreifen kann. Was ich noch anbieten kann ist folgender Output:

Code:
mathias@labstorage:~$ sudo tw_cli /c0 show all
/c0 Driver Version = 2.26.02.012
/c0 Model = 9650SE-4LPML
/c0 Available Memory = 224MB
/c0 Firmware Version = FE9X 4.08.00.006
/c0 Bios Version = BE9X 4.08.00.001
/c0 Boot Loader Version = BL9X 3.08.00.001
/c0 Serial Number = L326010A9310542
/c0 PCB Version = Rev 035
/c0 PCHIP Version = 2.00
/c0 ACHIP Version = 1.90
/c0 Number of Ports = 4
/c0 Number of Drives = 4
/c0 Number of Units = 2
/c0 Total Optimal Units = 2
/c0 Not Optimal Units = 0 
/c0 JBOD Export Policy = off
/c0 Disk Spinup Policy = 1
/c0 Spinup Stagger Time Policy (sec) = 1
/c0 Auto-Carving Policy = off
/c0 Auto-Carving Size = 2048 GB
/c0 Auto-Rebuild Policy = on
/c0 Rebuild Mode = Adaptive
/c0 Rebuild Rate = 5
/c0 Verify Mode = Adaptive
/c0 Verify Rate = 5
/c0 Controller Bus Type = PCIe
/c0 Controller Bus Width = 4 lanes
/c0 Controller Bus Speed = 2.5 Gbps/lane

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-1    OK             -       -       -       1396.97   RiW    OFF    
u1    RAID-1    OK             -       -       -       1396.97   RiW    OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.36 TB     2930277168    9VS3KLMA            
p1     OK               u0     1.36 TB     2930277168    9VS3WE5B            
p2     OK               u1     1.36 TB     2930277168    9VS21E4F            
p3     OK               u1     1.36 TB     2930277168    9VS3KLQS            

Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
---------------------------------------------------------------------------
bbu   On           Yes       OK        OK       OK       255    28-Jan-2012  

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c0/u0 show all
/c0/u0 status = OK
/c0/u0 is not rebuilding, its current state is OK
/c0/u0 is not verifying, its current state is OK
/c0/u0 is initialized.
/c0/u0 Write Cache = on
/c0/u0 Read Cache = Intelligent
/c0/u0 volume(s) = 1
/c0/u0 name = mirror3              
/c0/u0 serial number = 9VS3KLMA00004B006ECF 
/c0/u0 Ignore ECC policy = off       
/c0/u0 Auto Verify Policy = off       
/c0/u0 Storsave Policy = performance 
/c0/u0 Command Queuing Policy = on        
/c0/u0 Rapid RAID Recovery setting = all

Unit     UnitType  Status         %RCmpl  %V/I/M  Port  Stripe  Size(GB)
------------------------------------------------------------------------
u0       RAID-1    OK             -       -       -     -       1396.97   
u0-0     DISK      OK             -       -       p0    -       1396.97   
u0-1     DISK      OK             -       -       p1    -       1396.97   
u0/v0    Volume    -              -       -       -     -       1396.97   

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c0/u1 show all
/c0/u1 status = OK
/c0/u1 is not rebuilding, its current state is OK
/c0/u1 is not verifying, its current state is OK
/c0/u1 is initialized.
/c0/u1 Write Cache = on
/c0/u1 Read Cache = Intelligent
/c0/u1 volume(s) = 1
/c0/u1 name = mirror4              
/c0/u1 serial number = 9VS21E4F00004B002D9D 
/c0/u1 Ignore ECC policy = off       
/c0/u1 Auto Verify Policy = off       
/c0/u1 Storsave Policy = performance 
/c0/u1 Command Queuing Policy = on        
/c0/u1 Rapid RAID Recovery setting = all

Unit     UnitType  Status         %RCmpl  %V/I/M  Port  Stripe  Size(GB)
------------------------------------------------------------------------
u1       RAID-1    OK             -       -       -     -       1396.97   
u1-0     DISK      OK             -       -       p2    -       1396.97   
u1-1     DISK      OK             -       -       p3    -       1396.97   
u1/v0    Volume    -              -       -       -     -       1396.97   

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c0 show phy 

                             Device              --- Link Speed (Gbps) ---
Phy     SAS Addesss          Type     Device     Supported  Enabled  Control
-----------------------------------------------------------------------------
phy0    -                    SATA     /c0/p0     1.5-3.0    3.0      Auto   
phy1    -                    SATA     /c0/p1     1.5-3.0    3.0      Auto   
phy2    -                    SATA     /c0/p2     1.5-3.0    3.0      Auto   
phy3    -                    SATA     /c0/p3     1.5-3.0    3.0      Auto   

mathias@labstorage:~$


Code:
mathias@labstorage:~$ sudo tw_cli /c5 show all
/c5 Driver Version = 2.26.02.012
/c5 Model = 9650SE-4LPML
/c5 Available Memory = 224MB
/c5 Firmware Version = FE9X 4.08.00.006
/c5 Bios Version = BE9X 4.08.00.001
/c5 Boot Loader Version = BL9X 3.08.00.001
/c5 Serial Number = L326010A9512944
/c5 PCB Version = Rev 035
/c5 PCHIP Version = 2.00
/c5 ACHIP Version = 1.90
/c5 Number of Ports = 4
/c5 Number of Drives = 4
/c5 Number of Units = 2
/c5 Total Optimal Units = 2
/c5 Not Optimal Units = 0 
/c5 JBOD Export Policy = off
/c5 Disk Spinup Policy = 1
/c5 Spinup Stagger Time Policy (sec) = 1
/c5 Auto-Carving Policy = on
/c5 Auto-Carving Size = 2048 GB
/c5 Auto-Rebuild Policy = on
/c5 Rebuild Mode = Adaptive
/c5 Rebuild Rate = 5
/c5 Verify Mode = Adaptive
/c5 Verify Rate = 5
/c5 Controller Bus Type = PCIe
/c5 Controller Bus Width = 4 lanes
/c5 Controller Bus Speed = 2.5 Gbps/lane

Unit  UnitType  Status         %RCmpl  %V/I/M  Stripe  Size(GB)  Cache  AVrfy
------------------------------------------------------------------------------
u0    RAID-1    OK             -       -       -       1396.97   RiW    OFF    
u1    RAID-1    OK             -       -       -       1396.97   RiW    OFF    

Port   Status           Unit   Size        Blocks        Serial
---------------------------------------------------------------
p0     OK               u0     1.36 TB     2930277168    WD-WMAY02080918     
p1     OK               u0     1.36 TB     2930277168    9VS3KLZB            
p2     OK               u1     1.36 TB     2930277168    9VS3KACP            
p3     OK               u1     1.36 TB     2930277168    9VS40T2R            

Name  OnlineState  BBUReady  Status    Volt     Temp     Hours  LastCapTest
---------------------------------------------------------------------------
bbu   On           Yes       OK        OK       OK       255    28-Jan-2012  

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c5/u0 show all
/c5/u0 status = OK
/c5/u0 is not rebuilding, its current state is OK
/c5/u0 is not verifying, its current state is OK
/c5/u0 is initialized.
/c5/u0 Write Cache = on
/c5/u0 Read Cache = Intelligent
/c5/u0 volume(s) = 1
/c5/u0 name = mirror1              
/c5/u0 serial number = 9VS3KM81BA823600C647 
/c5/u0 Ignore ECC policy = off       
/c5/u0 Auto Verify Policy = off       
/c5/u0 Storsave Policy = performance 
/c5/u0 Command Queuing Policy = on        
/c5/u0 Rapid RAID Recovery setting = all

Unit     UnitType  Status         %RCmpl  %V/I/M  Port  Stripe  Size(GB)
------------------------------------------------------------------------
u0       RAID-1    OK             -       -       -     -       1396.97   
u0-0     DISK      OK             -       -       p0    -       1396.97   
u0-1     DISK      OK             -       -       p1    -       1396.97   
u0/v0    Volume    -              -       -       -     -       1396.97   

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c5/u1 show all
/c5/u1 status = OK
/c5/u1 is not rebuilding, its current state is OK
/c5/u1 is not verifying, its current state is OK
/c5/u1 is not initialized.
/c5/u1 Write Cache = on
/c5/u1 Read Cache = Intelligent
/c5/u1 volume(s) = 1
/c5/u1 name = mirror2              
/c5/u1 serial number = 9VS3KACPBA8236007F19 
/c5/u1 Ignore ECC policy = off       
/c5/u1 Auto Verify Policy = off       
/c5/u1 Storsave Policy = performance 
/c5/u1 Command Queuing Policy = on        
/c5/u1 Rapid RAID Recovery setting = all

Unit     UnitType  Status         %RCmpl  %V/I/M  Port  Stripe  Size(GB)
------------------------------------------------------------------------
u1       RAID-1    OK             -       -       -     -       1396.97   
u1-0     DISK      OK             -       -       p2    -       1396.97   
u1-1     DISK      OK             -       -       p3    -       1396.97   
u1/v0    Volume    -              -       -       -     -       1396.97   

mathias@labstorage:~$

Code:
mathias@labstorage:~$ sudo tw_cli /c5 show phy

                             Device              --- Link Speed (Gbps) ---
Phy     SAS Addesss          Type     Device     Supported  Enabled  Control
-----------------------------------------------------------------------------
phy0    -                    SATA     /c5/p0     1.5-3.0    3.0      Auto   
phy1    -                    SATA     /c5/p1     1.5-3.0    3.0      Auto   
phy2    -                    SATA     /c5/p2     1.5-3.0    3.0      Auto   
phy3    -                    SATA     /c5/p3     1.5-3.0    3.0      Auto   

mathias@labstorage:~$

Ansonsten evtl noch eine Info: Ich hatte zuvor ein FreeBSD 8.2 installiert und wenn mich jetzt nicht alles täuscht habe ich damals ca 380 MB/s mit dd gemessen. Dann ging mir eine Platte kaputt, die dann durch die Wester Digital ersetzt wurde. Im gleichen Atemzug habe ich dann Debian installiert. Seit dem habe ich die verminderte Performance.

ciao
serow
 
Hi nochmal, vorhin habe ich es nicht gesehen, aber jetzt fällt es mir auf: /c5/u1 zeigt "/c5/u1 is not initialized." Ich verstehe nicht ganz was das überhaupt sein soll. Als ich die Platte reingehängt habe hat er mit seinem rebuild angefangen. Was will man mehr?

ciao
serow
 
Hi, ich habe mal eine Verification angestoßen in meiner Verzweiflung. Zwar stehe im Handbuch, dass es für RAID 1 keinen Geschwindigkeitsvorteil bringt (für andere RAID Typen wohl schon) aber ich habe es trotzdem mal gemacht. Dabei hat sich auch das eine Unit initialisiert, aber dennoch keine Änderung:


Code:
mathias@labstorage:~$ sudo dd if=/dev/zero of=/dev/raid10/test1 bs=1MB
72584+0 records in
72584+0 records out
72584000000 bytes (73 GB) copied, 397.549 s, 183 MB/s
mathias@labstorage:~$

Hat noch jemand eine Idee?

Grüße
serow
 
Hi,

ich habe versucht einen repäsentativen Ausschnit aus top zu organisieren:

Code:
top - 13:57:58 up 3 days,  1:46, 10 users,  load average: 0.93, 0.40, 0.15
Tasks: 161 total,   3 running, 158 sleeping,   0 stopped,   0 zombie
Cpu(s):  0.0%us, 20.8%sy,  0.0%ni, 45.7%id, 32.4%wa,  0.5%hi,  0.7%si,  0.0%st
Mem:   7160808k total,  7037384k used,   123424k free,  6439900k buffers
Swap: 12683256k total,      176k used, 12683080k free,   147216k cached

  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                          
28521 root      20   0 10616 1648  552 D   34  0.0   0:37.55 dd                                                                                
   31 root      20   0     0    0    0 S    8  0.0   3:36.17 kswapd0                                                                           
28523 root      20   0     0    0    0 R    5  0.0   0:19.24 flush-253:4

Diese 3 Prozesse sind die, die sich immer abwechseln bzgl CPU load. Das Average von 0.93 ist auch ziemlich krass oder? Das heisst ja, dass fast ein ganzer Core aufgeraucht wird. Das ist doch etwas sehr viel oder nicht? An Software hat eigentlich nur mdadm und lvm2 was damit zu tun. Wie können wir das weiter eingrenzen?

Grüße
serow
 
Ich weiß ehrlich gesagt nicht, ob md mehr als einen Kern nutzen kann (für die gleiche IOP), aber wenn nicht haben wir unseren culprit gefunden. Starte doch mal mehrere Kopiervorgänge gleichzeitig...
 
Hi,

zwei diskdumps zeigen dann Auslastung auf 2 Kernen. Load average steigt auf grob 1.80. Gut, CPU scheint der Übeltäter zu sein :D Aber warum? Gibt noch nicht viel zu berechnen ...

Ich habe übrigens festgestellt, dass beim Lesen von /dev/md0 und /dev/raid10/test1 kein großer Unterschied besteht. Beides etwas mit 440 MB/s gleich schnell. CPU Load geht aber auch hoch.

Grüße
serow
 
Ich würde mal vermuten, dass die load aufgrund vieler Interrupts hochgeht. Wenn ich mich recht erinnere viel IO => viele Interrupts

/fakeedit:
Linux MD RAID-1 (mirroring) write performance:

Must wait for the write to occur to all of the disks in the mirror. This is because a copy of the data must be written to each of the disks in the mirror. Thus, performance will be roughly equal to the write performance to a single disk.
Er wartet also bis alle Controller das Schreiben bestätigen... daher ist schreiben aufs RAID-1 nur wenig schneller als schreiben auf eine einzelne Platte ( Software-RAID HOWTO: Performance, Tools & General Bone-headed Questions )
 
Hi, ja gut nur trifft das auf mich nicht zu. Ich habe ein RAID0 mit md gebaut :P Unter FreeBSD hatte ich diese Probleme nicht ...
 
Ups :o Naja dann äh [100%] Argumentationsbaum aufbauen wird die CPU stark belastet, weil er die Daten in Streifchen schneiden muss und daher viel im RAM rumkopieren muss.
Ich denke mal, dass es schlichtweg an der nicht-parallelisierung des IOs liegt...
 
Zuletzt bearbeitet:
Hmm ist ja irgendwie nicht Sinn der Sache ... RAID 0 und nicht parallelisieren :D Unsinn. Wie gesagt: FreeBSD hatte 380 MB/s schreibend. Da muss irgendwas anderes faul sein.
 
Naja... FreeBSD nutzt ja nichmal ein Linux als Kernel, also ist es schwer zu vergleichen. Da kann unter der Haube vieles ganz anders sein ;)
 
Naja, heisst aber letztlich, dass FreeBSD 380 MB/s hinbekommt, Linux nur grob 175 MB/s und das ist weniger als die Hälfte. Und wenn es an der Implementierung liegt und nicht der Hardware (was so zu sein scheint) hat Linux da Misst gebaut. Kann ich mir in dem Ausmaß allerdings nicht vorstellen.
 
Hi, jetzt dreht mir dir Kiste völlig durch. Ich habe efinach aus Verzweiflung nochmal getestet und direkt ganz andere Werte erhalten als noch gestern:

Code:
#!/usr/bin/perl -w
use strict;

my @block_sizes = ('512', '1K', '4K', '64K', '1M');
foreach (@block_sizes) {
        my $bs = $_;
        system("sync");
        my @lines = `dd if=/dev/zero of=/dev/raid10/test1 bs=$bs 2>&1`;
        shift(@lines);
        shift(@lines);
        shift(@lines);
        my $line = shift(@lines);
        chomp($line);

        my @values = split(/,\s/, $line);
        print "$bs   => $values[2]\n";
}

Code:
mathias@labstorage:~$ sudo perl benchmark
512   => 48.1 MB/s
1K   => 50.7 MB/s
4K   => 433 MB/s
64K   => 435 MB/s
1M   => 414 MB/s
mathias@labstorage:~$

Gestern hatte ich doch auch dd Output gepostet, ebenfalls mit bs=1M und er hat mir cat 170 MB/s gezeigt. Jetzt sind es 414 MB/s :D Darüber freue ich mich einerseits, andererseits ist das irgendwie unbefriedigent :D Auch krass ist der Unterschied, den unterschiedliche Werte für bs zeigen: zwischen 48 und 435 MB/s. Hat das irgendwas mit der Stripe Size oder ähnlichem zu tun? Da bin ich mir nicht ganz im Klaren drüber.

Ich werde jetzt auch nochmal testen, wie sich die CPU jeweils verhält.

Grüße
serow
 
Naja, dass Festplatten (und auch SSDs übrigens) massivst einbrechen, wenn die Reads/Writes kleiner werden, ist ja nichts neues ;) Der Overhead für eine IOP ist idR. größenunabhängig der gleiche, wenn du also 1 GB mit 512 Byte Blöcken schreibst, ist es deutlich langsamer als mit 1 MB blöcken.
 
Ok, das war mir nicht so klar - deswegen frage ich ja ;) Wenn ich nur wüsste was sich seit gestern verändert hat ...
 
Zurück
Oben