2009-11-23 3 views
4

J'ai un projet pour l'école où je dois trouver combien de cache manque un système de fichiers aura sous des charges lourdes et légères et sur une machine à plusieurs processeurs. Après en avoir discuté avec mon professeur, je suis venu avec un plan d'exécution de base:Déterminer les échecs de cache pour divers systèmes de fichiers

  1. Créez un programme qui va encombrer le système de fichiers et remplir le cache tampon.
  2. Utilisez un outil d'analyse comparative du système pour enregistrer le nombre d'échecs d'antémémoire. Rincer et répéter avec de nouvelles conditions.

Mais étant nouveau pour la conception du système d'exploitation, je ne suis pas sûr de savoir comment procéder. Donc, voici quelques points où j'ai besoin de certains help:

  1. Quelles actions effectuer un programme idéal pour remplir le cache tampon? Actuellement, le programme que j'ai écrit lit et écrit dans plusieurs fichiers différents, x fois.
  2. Quels sont les outils qui enregistrent le nombre d'échecs d'antémémoire? J'ai regardé dans oprofile mais je ne pense pas qu'il surveille le cache de tampon du système de fichiers. Mais j'ai trouvé ce list qui semble prometteur.
  3. D'autres processus en cours affecteront-ils ces tests de performance?

Merci pour votre aide!

+0

Sur quel système d'exploitation travaillez-vous? Les différents OS utiliseront différents outils. –

+0

J'utilise Ubuntu 9.10 (ext4) pour commencer, mais j'aimerais aussi tester ext2, ext3 et zfs. Ext2 et ext3, je vais tester sur une ancienne version d'Ubuntu et j'utiliserai OpenSolaris pour ZFS. – vrish88

Répondre

2

1) Si vous essayez de tester les performances de votre système de fichiers, lancez plusieurs threads qui manipulent de grandes quantités de métadonnées de fichiers à côté de vos threads d'E/S. De même, lorsque vous effectuez des E/S dans plusieurs threads parallèles, mélangez les threads en effectuant des transferts de grande taille et les threads en effectuant des transferts de petite taille. De nombreux systèmes de fichiers fusionneront de petites opérations d'E/S en plus grandes requêtes que le disque physique peut gérer plus rapidement, et le mélange d'E/S de différentes tailles peut aider à remplir le cache plus rapidement (puisqu'il doit E/S). 2) Soyez prudent avec cette liste d'outils, beaucoup semblent être conçus pour fonctionner sur des périphériques bruts et non à travers la couche du système de fichiers (donc les résultats que vous obtiendrez pourraient ne pas représenter ce que vous pensez qu'ils font). Si vous cherchez un outil pour référencer un système de fichiers particulier, il vaut mieux vérifier auprès de l'équipe de développement de ce système de fichiers. Ils peuvent très probablement vous pointer vers l'outil qu'ils ont utilisé pour comparer leur FS pendant le développement, même s'il s'agit d'un outil personnalisé développé en interne.

3) Oui, tout ce qui est en cours d'exécution et qui pourrait accéder au système de fichiers testé peut avoir un impact sur vos résultats. Vous souhaiterez peut-être créer un système de fichiers distinct à utiliser uniquement pour ce test et désactiver les analyses en arrière-plan qui pourraient tenter d'y accéder pendant que vous exécutez vos tests.

0

C'est une question intéressante. Peut être je peux vous donner une réponse partielle.

Vous devez savoir que Linux a plusieurs caches liées aux systèmes de fichiers qui peuvent avoir différents outils

  • Inode cache
  • Dentry cache
  • bloc cache

Une façon est de calculer (deviner?) combien de trafic au niveau du bloc vos opérations devraient générer, puis mesurez les opérations réelles du bloc (lectures, écritures, recherches) avec blktrace.

Je ne suis pas au courant d'un moyen de lire l'état d'absence de cache du cache inode et dentry. J'aimerais vraiment que l'on me dise que j'ai tort.

Le plus difficile est d'annoter le cache inode et de dénuder le cache avec ses propres compteurs, mais ces caches sont assez durs.

Questions connexes