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:
Expand Tabela 3.1. Valores reportados pela memory.stat Estatística Descrição cachecache de página, incluindo tmpfs(shmem), em bytesrssanônimo e cache de troca, não inclui o tmpfs(shmem), em bytesmapped_filetamanho dos arquivos mapeados da memória mapeada, incluindo tmpfs(shmem), em bytespgpginnúmeros de páginas paginadas na memória pgpgoutnúmero de páginas paginadas fora da memória swapo uso de troca (swap), em bytes active_anonanônimo e cache de troca (swap) na lista dos usados recentemente (LRU) ativa, incluindo tmpfs(shmem), em bytesinactive_anonanônimo e cache de troca na lista LRU inativa, incluindo o tmpfs(shmem), em bytesactive_filememória de back up de arquivo na lista LRU ativa, em bytes inactive_filememória de back up de arquivo na lista LRU inativa, em bytes unevictablememória que não pode ser recuperada, em bytes hierarchical_memory_limitlimite de memória para a hierarquia que contem o cgroup memory, em byteshierarchical_memsw_limitmemó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_limite ohierarchical_memsw_limitpossui um duplicado pré fixadototal_que reporta não somente no cgroup mas também em todos os filhos. Por exemplo, oswapreporta o uso de troca por um cgroup e ototal_swapreporta 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 orssnã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 —
kouKpara kilobytes,mouMpara Megabytes, egouGpara Gigabytes.Você não usar omemory.limit_in_bytespara limitar o cgroup root; você pode somente aplicar valores nos cgroups abaixo na hierarquia.Digite-1para omemory.limit_in_bytespara 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 —
kouKpara kilobytes,mouMpara Megabytes, egouGpara Gigabytes.Você não pode usar omemory.memsw.limit_in_bytespara limitar o cgrupo root; você pode somente aplicar valores a grupos abaixo na hierarquia.Digite-1para omemory.memsw.limit_in_bytespara 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_emptyantes 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/swappinesspara 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 que60aumentam a tendência do kernel de permutar a memória do processo e valores maiores que100permitem ao kernel permutar páginas que são parte do espaço de endereço dos processos neste cgroup.Observe que o valor0nã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 (
0ou1) 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.