3.7. memory
O subsistema
memory
gera relatórios automáticos sobre recursos de memórias usados pelas tarefas em um cgroups e define limites em uso de memória por estas tarefas:
- memory.stat
- reporta um ampla classe de estatísticas de memória, conforme descrito na tabela:
Tabela 3.1. Valores reportados pela memory.stat Estatística Descrição cache
cache de página, incluindo tmpfs
(shmem
), em bytesrss
anônimo e cache de troca, não inclui o tmpfs
(shmem
), em bytesmapped_file
tamanho dos arquivos mapeados da memória mapeada, incluindo tmpfs
(shmem
), em bytespgpgin
números de páginas paginadas na memória pgpgout
número de páginas paginadas fora da memória swap
o uso de troca (swap), em bytes active_anon
anônimo e cache de troca (swap) na lista dos usados recentemente (LRU) ativa, incluindo tmpfs
(shmem
), em bytesinactive_anon
anônimo e cache de troca na lista LRU inativa, incluindo o tmpfs
(shmem
), em bytesactive_file
memória de back up de arquivo na lista LRU ativa, em bytes inactive_file
memória de back up de arquivo na lista LRU inativa, em bytes unevictable
memória que não pode ser recuperada, em bytes hierarchical_memory_limit
limite de memória para a hierarquia que contem o cgroup memory
, em byteshierarchical_memsw_limit
memória mais o limite de troca para a hierarquia que contém o cgroup memory
, em bytesAdicionalmente, cada um destes arquivos que não são ohierarchical_memory_limit
e ohierarchical_memsw_limit
possui um duplicado pré fixadototal_
que reporta não somente no cgroup mas também em todos os filhos. Por exemplo, oswap
reporta o uso de troca por um cgroup e ototal_swap
reporta o uso de troca total por um cgroup e todos seus filhos.Quando você interpretar os valores reportados pelomemory.stat
, observe que várias estatísticas são inter relacionadas:active_anon
+inactive_anon
= anonymous memory + file cache fortmpfs
+ swap cachePortanto oactive_anon
+inactive_anon
≠rss
, porque orss
não inclui otmpfs
.active_file
+inactive_file
= cache - size oftmpfs
- memory.usage_in_bytes
- reporta uso de memória atual total pelos processos nos cgroups (em bytes).
- memory.memsw.usage_in_bytes
- reporta a soma do uso atual de memória mais o espaço de troca usado por processos no cgroup (em bytes).
- memory.max_usage_in_bytes
- reporta o máximo de memória usada por processos nos cgroups (em bytes)
- memory.memsw.max_usage_in_bytes
- reporta a quantidade máxima de memória e de espaço troca usados pelos processos no cgroup (em bytes).
- memory.limit_in_bytes
- define a quantia máxima de memória de sistema (incluindo arquivo de cache). Se nenhuma unidade é especificada, o valor é interpretado como bytes. Entretanto, é possível usar sufixos para representar unidades maiores —
k
ouK
para kilobytes,m
ouM
para Megabytes, eg
ouG
para Gigabytes.Você não usar omemory.limit_in_bytes
para limitar o cgroup root; você pode somente aplicar valores nos cgroups abaixo na hierarquia.Digite-1
para omemory.limit_in_bytes
para remover quaisquer limites existentes. - memory.memsw.limit_in_bytes
- define a quantia máxima para a soma de memória e uso de troca. Se nenhuma unidade for especificada, o valor é interpretado como bytes. No entanto, é possível usar sufixos para representar unidades maiores —
k
ouK
para kilobytes,m
ouM
para Megabytes, eg
ouG
para Gigabytes.Você não pode usar omemory.memsw.limit_in_bytes
para limitar o cgrupo root; você pode somente aplicar valores a grupos abaixo na hierarquia.Digite-1
para omemory.memsw.limit_in_bytes
para remover quaisquer limites existentes. - memory.failcnt
- reporta o número de vezes que o limite de memória excedeu o valor definido no
memory.limit_in_bytes
. - memory.memsw.failcnt
- reporta o número de vezes que a memória mais limite de espaço de troca alcançou o valor definido no
memory.memsw.limit_in_bytes
. - memory.force_empty
- quando definido para
0
, esvazia a memória de todas as páginas usadas pelas tarefas neste cgroup. Esta interface pode ser usada somente quando o cgroup não possuir nenhuma tarefa. Se a memória não puder ser liberada, ela é movida para um cgroup pai se possível. Use omemory.force_empty
antes de remover um cgroup para evitar páginas de cache fora de uso para o seu cgroup pai. - memory.swappiness
- define a tendência do kernel para permutar memória de processo usada por tarefas neste cgroup ao invés de requerer páginas do cache de páginas. Esta é a mesma tendência, calculada da mesma forma, que o conjunto em
/proc/sys/vm/swappiness
para o sistema como um todo. O valor padrão é60
. Valores mais baixos do que este diminuirão a tendência do kernel de permutar a memória do processo, e valores maiores que60
aumentam a tendência do kernel de permutar a memória do processo e valores maiores que100
permitem ao kernel permutar páginas que são parte do espaço de endereço dos processos neste cgroup.Observe que o valor0
não previne memória de processo a ser permutada; a permuta ainda acontece quando há escassez de memória do sistema porque o gerenciador lógico de memória virtual global não lê o valor do cgroup. Para bloquear páginas completamente, use omlock()
em vez de grupos.Você não pode mudar a permuta dos seguintes grupos:- o cgroup root, que usa a permuta definida em
/proc/sys/vm/swappiness
. - um cgroup que tem um grupo filho abaixo dele.
- memory.use_hierarchy
- contém um sinalizador (
0
ou1
) que especifica se o uso de memória deve ser contado por toda uma hierarquia de cgroups. Se ativado (1
) o subsistema de memória requererá memória do processo filho que exceda seu limite de memória. Por padrão (o
), o subsistema não requer memória para uma tarefa de um filho.