merci tous pour vos réponses. Voici les modifications que j'ai faite à mon code.

Envoyé par
gangsoleil
Bonjour,
As-tu essaye de diminuer drastiquement le nombre de lectures (10 lectures de 1Go par exemple) ?
Oui j'ai même essayé de lire des blocs de la même taille que le buffer mais sa change rien.
Un gros buffer.
static char buffer[128*1024*1024]; //default buffer 128MB
Ouverture avec open, en limitant les effets de cache par la même occasion
int fd = open(fileNameR,O_RDONLY,O_DIRECT|O_LARGEFILE);
Je sais que ne pas utiliser le cache n'est pas une bonne chose mais le but est pour le moment de tester la vitesse de lecture d'un disque SSD en PCI-Express qui est censé fournir 16 Gb/s de lecture.
Pour la lecture, je peux faire varier la taille des blocs mais j'ai pas remarqué de différences majeurs.
v = read(fd,buffer,blk_size);
Qu'en pensez-vous ? J'ai aussi vu la fonction readv() qui permet d'utiliser plusieurs buffer ? Pensez-vous que sa pourrais aider ?
Niveau processeur, il n'est pas du tout surchargé donc je ne sais pas ou est le soucis...
ps: je suis en train de faire le même code avec mmap si jamais.
Partager