Como os dados em / proc / * são reunidos e quão confiável é isso? [duplicado]

5

Recentemente, tenho trabalhado com uma ferramenta de monitoramento de cluster (gânglio) que agrega métricas do sistema de /proc/* em cada máquina.

  1. Como os dados em /proc/* são reunidos?
    Quem escreve os dados lá? Com que frequência os dados são atualizados?
  2. Posso ajustar a maneira como ela é reunida para que seja mais precisa?
por syko 16.12.2015 / 04:24

3 respostas

11

link

/proc is very special in that it is also a virtual filesystem. It's sometimes referred to as a process information pseudo-file system. It doesn't contain 'real' files but runtime system information (e.g. system memory, devices mounted, hardware configuration, etc). For this reason it can be regarded as a control and information centre for the kernel. In fact, quite a lot of system utilities are simply calls to files in this directory. For example, 'lsmod' is the same as 'cat /proc/modules' while 'lspci' is a synonym for 'cat /proc/pci'. By altering files located in this directory you can even read/change kernel parameters (sysctl) while the system is running.

Em outras palavras, esta é uma informação em tempo real diretamente do kernel / etc, não arquivos que são atualizados periodicamente.

    
por 16.12.2015 / 04:29
1

Os dados em /proc não são atualizados. É gerado sob demanda.

Quando você lê /proc (ou mesmo de qualquer arquivo), você está chamando o kernel. Se você estiver lendo um arquivo "real", o kernel irá (sujeito a cache, permissões, etc.) atravessar o sistema de arquivos e recuperar os dados que você requisitou. Se você estiver lendo um arquivo /proc ", o kernel gerará os dados relevantes imediatamente.

Essa técnica se tornou bastante popular e agora é amplamente usada em diferentes áreas do sistema de arquivos. Por exemplo, o /sys virtual filesystem é muito semelhante a /proc do ponto de vista arquitetônico, embora o conteúdo seja inteiramente diferente. Em sistemas modernos, você pode achar que /dev também é um um sistema de arquivos virtual , já que é de outra forma doloroso manter o arquivos em /dev atualizados com realidades de hardware. Alguns serviços do usuário fornecem seus próprios sistemas de arquivos virtuais através do FUSE .

    
por 16.12.2015 / 07:30
0

Os arquivos em /proc são geralmente implementados como drivers de dispositivo. Eles são basicamente implementados de maneira similar aos dispositivos seriais ( /dev/ttyS* ), exceto que, em vez de retornar dados do hardware, o programador retorna dados gerados pelo seu programa.

De certa forma, é semelhante a um servidor da web. Apenas, em vez de ouvir um soquete tcp e responder, /proc arquivos são drivers de dispositivos que escutam solicitações de leitura e respondem.

Não há nada no design dos drivers de kernel Unix que força os nós de dispositivo a serem montados somente em /dev , portanto as pessoas aproveitaram a oportunidade para desenvolver e padronizar o diretório /proc para conter dispositivos virtuais que retornam algumas informações de tempo de execução . Atualmente, o kernel do Linux inclui métodos dedicados para lidar com /proc drivers.

Veja um artigo sobre drivers de dispositivos que inclui um exemplo de um driver /proc : link

    
por 16.12.2015 / 07:52

Tags