Dernièrement, nous avons entamé plusieurs tests de performance pour optimiser notre infrastructure Proxmox. Vous pouvez d’ailleurs consulter notre article précédent: Proxmox VE: Performance de KVM vs. LXC.

Nous exécutons nos tests de performance sur un serveur un peu plus vieux. Il s’agit d’un serveur SuperMicro SuperServer 6016T-MTLF équipé d’une carte mère X8DTL-IF, de 24 GiB de RAM et quatre disques Seagate 250GiB ST250DM000-1BD141.

Mode de configuration SATA

Bien que cet équipement soit un peu plus vieux que nos autres serveurs, j’ai été surpris de constater à quel point la performance en lecture et écriture sur disque n’était pas bonne. Après un peu de recherche et beaucoup de chance, j’ai fini par trouver la source du problème dans le BIOS. En fait, cette carte-mère offre plusieurs options de configuration pour l’accès des disques SATA.

  • SATA#1 Configuration:
    • Compatible
    • Enhance
    • AHCI
  • AHCI CodeBase:
    • BIOS Native Module
    • Intel AHCI ROM
Capture d'écran du BIOS en mode IDE.
Capture d'écran du BIOS en mode AHCI BIOD Native Module
Capture d'écran du BIOS en mode AHCI Intel AHCI ROM


Par défaut, le serveur utilise le mode “Compatible” qui émule le mode Parallel ATA. Si l’on veut de bonnes performances avec ce serveur, il faut vraiment utiliser le mode “AHCI” pour utiliser les disques en mode SATA natif (AHCI) et aussi utiliser le mode “Intel AHCI ROM”. Avec mes tests, j’ai remarqué un écart assez important entre les deux configurations.

Avant de faire les modifications dans le BIOS, on pouvait voir ceci dans les logs du serveur (/var/log/syslog):

ata2.00: limiting SATA link speed to 1.5 Gbps
ata2.01: limiting SATA link speed to 1.5 Gbps

Après les modifications au BIOS, je vois quelque chose comme suit:

ata1: SATA link up 3.0 Gbps (SStatus 123 SControl 300)
ata1: SATA max UDMA/133 abar m2048@0xfbed6000 port 0xfbed6100 irq 30

J’en comprends que le système utilisait seulement un lien de 1.5 Gb/s au lieu de 3 Gb/s. Ce qui explique assez bien le gain de performance.

Selon Supermicro…

Supermicro ne fournit pas beaucoup de détail dans le manuel:

If Compatible is selected, it sets SATA#1 to legacy compatibility mode. Select Enhanced to set SATA#1 to native SATA mode. The options are Disabled, Compatible and Enhanced.

Select BIOS Native Module to use BIOS Native Mode for AHCI Interface (Advanced Host Controller Interface). Select Intel AHCI ROM to use the Intel AHCI ROM for AHCI Interface. (Take caution when using this function. This feature is for advanced programmers only.) The options are BIOS Native Module and Intel AHCI ROM. If the item is set to “IDE”, the following item will display.

In AHCI mode, the BIOS offers two options; one is Intel AHCI ROM and the another is BIOS Native Module. Intel AHCI ROM is not efficiently maintained by Intel and it needs shadowed memory. BIOS Native Module is maintained by AMI for as a long-term solution and it does not need shadowed memory. The Intel AHCI ROM option is supported for customers who previously loaded Intel AHCI driver in the OS. For new OS installations, BOIS Native Module is the preferred choice, especially for new solid-state drives.

Vérifiez si AHCI est bien activé !

Il est évident que AHCI permet d’atteindre de meilleure performance que le mode “Compatible” Parallel ATA. Il reste à savoir pourquoi Supermicro a cru qu’il serait préférable de mettre la valeur par défaut à “Compatible” au lieu de “AHCI”. J’ai d’ailleurs vérifié nos autres serveurs Supermicro plus récents, X9 et X10, tous utilisent AHCI par défaut.

Il est possible de rapidement vérifier si votre serveur utilise AHCI en exécutant la commande suivante sous Linux:

lsmod

Si le module “ahci” est listé par la commande “lsmod”, votre équipement utilise bien AHCI.

Résultats

Voici le résultat de nos tests qui permet de comparer la différence de performance entre les trois modes de fonctionnement. En utilisant AHCI au lieu du mode IDE, on observe un gain de performance de 38 %.

SQLite - Timed SQLite Insertions
( plus petit c’est mieux)

  • IDE Enhance: 1708.55 seconds
  • AHCI BIOS Native Mode: 794.92 seconds
  • Intel AHCI ROM: 558.98 seconds

FS-Mark - 1000 Files, 1MB Size
( plus grand c’est mieux)

  • IDE Enhance: 9.93 Files/s
  • AHCI BIOS Native Mode: 11.87 Files/s
  • Intel AHCI ROM: 13.8 Files/s

Threaded I/O Tester - 64MB Random Read - 32 Threads
( plus grand c’est mieux)

  • IDE Enhance: 1252.83 MB/s
  • AHCI BIOS Native Mode: 1265.55 MB/s
  • Intel AHCI ROM: 1303.47 MB/s

Threaded I/O Tester - 64MB Random Write - 32 Threads
( plus grand c’est mieux)

  • IDE Enhance: 0.59 MB/s
  • AHCI BIOS Native Mode: 0.97 MB/s
  • Intel AHCI ROM: 1.08 MB/s

Apache Benchmark - Static Web Page Serving
( plus grand c’est mieux)

  • IDE Enhance: 15908.64 Requests/s
  • AHCI BIOS Native Mode: 15546.63 Requests/s
  • Intel AHCI ROM: 15730.01 Requests/s