Pour continuer nos expériences précédentes (voir les articles 1 et 2), je vous propose d’examiner les variations de temps d’accès en fonction de la saturation du TLB.
Nous allons poursuivre nos expériences de la semaine passée pour tenter d’observer des effets macroscopiques dus au comportement de la mémoire cache intégrée dans nos processeurs. Ces expériences sont inspirées par la lecture du texte d’Ulrich Drepper « What Every Programmer Should Know About Memory » que je recommande vivement. Les programmes présentés ci-dessous sont accessibles dans cette archive.
En parcourant l’excellent texte d’Ulrich Drepper « What Every Programmer Should Know About Memory » j’ai eu envie de vérifier si j’obtenais expérimentalement des résultats similaires à ceux qu’il présente. J’ai construit une série de petits programmes, qui accèdent de différentes manières à la mémoire et nous présentent des statistiques sur leurs temps d’exécution. Ils sont disponibles dans cette archive.
Depuis 2003, plusieurs ordonnanceurs se sont succédé dans le noyau Linux 2.6. Le dernier en date (apparu dans Linux 2.6.24) est le « CFS – Complete Fair Scheduler » autrement dit « l’ordonnanceur vraiment équitable ». Celui-ci garantit que le temps CPU disponible est réparti de manière équitable entre les différentes tâches. Ceci ne concerne naturellement que les tâches ordonnancées en temps-partagé, celles s’exécutant en temps-réel disposent de tout le temps-processeur qu’elles désirent (voir toutefois cet article…)
Une nouvelle édition de mon livre « Développement système sous Linux » vient de paraître aux éditions Eyrolles. Entièrement revu et mis à jour, ce livre traite de l’API (Application Programming Interface) disponible sous Linux. Cette nouvelle édition incopore des ajouts notables, comme les mécanismes IPC (Inter Process Communications) POSIX, la gestion des systèmes multi-processeurs et multi-coeurs, le système inotify, ou encore les jeux de caractères internationaux sur plusieurs octets.
Le code source des exemples accompagnant le livre est réparti en 32 sous-répertoires (un pour chaque chapitre), dans l’archive suivante : Developpement-systeme-sous-Linux.tar.gz.