logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#1 06-06-2016 12:20:59

Proteos
Membre
Distrib. : Debian 8.4 Jessie
Noyau : 3.16.0-4 amd64
(G)UI : Kde
Inscription : 31-05-2016

Interprétation des ticks d'horloge par times()

Bien le bonjour,

J'aurais besoin d'un petit coup de pouce pour répondre à une question à laquelle je ne trouve pas d'explications.

Dans le cadre d'un petit test de mesure de la différence de performance entre l'écriture de fichiers via tampon et l'écriture en synchronisation tampon/disque j'écris dans un fichier via une boucle et je récupère les ticks d'horloges via l'appel système times et les résultats m'intriguent.

Voici le code (entre commentaires ce qui change entre les deux versions) :

#include <unistd.h>
#include <stdio.h>
#include <fcntl.h>
#include <sys/times.h>
#include <stdlib.h>

int main()
{
  char mem[1]={'c'};
  int d,i;
  struct tms temps;

  d = open("ff", O_WRONLY | O_CREAT /*| O_SYNC*/, 0644);
  if(d == -1)
  {
    perror("Impossible d'ouvrir le fichier !");
    exit(0);
  }

  for(i=0; i < 99999 /*999*/; ++i)
  {
    write(d,mem,1);
  }

  times(&temps);

  printf("Temps utilisateur : %d\n"
         "Temps noyau : %d\n"
         "Temps fils utilisateur : %d\n"
         "Temps fils noyau : %d\n",temps.tms_utime,temps.tms_stime,temps.tms_cutime,temps.tms_cstime);
  close(d);
  return 0;
}



Sur la sortie, on peut lire :

Cas 1 (sans O_SYNC et i < 99999) :
Temps utilisateur : 0
Temps noyau : 15
Temps fils utilisateur : 0
Temps fils noyau : 0

Cas 2 (avec O_SYNC et i < 999) :
Temps utilisateur : 0
Temps noyau : 4
Temps fils utilisateur : 0
Temps fils noyau : 0



Ce qui est très étrange, c'est que dans le premier cas, l'affichage est instantané pour 15 ticks d'horloge alors que dans le deuxième cas, l'affichage se fait après 3/4 secondes d'attente pour seulement 4 ticks d'horloge.

Mon cerveau perd actuellement beaucoup de son temps de calcul pour essayer de répondre à cette question et j'aimerais bien libérer la ressource pour la consacrer à d'autres activités.

Merci d'avance smile


Faut toujours regarder là où on ne va pas, car là où on va, on aura tout le temps de regarder quand on y sera.

Hors ligne

Pied de page des forums