procinfo - tentando entender como os dados são coletados

1

Edit: Estou pensando em marcar essa pergunta como respondida desde que percebi que estava muito confuso com o fato de que o tamanho dos arquivos era zero. Isso me fez ter um peido cerebral e pânico. Depois de ler as respostas abaixo, percebi que muitas vezes eu li esses arquivos antes, mas nunca me ocorreu para verificar seus arquivos. Portanto, minha pergunta é enganosa. Eu deveria ter perguntado apenas porque os tamanhos dos arquivos eram apenas 0.

Esta não é uma questão de perder ram - mas pode ser uma questão sobre tamanhos de arquivo de 0. Estou olhando para arquivos que têm tamanho de arquivo zero porque eles são aliases para dados em memória RAM, em vez de no disco?

Eu entendo que o procinfo reúne informações do diretório / proc em uma caixa linux. Mas dei uma olhada nesse diretório e não consigo descobrir quais arquivos ele realmente consulta. Parece que a maioria dos arquivos é de 0 bytes. O que é realmente estranho é que um arquivo em particular, kcore, esteja listado como 128T no meu sistema.

Eu li que o kcore representa a quantidade de memória RAM no meu sistema, mas tenho certeza que não tenho 128T de memória ram (tenho 12GB). Eu dei uma olhada em um segundo servidor que eu reiniciei e o arquivo era 884M (esse servidor tem 1GB de memória RAM).

Acredito que, quer o kcore esteja sendo usado ou não, o procinfo está fornecendo estatísticas baseadas em dados do RAM. E acredito que isso é verificado pela inabilidade do procinfo em manter os dados após uma reinicialização.

Eu tenho duas perguntas:

  1. Alguém se importaria em esclarecer esses suposições e adicionar alguns úteis observações sobre este desempenho ferramenta?

  2. O que é o kcore se não é um representação do carneiro no meu sistema (como eu li)?

por Patrick R 24.02.2010 / 23:34

4 respostas

2

Para responder à pergunta sobre por que os arquivos em proc exibem 0 tamanho de byte:

Arquivos sob / proc não são arquivos regulares, mas simulados pelo kernel. Seu conteúdo pode (e vai mudar) constantemente, então não há noção útil de "tamanho do arquivo" (como o tamanho muda constantemente). Essa é provavelmente a razão pela qual o sytem os mostra como "tamanho 0".

    
por 25.02.2010 / 03:56
2

Muitos dos arquivos em /proc estão listados por ls como tendo zero bytes, mas se você cat eles mostrarão algumas informações.

$ ls -l /proc/$$/status
-r--r--r-- 1 user user 0 2010-02-24 19:45 /proc/25440/status
$ cat /proc/$$/status
Name:   bash
State:  S (sleeping)
Tgid:   25440
Pid:    25440
PPid:   25439
TracerPid:      0
etc.

(onde $$ é resolvido pelo shell para o PID atual)

    
por 25.02.2010 / 02:48
1

/ proc / kcore não está sendo usado pelo procinfo. Observe que um usuário normal pode executar procinfo bem, enquanto eles normalmente não são capazes de ler o kcore.

Tem certeza de que leu corretamente o tamanho de / proc / kcore? verifique o tamanho com ls -lh e compare com os valores de free

Dê uma olhada em man proc para uma explicação detalhada de cada entrada. Há muita redundância, mas o uso de memória pode ser extraído de /proc/meminfo , médias de carga de /proc/loadavg e dados de IRQ de /proc/interrupts .

Para o seu segundo servidor, existe uma configuração do kernel no x86 "High Memory Support" que, se não habilitado, limitará sua memória física a um pouco mais de 800MB, talvez você seja afetado por isso?

    
por 25.02.2010 / 00:29
0

O / poc / kcore representa a memória MAX que seu sistema pode manipular. No seu caso, você está executando um sistema operacional de 64 bits, o que significa que você pode ter 128 TB de mem.

    
por 24.01.2013 / 08:40

Tags