Quão confiáveis são os dados do processo em / proc / *? [duplicado]

0

Apesar do título semelhante, isso não é uma duplicata de esta questão . Eu sei que /proc é gerado na hora, mas estou curioso, se fork , evecve e a terminação do processo tiverem a garantia de serem vistos por todos os outros processos imediatamente .

Obviamente, o kernel sabe tudo, mas eu gostaria de ver explicitamente declarado que as informações apresentadas estão sempre atualizadas. Eu poderia imaginar que o kernel pode optar por minimizar a sobrecarga de sincronização ou o que for por meio de atualizações em lote para algumas estruturas internas usadas para /proc .

Isso parece improvável, mas há um problema com nosso código, que pode ser explicado por isso. É indevido ler /proc para uma "verificação de instância única" (que é complicada e IMHO claramente errada). Quando duas instâncias começam quase ao mesmo tempo, então obviamente pode acontecer, que cada uma vê a si mesma e a outra instância e ambas reclamam. No entanto, parece que o problema oposto (nenhuma queixa de instância) acontece com nossos clientes.

Esclarecimento

O doc afirma que "Para tornar a contabilidade escalável, as informações relacionadas ao RSS são tratadas em um forma assíncrona e o valor pode não ser muito preciso ". Analogamente, toda a lista de processos pode ser tratada de forma assíncrona e é isso que eu gostaria de ver claramente refutada. Um

Esta resposta diz que

Most (if not all) files in the /proc filesystem are special files, their content at any given moment reflect the actual OS/kernel data at that very moment, they're not files with contents periodically updated.

Mas não diz se "a maioria" inclui o que me interessa, nem afirma ser uma resposta autoritativa .

    
por maaartinus 23.04.2018 / 03:21

0 respostas