PHP APC e Linux “livre” interpretação [duplicado]

3

Meu entendimento da saída de livre é que os valores de buffer / cache são um verdadeiro reflexo da memória disponível.

Eu atribuí 512M ao cache opcode do PHP APC e, embora esteja utilizando tudo isso, a saída do free permanece a mesma.

Eu sei que a questão está no meu entendimento (ou falta dela) de gerenciamento de memória. Alguém pode me dar algumas dicas sobre isso?

ATUALIZAÇÃO:

Meu entendimento da memória vem do estudo de montagem que fiz. O que (pelo menos eu acho) eu não sei é como o kernel Linux gerencia a memória.

Desde postar a pergunta eu li mais e meu entendimento é que, no nível mais simples, eles são como seus nomes sugerem - cache é o kernel espelhando arquivos para RAM para acesso mais rápido e que buffers são bits transitórios de informação sendo usado por processos individuais.

APC em execução (512M totalmente utilizado):

              total       used       free     shared    buffers     cached
Mem:           1498       1452         46          0         36        796
-/+ buffers/cache:         619        879

Imediatamente após reiniciar o PHP FPM com o APC desativado:

              total       used       free     shared    buffers     cached
Mem:           1498        776        721          0         36        285
-/+ buffers/cache:         454       1043

Ignorando o espaço de troca conforme permaneceu inalterado:

A linha um faz sentido para mim, a memória é liberada tanto da APC (512M) quanto dos trabalhadores PHP (721-46-512 = 163M). A memória atribuída para o cache não tem mais o APC para lidar e reduz em 796-285 = ~ 512M (ou isso é apenas uma coincidência?).

É a segunda linha que está me confundindo. Esses números são apenas quanto o kernel reservou para buffers e o restante é alocado para o cache, mesmo que não seja realmente usado atualmente? Isso faria sentido porque cai a mesma quantia que calculei como sendo usada pelo PHP, refletindo os trabalhadores PHP.

Se eu estiver correto, surge outra pergunta. O que é refletido pelos "buffers" na linha um?

    
por Arran Schlosberg 10.09.2012 / 13:00

1 resposta

0

              total       used       free     shared    buffers     cached
Mem:           1498        776        721          0         36        285
-/+ buffers/cache:         454       1043

A segunda linha, 454 = usado (776) - (buffers (36) + em cache (285))

1043 = livre (721) + (buffres (36) + em cache (285))

Os valores serão aproximados.

O que é o buffer?

link

    
por 15.02.2013 / 17:28