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.
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 .