Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Performance de lecture et/ou écriture faible sur un disque logique RAID 5 (RAID matériel) sur une Debian Squeeze 64 bit

37 réponses
Avatar
Francois Lafont
Bonjour à tous,

J'ai un serveur dont voici les caractéristiques :

- C'est un HP Proliant DL385 avec 16 Go de RAM, 2 processeurs
Opteron(tm) 265 1.80 GHz (1MBL2), 4 disques durs (2.5") de 72 Go et un
contrôleur RAID Smart Array P600.

- Ce serveur est relié à une baie SAS HP Storage Works MSA50 avec 10
disques durs (2.5") de 72 Go.

- Il y a donc en tout 14 disques durs et 13 sont montés en RAID 5 et 1
disque est en spare (via le contrôleur RAID Smart Array P600). J'ai donc
un unique disque logique sur lequel est installé Debian Squeeze 64 bit.

- Tous les disques physiques (14 au total) sont identiques et vous avez
leurs caractéristiques ici :
http://www.harddrivesdirect.com/product_info.php?cPath=130&products_id=144366

- Plus bas dans le message, je vous ai copié-collé plein d'informations
sur le contrôleur RAID.

Mon souci est que le tout semble être un peu lent en lecture et/ou
écriture (encore qu'en écriture j'ai un petit doute) par rapport aux
caractéristiques ci-dessus. Je vous mets ci-dessous les tests effectués
(avec leur résultat) ainsi que les questions que j'ai car certaines
notions ne sont pas forcément très claires dans mon esprit (je ne suis
pas un spécialiste du RAID). Mon souhait serait simplement d'arriver à
obtenir des performances de lecture/écriture qui correspondent aux
caractéristiques du serveur.

Déjà en lecture j'ai ceci qui est assez représentatif des valeurs que
j'obtiens :

---------------------------------------------------------
~# hdparm -t /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing buffered disk reads: 108 MB in 3.03 seconds = 35.63 MB/sec

~# hdparm -T /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing cached reads: 1880 MB in 2.00 seconds = 940.62 MB/sec
---------------------------------------------------------

Déjà, j'aimerais être sûr de comprendre de quoi il s'agit :

- « Timing buffered disk reads » c'est le temps de lecture du disque
sachant que le buffer du disque a été vidé au préalable et que la
lecture se fait sans la couche "système de fichiers".

- « Timing cached reads » c'est le temps de lecture du buffer du disque,
sachant que le buffer est une mémoire volatile qui se trouve dans le
disque lui-même qui est beaucoup plus rapide à lire (et à écrire) que le
disque lui-même.

Q1 : déjà, est-ce que j'ai bon jusque là ?

Q2 : les performances ci-dessous sont bien faibles au regard des
caractéristiques annoncées, on est d'accord ? Rien que sur sur mon
modeste pc perso (sans RAID) j'ai du « Timing buffered disk reads » égal
à 121.98 MB/sec les doigts dans pif.

Du coup, j'ai fait quelques recherches sur le Web et il est question ici
ou là paramètre "readahead". Alors, celui-là j'ai un peu de mal à le
comprendre : apparemment ça serait, au moment de la lecture du disque,
la taille des « paquets » (exprimée en nombre de secteurs consécutifs de
512 bytes) que le disque enverrait dans son buffer afin que le système
d'exploitation lise les données demandées. Du coup, pour une lecture
séquentielle de pas mal de données, ça fait gagner du temps d'avoir un
"readahead" élevé (car il y a moins de « paquets » à envoyer dans le
buffer) mais pour des lectures de petits fichiers un peu dispersés sur
le disque on y perd (car beaucoup de données sont envoyées dans le
buffer inutilement).

Q3 : est-ce correct ?

Du coup, voici une tentative de changement de ce paramètre et voici un
nouveau test :

---------------------------------------------------------
~# blockdev --setra 16384 /dev/cciss/c0d0

~# hdparm -t /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing buffered disk reads: 588 MB in 3.00 seconds = 195.83 MB/sec

~# hdparm -T /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing cached reads: 1568 MB in 2.00 seconds = 783.71 MB/sec
---------------------------------------------------------

Q4 : est-ce que cela vous semble correct (= en phase avec le matériel)
comme perfs cette fois ? Quelle bonne valeur faut-il donner à ce
paramètre "readahead" ? Comment faire pour que le paramètre soit
conservé après redémarrage ? Via une commande dans rc.local ? Y a-t-il
d'autres moyens que la modification de ce paramètre pour améliorer les
performances en lecture ?

Et puis il y a aussi l'écriture. Voici un test :

---------------------------------------------------------
~# time dd if=/dev/zero of=toto bs=4096 count=500000
500000+0 enregistrements lus
500000+0 enregistrements écrits
2048000000 octets (2,0 GB) copiés, 9,10023 s, 225 MB/s
---------------------------------------------------------

Q5 : est-ce que cela vous paraît correct ? Personnellement je n'ai rien
trouvé qui améliore sensiblement la vitesse d'écriture (mais peut-être
c'est déjà en phase avec les caractéristiques du serveur). Peut-être
ai-je des choses à modifier au niveau du contrôleur RAID. Je vous donne
des infos ci-dessous :

---------------------------------------------------------
~# hpacucli controller all show config detail

Smart Array P600 in Slot 3
Bus Interface: PCI
Slot: 3
Serial Number: P92B30F9SSZ05U
Cache Serial Number: P67570H9SSY0A5
RAID 6 (ADG) Status: Enabled
Controller Status: OK
Hardware Revision: A
Firmware Version: 2.04
Rebuild Priority: Medium
Expand Priority: Medium
Surface Scan Delay: 15 secs
Surface Scan Mode: Idle
Post Prompt Timeout: 0 secs
Cache Board Present: True
Cache Status: OK
Cache Ratio: 50% Read / 50% Write
Drive Write Cache: Enabled
Total Cache Size: 256 MB
Total Cache Memory Available: 224 MB
No-Battery Write Cache: Disabled
Cache Backup Power Source: Batteries
Battery/Capacitor Count: 2
Battery/Capacitor Status: OK
SATA NCQ Supported: False

Array: A
Interface Type: SAS
Unused Space: 0 MB
Status: OK
Array Type: Data



Logical Drive: 1
Size: 820.0 GB
Fault Tolerance: RAID 5
Heads: 255
Sectors Per Track: 32
Cylinders: 65535
Strip Size: 64 KB
Full Stripe Size: 768 KB
Status: OK
Caching: Enabled
Parity Initialization Status: Initialization Completed
Unique Identifier: 600508B10010463953535A303555000C
Disk Name: /dev/cciss/c0d0
Mount Points: /boot 285 MB, / 18.6 GB
OS Status: LOCKED
Logical Drive Label: A021A069P92B30F9SSZ05UB273
Drive Type: Data

physicaldrive 1E:1:1
Port: 1E
Box: 1
Bay: 1
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD4
Serial Number: 6SD24N6W0000B123M7FT
Model: HP DG0072BALVL
PHY Count: 2
PHY Transfer Rate: 3.0Gbps, Unknown

physicaldrive 1E:1:2
Port: 1E
Box: 1
Bay: 2
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07GA7000076139ZSM
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:3
Port: 1E
Box: 1
Bay: 3
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07GPJ0000761393MC
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:4
Port: 1E
Box: 1
Bay: 4
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07G65000076139Z01
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:5
Port: 1E
Box: 1
Bay: 5
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07G9Q00007613SML0
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:6
Port: 1E
Box: 1
Bay: 6
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07GPW0000761392XX
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:7
Port: 1E
Box: 1
Bay: 7
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07G6Q000076139Z15
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:8
Port: 1E
Box: 1
Bay: 8
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07G3000007613A0AG
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:9
Port: 1E
Box: 1
Bay: 9
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07HAX0000761393YP
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 2I:1:1
Port: 2I
Box: 1
Bay: 1
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB0FYTG000076362WBD
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 2I:1:2
Port: 2I
Box: 1
Bay: 2
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB0G0L700007636KFHL
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 2I:1:3
Port: 2I
Box: 1
Bay: 3
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB0FYW600007636KFQL
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 2I:1:4
Port: 2I
Box: 1
Bay: 4
Status: OK
Drive Type: Data Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB0FZX300007636XVA1
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps

physicaldrive 1E:1:10
Port: 1E
Box: 1
Bay: 10
Status: OK
Drive Type: Spare Drive
Interface Type: SAS
Size: 72 GB
Rotational Speed: 10000
Firmware Revision: HPD7
Serial Number: 3LB07H0Q00007613A01J
Model: HP DG072A8B54
PHY Count: 1
PHY Transfer Rate: 3.0Gbps


Expander 122
Device Number: 122
Firmware Version: A
WWID: 500508B300A2093F
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA 50-10D25G1

Expander 123
Device Number: 123
Firmware Version: A
WWID: 500508B300A2092F
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA 50-10D25G1

Enclosure SEP (Vendor ID HP, Model MSA50 -10D25G1) 121
Device Number: 121
Firmware Version: 1.20
WWID: 500508B300A2092C
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA50 -10D25G1
---------------------------------------------------------

Voici les paramètres qui ont retenu mon attention :

Smart Array P600 in Slot 3
Cache Ratio: 50% Read / 50% Write
Total Cache Size: 256 MB

Logical Drive: 1
Strip Size: 64 KB
Full Stripe Size: 768 KB

Le « cache ratio », celui-là je peux le changer sans problème avec la
commande "hpacucli" mais je n'ai pas noté ensuite de changement sensible
au niveau des performances.

Un paramètre que j'aurais bien aimé changer c'est le « Total Cache Size
» qui me semble bien petit. Mais celui-là, je n'ai pas trouvé le moyen
de le changer, peut-être est-ce un paramètre purement matériel
impossible à changer...

Q6 : enfin il y a les paramètres « Strip Size » et « Full Strip Size ».
Savez-vous ce qu'ils signifient ? Apparemment, ça peut avoir une
incidence sur les performances. Mais je n'ai pas tellement de choix pour
cette valeur :

---------------------------------------------------------
~# hpacucli controller slot=3 logicaldrive 1 modify stripsize=?
Available options are:
8 kb
16 kb
32 kb
64 kb (current value) (default value)
128 kb
---------------------------------------------------------

Et là aussi, je n'ai pas noté de changement sensible après modification.

Q7 : voyez-vous des choses à améliorer pour optimiser les performances
en lecture/écritures au niveau du contrôleur RAID ?

Merci d'avance pour votre aide (si vous avez eu le courage de me lire
jusqu'au bout).

--
François Lafont

10 réponses

1 2 3 4
Avatar
Pascal Hambourg
Salut,

Francois Lafont a écrit :
---------------------------------------------------------
~# hdparm -t /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing buffered disk reads: 108 MB in 3.03 seconds = 35.63 MB/sec

~# hdparm -T /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing cached reads: 1880 MB in 2.00 seconds = 940.62 MB/sec
---------------------------------------------------------

Déjà, j'aimerais être sûr de comprendre de quoi il s'agit :

- « Timing buffered disk reads » c'est le temps de lecture du disque
sachant que le buffer du disque a été vidé au préalable et que la
lecture se fait sans la couche "système de fichiers".

- « Timing cached reads » c'est le temps de lecture du buffer du disque,
sachant que le buffer est une mémoire volatile qui se trouve dans le
disque lui-même qui est beaucoup plus rapide à lire (et à écrire) que le
disque lui-même.



Non. Le cache dont il est question est dans la mémoire système, pas dans
le disque.
Avatar
Francois Lafont
Bonsoir,

Le 18/11/2012 00:59, Pascal Hambourg a écrit :

- « Timing buffered disk reads » c'est le temps de lecture du disque
sachant que le buffer du disque a été vidé au préalable et que la
lecture se fait sans la couche "système de fichiers".

- « Timing cached reads » c'est le temps de lecture du buffer du disque,
sachant que le buffer est une mémoire volatile qui se trouve dans le
disque lui-même qui est beaucoup plus rapide à lire (et à écrire) que le
disque lui-même.



Non. Le cache dont il est question est dans la mémoire système, pas dans
le disque.



Ok, merci pour cette précision. Cette mémoire système, ce n'est pas la
RAM de l'ordinateur quand même ?

Du coup, je ne vois plus le rapport avec le disque. En quoi la commande
ci-dessous concerne-t-elle le disque s'il agit de lire un cache de la
mémoire système ?

------------------------------------------------------
~# hdparm -T /dev/cciss/c0d0

/dev/cciss/c0d0:
Timing cached reads: 1552 MB in 2.00 seconds = 775.99 MB/sec
------------------------------------------------------


--
François Lafont
Avatar
Ascadix
Francois Lafont avait écrit le 18/11/2012 :
Bonjour à tous,

J'ai un serveur dont voici les caractéristiques :

- C'est un HP Proliant DL385 avec 16 Go de RAM, 2 processeurs
Opteron(tm) 265 1.80 GHz (1MBL2), 4 disques durs (2.5") de 72 Go et un
contrôleur RAID Smart Array P600.

- Ce serveur est relié à une baie SAS HP Storage Works MSA50 avec 10
disques durs (2.5") de 72 Go.

- Il y a donc en tout 14 disques durs et 13 sont montés en RAID 5 et 1
disque est en spare (via le contrôleur RAID Smart Array P600). J'ai donc
un unique disque logique sur lequel est installé Debian Squeeze 64 bit.



Une seule grappe RAID avec les DD de la baie interne et ceux de la baie
externe ... c'est pas trop courrant comme config.
Généralement, on utilise plutot une grappe RAID par baie.

Faudrait voir dans la doc du controleur si ce genre de montage est
recommandé/déconseillé/supporté ou pas ...


[...]
Pour les réglages OS, je suis pas assez calé pour pour en causer.


---------------------------------------------------------
~# hpacucli controller all show config detail

Smart Array P600 in Slot 3
Bus Interface: PCI
Slot: 3
Serial Number: P92B30F9SSZ05U
Cache Serial Number: P67570H9SSY0A5
RAID 6 (ADG) Status: Enabled
Controller Status: OK
Hardware Revision: A
Firmware Version: 2.04
Rebuild Priority: Medium
Expand Priority: Medium
Surface Scan Delay: 15 secs
Surface Scan Mode: Idle
Post Prompt Timeout: 0 secs
Cache Board Present: True
Cache Status: OK
Cache Ratio: 50% Read / 50% Write
Drive Write Cache: Enabled
Total Cache Size: 256 MB
Total Cache Memory Available: 224 MB
No-Battery Write Cache: Disabled
Cache Backup Power Source: Batteries
Battery/Capacitor Count: 2
Battery/Capacitor Status: OK
SATA NCQ Supported: False


Array: A
Interface Type: SAS
Unused Space: 0 MB
Status: OK
Array Type: Data



Logical Drive: 1
Size: 820.0 GB
Fault Tolerance: RAID 5
Heads: 255
Sectors Per Track: 32
Cylinders: 65535
Strip Size: 64 KB
Full Stripe Size: 768 KB
Status: OK
Caching: Enabled
Parity Initialization Status: Initialization Completed
Unique Identifier: 600508B10010463953535A303555000C
Disk Name: /dev/cciss/c0d0
Mount Points: /boot 285 MB, / 18.6 GB
OS Status: LOCKED
Logical Drive Label: A021A069P92B30F9SSZ05UB273
Drive Type: Data




[...]


Expander 122
Device Number: 122
Firmware Version: A
WWID: 500508B300A2093F
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA 50-10D25G1

Expander 123
Device Number: 123
Firmware Version: A
WWID: 500508B300A2092F
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA 50-10D25G1

Enclosure SEP (Vendor ID HP, Model MSA50 -10D25G1) 121
Device Number: 121
Firmware Version: 1.20
WWID: 500508B300A2092C
Port: 1E
Box: 1
Vendor ID: HP
Model: MSA50 -10D25G1
---------------------------------------------------------

Voici les paramètres qui ont retenu mon attention :

Smart Array P600 in Slot 3
Cache Ratio: 50% Read / 50% Write
Total Cache Size: 256 MB

Logical Drive: 1
Strip Size: 64 KB
Full Stripe Size: 768 KB

Le « cache ratio », celui-là je peux le changer sans problème avec la
commande "hpacucli" mais je n'ai pas noté ensuite de changement sensible
au niveau des performances.




Si ton OS gére correctement un cache lecture, tu pourais affecter ton
cache controleur en majorité à l'écriture, ça améliorera les perf en
écriture sans dégrader la lecture.

Par contre, si ton OS sait pas gérer correctement un cache systeme en
lecture ou est à cours de RAM pour faire du cache-disque, faut mieux
mettre du genre 75 R / 25 W (à ajuster suivant le type d'I/O
majoritaire sur ton serveur)

Un paramètre que j'aurais bien aimé changer c'est le « Total Cache Size
» qui me semble bien petit. Mais celui-là, je n'ai pas trouvé le moyen
de le changer, peut-être est-ce un paramètre purement matériel
impossible à changer...



C'est la taille de RAM embarqué sur ton controleur, si tu veux
augmenter, faut rajouter/changer la barette de cache (et oubli pas la
batterie qui va avec)

Q6 : enfin il y a les paramètres « Strip Size » et « Full Strip Size ».
Savez-vous ce qu'ils signifient ? Apparemment, ça peut avoir une
incidence sur les performances. Mais je n'ai pas tellement de choix pour
cette valeur :



"Full Strip Size" t'en préoccupe pas, c'est une info calculé à partir
du "strip size" et du nombre de DD utiles.

"Strip Size" c'est la taille de découpe des blocs de donnée RAID (en
gros, la taille d'un "secteur" du volume logique RAID)

Pour trouver la valeur optimale, faut mixer divers facteurs:

l'idée de base c'est :
- si tes I/O sont fortement aléatoires -> petit strip
- si tes I/O sont fortement séquentiels -> grand strip

Mais faut moduler avec la doc de ton controleur, avec certains
controleurs la taille "optimale" dépend aussi du niveau de RAID choisi,
et la répartition R/W à aussi son importance.

Si tu sais pas, prend la valeur par défaut, c'est censé être celle ou
le controleur donnera le meilleur de ses capacité indépandament de ton
schéma d'I/O.


---------------------------------------------------------
~# hpacucli controller slot=3 logicaldrive 1 modify stripsize=?
Available options are:
8 kb
16 kb
32 kb
64 kb (current value) (default value)
128 kb
---------------------------------------------------------

Et là aussi, je n'ai pas noté de changement sensible après modification.



Faut vraiment charger le systeme disque comme une mule pour voir des
écarts.


Q7 : voyez-vous des choses à améliorer pour optimiser les performances
en lecture/écritures au niveau du contrôleur RAID ?



Faudrais savoir la config de ton serveur, mais en général, on sépare
les grappes RAID.

- 1 grappe pour l'OS (taille ..juste ce qu'il faut, plutot RAID10)
- 1 grappe swap (éventuellement, taille ..juste ce qu'il faut, plutot
RAID10)
- X grappes pour les data, suivant le nb de service qui accédent au DD,
la répartition des données, etc ... plutot RAID5 ou 6

Par ex, si ton serveur fourni une DB et un serveur Web, tu met la DB
sur une grappe et le contenu statique du site sur une autre grappe.

Les binaires sur une grappe isolé si possible, sinon sur la grappe de
l'OS.


évidement, ça coute des DD tout ça, donc parfois/souvent, on fait des
compromis.
Le compromis plus courrant à bas cout c'est 2 grappes:
- 1 grappe OS/ SWAP / applis
- 1 grappe data

Merci d'avance pour votre aide (si vous avez eu le courage de me lire
jusqu'au bout).



--
@+
Ascadix
adresse @mail valide, mais ajoutez "sesame" dans l'objet pour que ça
arrive.
Avatar
Luc.Habert.00__arjf
Pascal Hambourg :

Timing cached reads: 1880 MB in 2.00 seconds = 940.62 MB/sec


Non. Le cache dont il est question est dans la mémoire système, pas dans
le disque.



Au fait, quel est l'intéret à ce que hdparm mesure ça?
Avatar
Pascal Hambourg
Francois Lafont a écrit :

Le 18/11/2012 00:59, Pascal Hambourg a écrit :

- « Timing cached reads » c'est le temps de lecture du buffer du disque,
sachant que le buffer est une mémoire volatile qui se trouve dans le
disque lui-même qui est beaucoup plus rapide à lire (et à écrire) que le
disque lui-même.


Non. Le cache dont il est question est dans la mémoire système, pas dans
le disque.



Ok, merci pour cette précision. Cette mémoire système, ce n'est pas la
RAM de l'ordinateur quand même ?



Si.

Du coup, je ne vois plus le rapport avec le disque. En quoi la commande
ci-dessous concerne-t-elle le disque s'il agit de lire un cache de la
mémoire système ?



Cf. la page de manuel de hdparm. Les données lues depuis le disque
transitent par cette mémoire (sauf si on utilise l'option --direct),
donc sa vitesse a une influence sur le résultat final.
Avatar
Emmanuel Florac
Le Sun, 18 Nov 2012 00:05:00 +0100, Francois Lafont a écrit:


Q4 : est-ce que cela vous semble correct (= en phase avec le matériel)
comme perfs cette fois ?



Clairement, non. Sur les machines avec une 15aine de disques 7200 tours
(donc deux fois plus lents) que j'assemble, la performance est très, très
supérieure (pour 15 disques en RAID-6, j'ai au moins 800 Mo/s soutenus en
écriture et 1200 Mo/s en lecture sur les derniers systèmes). D'un autre
côté, d'après ce que j'ai vu avec les P400 et P450 HP, j'ai la forte
impression que les contrôleurs HP cciss sont de sombres merdes, purement
et simplement. Je sais, ça n'aide pas beaucoup, mais je pense qu'il faut
le dire et dissuader les gens d'acheter ces trucs. Utilisez de l'adaptec,
du LSI, n'importe quoi mais pas du HP.

Apparemment tout est bien configuré: le cache est activé, en lecture
comme en écriture, etc. À ce stade je me demande s'il ne serait pas plus
intéressant de mettre les disques en JBOD et de faire du RAID-5 logiciel;
la performance serait certainement meilleure parce que 225 Mo/s en
écriture avec 13 disques 15k, c'est vraiment pathétique (tu devrais avoir
un bon 1 Go/s ou même plus).

Je viens de voir que tu as assemblé dans la même grappe les disques
internes au serveur et la baie externe. Je ne pense pas non plus que ce
soit une bonne idée; les disques internes devraient plutôt être
configurés en RAID-10 dans une grappe pour héberger le système et les
applis, et les disques dans le châssis externe en RAID-5. Je ne pense pas
cependant que ça joue sur les performance globales, mais sait-on jamais,
ces contrôleurs sont si mal foutus...

--
Three may keep a secret, if two of them are dead.
Benjamin Franklin.
Avatar
Francois Lafont
Le 18/11/2012 08:50, Pascal Hambourg a écrit :

Ok, merci pour cette précision. Cette mémoire système, ce n'est pas la
RAM de l'ordinateur quand même ?



Si.

Du coup, je ne vois plus le rapport avec le disque. En quoi la commande
ci-dessous concerne-t-elle le disque s'il agit de lire un cache de la
mémoire système ?



Cf. la page de manuel de hdparm. Les données lues depuis le disque
transitent par cette mémoire (sauf si on utilise l'option --direct),
donc sa vitesse a une influence sur le résultat final.



Ok. Merci bien pour ces précisions.

Donc si je comprends bien dans la page man :

--------------------------------------------------------------
-t --> This displays the speed of reading through the buffer cache to
the disk without any prior caching of data.

-T --> This displays the speed of reading directly from the Linux buffer
cache without disk access.
--------------------------------------------------------------

Dans les deux cas, le « buffer cache » est la mémoire cache de l'OS qui
se trouve sur la RAM.

Est-ce correct ?

Mais on est d'accord que le disque possède lui aussi en interne un
cache, non ?

J'en conclus que c'est tout de même le test avec l'option -t qui est le
plus représentatif d'une lecture sur le disque.

--
François Lafont
Avatar
Francois Lafont
Le 18/11/2012 01:45, Ascadix a écrit :

Une seule grappe RAID avec les DD de la baie interne et ceux de la baie
externe ... c'est pas trop courrant comme config.
Généralement, on utilise plutot une grappe RAID par baie.



Ah, ok. Du coup, j'essayerai sans doute de faire ainsi.

Si ton OS gére correctement un cache lecture,



L'OS est Debian Squeeze 64 bit, c'est quand même pas de la gnognote, non
? :-)

tu pourais affecter ton
cache controleur en majorité à l'écriture, ça améliorera les perf en
écriture sans dégrader la lecture.



Ok.

Par contre, si ton OS sait pas gérer correctement un cache systeme en
lecture ou est à cours de RAM pour faire du cache-disque, faut mieux
mettre du genre 75 R / 25 W (à ajuster suivant le type d'I/O
majoritaire sur ton serveur)



Il y a 16 Go de RAM quand même. Du coup, je vais peut-être m'orienter
vers un ratio en faveur de l'écriture je pense.

Un paramètre que j'aurais bien aimé changer c'est le « Total Cache Size
» qui me semble bien petit. Mais celui-là, je n'ai pas trouvé le moyen
de le changer, peut-être est-ce un paramètre purement matériel
impossible à changer...



C'est la taille de RAM embarqué sur ton controleur, si tu veux
augmenter, faut rajouter/changer la barette de cache (et oubli pas la
batterie qui va avec)



Ok. Et bien le contrôleur RAID ne possède que 256 Mo de cache. C'est pas
énorme je trouve.

Q6 : enfin il y a les paramètres « Strip Size » et « Full Strip Size ».
Savez-vous ce qu'ils signifient ? Apparemment, ça peut avoir une
incidence sur les performances. Mais je n'ai pas tellement de choix pour
cette valeur :



"Full Strip Size" t'en préoccupe pas, c'est une info calculé à partir du
"strip size" et du nombre de DD utiles.

"Strip Size" c'est la taille de découpe des blocs de donnée RAID (en
gros, la taille d'un "secteur" du volume logique RAID)



D'accord. Merci bien pour cette info.

Pour trouver la valeur optimale, faut mixer divers facteurs:

l'idée de base c'est :
- si tes I/O sont fortement aléatoires -> petit strip
- si tes I/O sont fortement séquentiels -> grand strip



En admettant que sur le serveur sera installé un Xen4 et des machines
virtuelles (les disques des VM seront dans une partition LVM), je suis
plus dans quelle catégorie ? Des I/O plutôt séquentiels, non ?

Mais faut moduler avec la doc de ton controleur, avec certains
controleurs la taille "optimale" dépend aussi du niveau de RAID choisi,
et la répartition R/W à aussi son importance.

Si tu sais pas, prend la valeur par défaut, c'est censé être celle ou le
controleur donnera le meilleur de ses capacité indépandament de ton
schéma d'I/O.



Ok.

Q7 : voyez-vous des choses à améliorer pour optimiser les performances
en lecture/écritures au niveau du contrôleur RAID ?



Faudrais savoir la config de ton serveur, mais en général, on sépare les
grappes RAID.

- 1 grappe pour l'OS (taille ..juste ce qu'il faut, plutot RAID10)
- 1 grappe swap (éventuellement, taille ..juste ce qu'il faut, plutot
RAID10)
- X grappes pour les data, suivant le nb de service qui accédent au DD,
la répartition des données, etc ... plutot RAID5 ou 6

Par ex, si ton serveur fourni une DB et un serveur Web, tu met la DB sur
une grappe et le contenu statique du site sur une autre grappe.

Les binaires sur une grappe isolé si possible, sinon sur la grappe de l'OS.


évidement, ça coute des DD tout ça, donc parfois/souvent, on fait des
compromis.



Et oui.

Le compromis plus courrant à bas cout c'est 2 grappes:
- 1 grappe OS/ SWAP / applis
- 1 grappe data



Bon, je vais peut-être m'orienter vers 2 grappe alors.

Merci pour tes précieux conseils Ascadix. :-)

--
François Lafont
Avatar
Emmanuel Florac
Le Sun, 18 Nov 2012 23:14:55 +0100, Francois Lafont a écrit:


Dans les deux cas, le « buffer cache » est la mémoire cache de l'OS qui
se trouve sur la RAM.

Est-ce correct ?



Oui. C'est le mode d'accès qui est utilisé le plus couramment, sauf si on
utilise les accès "synchrones" ou "direct IO".

Mais on est d'accord que le disque possède lui aussi en interne un
cache, non ?



Oui, qui peut être activé ou désactivé. Il est apparemment actif d'après
l'outil cciss.

J'en conclus que c'est tout de même le test avec l'option -t qui est le
plus représentatif d'une lecture sur le disque.



Oui mais c'est le -T qui est représentatif des usages habituels, où une
grande partie de la RAM de la machine est utilisée comme cache disque.

--
don't want to achieve immortality through my work. I want to
achieve it through not dying.
Woody Allen.
Avatar
Emmanuel Florac
Le Sun, 18 Nov 2012 23:14:55 +0100, Francois Lafont a écrit:


Dans les deux cas, le « buffer cache » est la mémoire cache de l'OS qui
se trouve sur la RAM.

Est-ce correct ?



Oui. C'est le mode d'accès qui est utilisé le plus couramment, sauf si on
utilise les accès "synchrones" ou "direct IO".

Mais on est d'accord que le disque possède lui aussi en interne un
cache, non ?



Oui, qui peut être activé ou désactivé. Il est apparemment actif d'après
l'outil cciss.

J'en conclus que c'est tout de même le test avec l'option -t qui est le
plus représentatif d'une lecture sur le disque.



Oui mais c'est le -T qui est représentatif des usages habituels, où une
grande partie de la RAM de la machine est utilisée comme cache disque.

--
don't want to achieve immortality through my work. I want to
achieve it through not dying.
Woody Allen.
1 2 3 4