Skip to content


Augmentation des performances disques par la modification de l'alignement des partitions lors de l'installation d'une Mandriva 2009.0

-:Mise à jour:-

2011-08-13

J'ai mis à jour les captures d'écran afin que cela reflète le résultat de la modification actuelle et non celui d'une modification antérieure. Je ferais un ajout à cet article plus technique quant à la francisation de l'installation avec la modification du fichier SQUAHFS (mdkinst.sqfs).

Introduction

Je cherche à modifier les scripts d'auto installation d'une Mandriva 2009.0 afin que lors de la création des partitions le début de chacune soit aligné sur le Nième secteur correspondant au début d'un track. En effet la première des partitions est alignée sur le 63ème secteur... Les autres sur des multiples de 63...

Dans le cadre de l'optimisation des perfs lecture/écriture sous VMware cet alignement est important surtout lorsque les disques sont sur du RAID ou des baies SAN (qui sont en RAID... toujours !)

voir :

Il faut avoir quelques entrées supplémentaires pour comprendre ma recherche. En effet 63 est un chiffre après tout comme les autres mais il souffre d'une tare lourde à porter en informatique. Comme un secteur fait toujours 512o (512 octects)(sauf assez récemment où certains vont jusqu'à 2048 octets) , aligner le début d'une partition sur un multiple de 63 l'alignera sur des multiples de 31.5ko ! Hum pas top.

Par ailleurs il faut savoir que certains systèmes de fichiers utilisent des "blocks" de tailles (block-size) 1024, 2048, 4096, etc... Essayez de diviser l'un de ces chiffres par 63 ou par 31.5, de pire en pire.

Bref la valeur par défaut utilisée sous GNU/Linux n'est pas top ! Elle fonctionne très bien sur un disque avec une seule partition contenant l'ensemble de l'OS ou sur des disques IDE ! Remarquez que la dernière Debian (6.0) sur des disques en SATA aligne la première partition sur le 2048ièm secteur, soit sur le 1er Mo...

Dans une baie SAN ou sur du RAID, il existe un truc appelé "chunk" (pas Norris hein !) mais qui se trouve souvent être d'une taille (chunk-size) de 64ko (et cela explique la préconisation de VMware d'aligner la première partition sur le 128ème secteur !). Remarquez que si le chunk à une taille de 32ko ou 16ko, avec 32 pour les secteurs on gagne au bingo ! Sur les disques en RAID que j'ai testés, le chunk-size était de 256ko ou plutôt le Stripe était de 64 avec des blocs de 4ko.

On récapitule ce qu'on vient d'apprendre :

  • Secteur : taille 512o (par ailleurs sur le 1er secteur se trouve le mbr souvent)
  • Chunk : taille souvent 256ko

À quoi cela nous sert-il ce chunk ? Et bien à connaitre comment le système de fichier futur devra se comporter en terme de plus petit bout commun. C'est à dire la plus petite partie lue par l'OS pour trouver un bit !

Lorsque vous formaterez vos partitions en ext2, ext3 ou ext4, faites auparavant un "man mkfs.extX"... Il aborde le sujet avec les "strides" et le "stripe-width"...

  • stride = chunk-size / block-size = (256 / 4) = 64
  • stripe-width = stride * nbdisque-eff = 64 * 1 = 64

nbdisque-eff : C'est le nombre effectif de disques dans un RAID ou non. Sans RAID => 1

  • RAID 6 = Nombre de disques - 2
  • RAID 5 = Nombre de disques - 1
  • RAID 1 ou RAID 10 : Nombre de disques / 2

On pourra donc indiquer les options qu'on désire en fonction de son architecture disques !

Pour ma part : mkfs.ext3 -F -b 4096 -E stride=64,stripe-width=64 /dev/sdaX

Par ailleurs si la taille du chunk est supérieur à l'alignement par défaut de la première partition (128 secteurs = 64ko) alors cet alignement est mauvais !

Il faut donc aussi tenir compte du chunk-size afin de calculer le bon alignement des partitions.

Comme on peut le voir sur ce graphique où pour un bloc de 4096o et un chunk 256ko, les kb/s sont au plus haut : http://www.linux.com/var/uploads/Image/articles/140734-4.jpg

De l'article : http://www.linux.com/news/hardware/servers/8222-benchmarking-hardware-raid-vs-linux-kernel-software-raid ainsi de http://www.linuxpromagazine.com/Issues/2009/108/RAID-Performance

 

Dans l'ordre voici comment se passe l'installation semi automatique :

http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/deroulement.html

Voici chacun des scripts :

isolinux.cfg :

default linux
prompt 1
timeout 0
display help.msg
implicit 1
gfxboot bootlogo
label harddisk
  localboot 0x80
label Installation_PMSIpilot_V5
  kernel alt0/vmlinuz
  append initrd=alt0/all.rdz kickstart=install/application.pl automatic=method:cdrom vga=788 splash=silent
label memtest
  kernel memtest

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/application.pl.html

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/formatage.pl.html

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/fdisk.sh.html

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/formatage.sh.html

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/conf_commune.pl.html

- http://monblog.system-linux.net/config/alignement/fichier-alignement-pour-blog/noatime.html

 

Les résultats : http://www.system-linux.net/config/alignement/difference-align-nonealigne.txt.html

En image :

 

 

 

 

 

 

Resultats

Les résultats de tests sur le disque /media/data2 hébergeant le fichier disque de la machine virtuelle :

Version 1.96 Sequential Output Sequential Input Random
Seeks
Sequential Create Random Create
Size Per Char Block Rewrite Per Char Block Num Files Create Read Delete Create Read Delete
K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU /sec % CPU
localhost 4G 625 97 108709 26 40689 12 1421 97 127867 18 158.1 5 100 334 3 +++++ +++ 324 2 317 3 +++++ +++ 253 1
Latency 18973us 821ms 223ms 23207us 59144us 358ms Latency 183ms 3760us 174ms 208ms 1456us 3891ms

Les résultats de tests sur la machine virtuelle :

Sequential Output Sequential Input Random
Seeks
Sequential Create Random Create
Size:Chunk Size Per Char Block Rewrite Per Char Block Num Files Create Read Delete Create Read Delete
K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU K/sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU / sec % CPU
localhost 4G 12071 83 25284 71 19302 63 14787 86 54415 62 123.7 10 100 2741 97 203547 99 2188 87 2611 97 +++++ +++ 3059 90

-Fin -

 

Print Friendly, PDF & Email

Posted in Important, Linux, Mandriva, Technique, Toutes, VirtualBox, Virtualisation, VMware. Tagged with , , , , , , , .

2 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.

  1. denicfr said

    Bonjour,

    super article sur l'alignement des partitions !
    Question : avec quel outil avez-vous fait les benchs ?
    J'aimerais déterminer les gains de perfs dans mon environnement : Vmware ESXi 4.0 sur baies EMC.

    Meric!

    merci!

  2. denicfr said

    OK... j'avais pas tout vu, j'ai trouvé la réponse 😉

Some HTML is OK

(required)

(required, but never shared)

or, reply to this post via trackback.

Time limit is exhausted. Please reload CAPTCHA.


/* */
Creative Commons License
Cette création par Laurent Besson est mise à disposition selon les termes de la licence Creative Commons Paternité-Partage des Conditions Initiales à l'Identique 2.0 France.