Comment datatables dans / proc / * sont-elles collectées et dans quelle mesure est-elle fiable?

Récemment, j'ai travaillé avec un outil de surveillance de cluster (ganglia) qui agrège les mésortingques système de /proc/* sur chaque machine.

  1. Comment datatables dans /proc/* sont-elles collectées?
    Qui écrit datatables là-bas? À quelle fréquence datatables sont-elles mises à jour?
  2. Puis-je régler la façon dont il est recueilli afin qu'il soit plus précis?

http://www.tldp.org/LDP/Linux-Filesystem-Hierarchy/html/proc.html

/ proc est très spécial en ce sens que c'est aussi un système de files virtuel. Il est parfois appelé un système pseudo-file d'informations de process. Il ne contient pas de files «réels», mais des informations système d'exécution (par exemple, memory système, périphériques montés, configuration matérielle, etc.). Pour cette raison, il peut être considéré comme un centre de contrôle et d'information pour le kernel. En fait, un grand nombre d'utilitaires système sont simplement des appels à des files dans ce directory. Par exemple, 'lsmod' est identique à 'cat / proc / modules', alors que 'lspci' est synonyme de 'cat / proc / pci'. En modifiant les files situés dans ce directory, vous pouvez même lire / modifier les parameters du kernel (sysctl) pendant l'exécution du système.

En d'autres termes, il s'agit d'informations en time réel directement à partir du kernel / etc, pas de files mis à jour périodiquement.

Les données dans /proc ne sont pas mises à jour du tout. Il est généré à la request.

Lorsque vous lisez depuis /proc (ou même depuis n'importe quel file), vous appelez dans le kernel. Si vous lisez un file "réel", le kernel (sous réserve de caching, d'permissions, etc.) traverse le système de files et récupère datatables que vous avez demandées. Si vous lisez un /proc , le kernel générera datatables pertinentes à la volée.

Cette technique est devenue assez populaire et est maintenant largement utilisée dans différents domaines du système de files. Par exemple, le /sys de files virtuel /sys est très similaire à /proc d'un sharepoint vue architectural, bien que le contenu soit entièrement différent. Sur les systèmes modernes, vous pouvez constater que /dev est aussi un système de files virtuel , car il est par ailleurs assez pénible de garder les files dans /dev à jour avec les réalités matérielles. Certains services userland fournissent leurs propres filesystems virtuels via FUSE .

Les files dans /proc sont principalement implémentés en tant que pilotes de périphériques. Ils sont essentiellement implémentés de la même manière que les périphériques série ( /dev/ttyS* ) sauf qu'au lieu de renvoyer datatables du matériel, le programmeur renvoie datatables générées par son programme.

D'une certaine façon, c'est similaire à un server Web. Seulement, au lieu d'écouter un socket tcp et de répondre, les files /proc sont des pilotes de périphériques qui écoutent les requests de lecture et répondent.

Il n'y a rien dans la design des pilotes de kernel Unix qui force les nœuds de périphériques à être montés uniquement dans /dev donc les gens ont eu l'occasion de développer et de standardiser le /proc pour contenir les périphériques virtuels qui renvoient des informations d'exécution. De nos jours, le kernel Linux inclut des methods dédiées pour gérer les pilotes /proc .

Voici un article sur les pilotes de périphériques qui inclut un exemple de pilote /proc : http://www.linuxdevcenter.com/pub/a/linux/2007/07/05/devhelloworld-a-simple-introduction-to-device- drivers-under-linux.html