Bonjour,
Je viens vous rapporter une petit retour d'experience plutot decevant.
On dit souvent que le RAID 0, c'est LA solution pour augmenter considerablement les performance lecture/ecriture sur les disques En réalité, dans certains cas, il y a de très grosses améliorations, mais qu'en est il pour une utilisation classique sous windows ?
Je viens de monter la configuration suivante :
Serveur HP Proliant ML 350 (2Go de RAM à 800Mhz, Xeon dual core 2Mo de cache, carte RAID materiel E200 64Mo de cache + 4 disques 500Go en RAID 0 sous Windows Server 2003 SP1), belle bete me direz vous, c'est dailleurs pour ca que je poste ici, puisque il n'est pas donné à tout le monde de faire des test sur ce genre de matos qui coute un bras.
Une fois l'installation de windows terminée, je me jette sur HDtach et lance un long bench ! Resultats impressionants : + de 220Mo/s. Je lance ensuite un test perso. J'ecrit un petit bout de code en C qui ouvre une vingtaine de fichier d'un Go. En voici le code simpliste :
int main()
{
unsigned char *bin= new unsigned char[1024*1024];
for (int i =0; i<20; i++)
{
char tmp[256];
sprintf(tmp,"%d.bin",i);
FILE *f=fopen(tmp,"wb" );
printf("Fichier %d\n",i);
if (f)
{
for (int j=0; j<1024; j++)
fwrite(bin,1024*1024,1,f);
fclose(f);
}
}
return 0;
}
Et la, je m'appercoit que les performances en ecritures sont 3 fois plus lentes que sur un seul disque sans RAID. Je réecrit le même programme avec les fonctions de l'API Windows CreateFile et WriteFile, pour voir si ca change, en changeant à chaque compilation quelques parametres, mais absolument aucun gain !
J'imaginais que le driver de la carte allait envoyer dans la mémoire cache de la carte (64Mo) les données, et qu'une fois pleine, elle allait charger ca comme une bete sur les disque, mais il n'en est rien. Pas de tampons non plus dans la RAM du serveur avant d'envoyer tout ca au controleur raid.
Il existe dailleur une fonction dans le BIOS de ce serveur qui s'apelle le WriteCache : Extremement deconseillée, une siple coupure de courant et tout ce qu'il y a ds le cache est perdu., fichié resté ouvert etc ...
J'en déduis que les programmes qui utilisent comme moi les API windows pour lire/ecrire sur le disque dur ou les fonctions de la bibliotheque standard, ne verront aucun gain en performance, et que même si plusieurs thread allaient lire/ecrire sur le disque dur en même temps, la bande passante du volume logique ne serait pas utilisable à cause des deplacement excessifs des tetes de lectures.
Alors en sachant que le RAID 0 peut vous faire tout perdre dès qu'un disque dur flambe, l'interet de passer en raid 0 dans une utilisation standard n'a pas l'air tres interesante.
Qu'en pensez vous ?