Guia de administração do sistema: gerenciamento de recursos Oracle Solaris Containers e Oracle Solaris Zones

Capítulo 10 Controle da memória física usando o resource capping daemon (visão geral)

O resource capping daemon rcapd permite que você regule o consumo da memória física através de processos executados em projetos que têm limites de recursos definidos.

Solaris 10 8/07: Se estiver executando regiões no sistema, você pode usar rcapd a partir da região global para regular o consumo da memória física em regiões não globais. Consulte o Capítulo 18Planejamento e configuração de regiões não globais (tarefas).

Os tópicos a seguir são tratados neste capítulo.

Para procedimentos que usam o recurso rcapd, consulte o Capítulo 11Administração do resource capping daemon (tarefas).

O que há de novo no controle da memória física com o uso do resource capping daemon?

Solaris 10: Você agora pode usar o comando projmod para definir o atributo rcap.max-rss no arquivo /etc/project.

Solaris 10 11/06: Foram adicionadas informações sobre a ativação e a desativação do resource capping daemon como um recurso de gerenciamento de serviço (SMF) no Solaris.

Para obter uma lista completa dos novos recursos do Solaris 10 e uma descrição das versões do Solaris, consulte Novidades no Oracle Solaris 10 9/10.

Introdução ao resource capping daemon

Um limite de recurso é uma limitação superior aplicada ao consumo de um recurso, como a memória física. Há suporte para limites de memória física por projeto.

O resource capping daemon e seus utilitários associados fornecem mecanismo para a aplicação e a administração do limite de recurso da memória física.

Como o controle de recursos, o limite de recurso pode ser definido pelo uso de atributos de entrada de projeto no banco de dados project. No entanto, enquanto os controles de recursos são aplicados sincronicamente pelo kernel, os limites de recurso são aplicados assincronicamente no nível de usuário pelo resource capping daemon. Com a aplicação assíncrona, ocorre um pequeno atraso como resultado do intervalo de amostragem usado pelo daemon.

Para obter informações sobre rcapd, consulte a página do manual rcapd(1M) Para obter informações sobre projetos e o banco de dados project, consulte o Capítulo 2Projetos e tarefas (visão geral) e a página do manual project(4). Para obter informações sobre controles de recursos, consulte o Capítulo 6Controles de recursos (visão geral).

Como funciona o resource capping

O daemon faz repetidamente amostras da utilização de recursos de projetos que têm limites de memória física. O intervalo de amostragem usado pelo daemon é especificado pelo administrador. Para obter informações adicionais, consulte Determinação de intervalos de amostra Quando a utilização da memória física do sistema excede o limiar de aplicação do limite, e outras condições são atendidas, o daemon atua para reduzir o consumo de recursos do projeto com limites de memória nos níveis de memória ou abaixo deles.

O sistema da memória virtual divide a memória física em segmentos conhecidos como páginas. Páginas são a unidade fundamental da memória física no subsistema de gerenciamento da memória do Solaris. Para ler dados de um arquivo na memória, o sistema da memória virtual lê uma página por vez, ou pagina um arquivo. Para reduzir o consumo de recursos, o daemon pode despaginar, ou realocar, páginas não usadas com freqüência para um dispositivo de permuta, que é uma área fora da memória física.

O daemon gerencia a memória física regulando o tamanho do conjunto residente da carga de trabalho de um projeto em relação ao tamanho de seu conjunto de trabalho. O conjunto residente é o conjunto de páginas residentes na memória física. O conjunto de trabalhos é o conjunto de páginas que a carga de trabalho usa ativamente durante o ciclo de processamento. O conjunto de trabalho muda com o tempo, dependendo do modo de operação do processo e do tipo de dados que estão sendo processados. Idealmente, toda carga de trabalho tem acesso à memória física suficiente para permitir que seu conjunto de trabalho permaneça residente. No entanto, o conjunto de trabalho pode também incluir o uso de armazenamento de disco secundário para conter a memória que não caiba na memória física.

Somente uma instância de rcapd pode ser executada a qualquer tempo.

Atributo para limitar o uso da memória física em projetos

Para definir um limite de recurso da memória física para um projeto, estabeleça um limite do tamanho de conjunto residente (RSS) adicionando este atributo à entrada do banco de dados project:

rcap.max-rss

A quantidade total da memória física, em bytes, que está disponível para processos no projeto.

Por exemplo, a linha seguinte no arquivo /etc/project define um limite RSS de 10 gigabytes para um projeto chamado db.


db:100::db,root::rcap.max-rss=10737418240

Observação –

O sistema pode arredondar o valor de limite especificado para um tamanho de página.


Você pode usar o comando projmod para definir o atributo rcap.max-rss no arquivo /etc/project:


# projmod -s -K rcap.max-rss=10GB db

O arquivo /etc/project então contém a linha:


db:100::db,root::rcap.max-rss=10737418240

Configuração de rcapd

Você usa o comando rcapadm para configurar o resource capping daemon. Você pode executar as seguintes ações:

Para configurar o daemon, você deve ter privilégios de superusuário ou ter o perfil Gerenciamento de processo na lista de perfis. As funções Gerenciamento de processo e Administrador de sistema incluem o perfil Gerenciamento de processo.

Alterações de configuração podem ser incorporadas ao rcapd de acordo com o intervalo da configuração (consulte Intervalos de operação de rcapd) ou por demanda enviando-se um SIGHUP (consulte a página do manual kill(1)).

Se usado sem argumentos, rcapadm exibe o status atual do resource capping daemon, se foi configurado.

As subseções a seguir discutem a aplicação de limite, os valores de limite e os intervalos de operação de rcapd.

Uso do resource capping daemon em um sistema com regiões instaladas

Você pode controlar o uso do tamanho do conjunto residente (RSS) definindo o recurso capped-memory ao configurar a região. Para obter mais informações, consulte Solaris 10 8/07: controle da memória física e o recurso capped-memory. Você pode executar rcapd em uma região, inclusive a região global, para aplicar limites de memória em projetos nessa região.

Você pode definir um limite provisório da quantidade máxima de memória que pode ser consumida em uma região específica, até a próxima reinicialização. Consulte Como especificar um limite de recurso provisório de uma região.

Se você estiver usando rcapd em uma região para regular o consumo da memória física através de processos executados em projetos com limites de recursos definidos, é necessário configurar o daemon nessa região.

Ao escolher limites de memória para aplicativos em regiões diferentes, geralmente você não precisa levar em consideração que os aplicativos residem em regiões diferentes. A exceção é serviços por região. Serviços por região consomem memória. Este consumo de memória deve ser levado em consideração ao determinar a quantidade da memória física de um sistema, assim como limites de memória.


Observação –

Não é possível executar rcapd em uma região com marca lx. No entanto, é possível usar o daemon a partir da região global para limitar a memória na região com marca.


Limiar de aplicação de limitação de memória

O limiar de aplicação de limitação de memória é a porcentagem da utilização da memória física no sistema que aciona a aplicação da limitação. Quando o sistema excede esta utilização, limites são aplicados. A memória física usada por aplicativos e pelo kernel está incluída nesta porcentagem. A porcentagem da utilização determina como os limites de memória são aplicados.

Para aplicar limites, a memória pode ser despaginada das cargas de trabalho do projeto.

Uma carga de trabalho é permitida para usar a memória física até seu limite. Uma carga de trabalho pode usar memória adicional desde que a utilização da memória do sistema esteja abaixo do limiar da aplicação do limite de memória.

Para definir o valor para a aplicação do limite, consulte Como definir o limiar de aplicação de limite de memória.

Determinação de valores de limite

Se um limite de projeto for definido muito baixo, talvez não haja memória suficiente para a carga de trabalho continuar efetivamente em condições normais. A paginação que ocorre devido à carga de trabalho requerer mais memória tem um efeito negativo sobre o desempenho do sistema.

Projetos que têm limites definidos muito altos podem consumir memória física disponível antes de seus limites serem excedidos. Neste caso, a memória física é efetivamente gerenciada pelo kernel e não por rcapd.

Ao determinar limites em projetos, leve em consideração os fatores abaixo.

Impacto sobre o sistema de E/S

O daemon pode tentar reduzir o uso da memória física da carga de trabalho de um projeto sempre que o uso de amostrar exceder o limite do projeto. Durante a aplicação do limite, são usados os dispositivos de permuta e outros dispositivos que contêm arquivos que a carga de trabalho mapeou. O desempenho dos dispositivos de permuta é um fator crucial na determinação do desempenho de uma carga de trabalho que rotineiramente excede seu limite. A execução da carga de trabalho é semelhante a sua execução em uma máquina com a mesma quantidade de memória física que o limite da carga de trabalho.

Impacto sobre o uso da CPU

O uso da CPU do daemon varia com o número de processos nas cargas de trabalho do projeto que está limitando e com os tamanhos dos espaços de endereço das cargas de trabalho.

Uma pequena parte do tempo da CPU do daemon é gasta na amostragem do uso de cada carga de trabalho. A adição de processos a cargas de trabalho aumenta o tempo gasto na amostragem do uso.

Outra parte do tempo da CPU do daemon é gasto na aplicação de limites quando são excedidos. O tempo gasto é proporcional à quantidade da memória virtual envolvida. O tempo gasto da CPU aumenta ou diminui em resposta às alterações correspondentes no tamanho total do espaço de endereço de uma carga de trabalho. Estas informações são relatadas na coluna vm da saída de rcapstat. Para obter mais informações, consulte Monitorização da utilização de recursos com rcapstat e a página do manual rcapstat(1).

Relato de memória compartilhada

O daemon rcapd relata o RSS das páginas da memória que são compartilhadas com outros processos ou mapeadas várias vezes dentro do mesmo processo como uma estimativa razoavelmente precisa. Se os processos de diferentes projetos compartilham a mesma memória, então esta memória será incluída no total de RSS de todos os projetos que compartilham a memória.

A estimativa é útil com cargas de trabalho, como bancos de dados que usam memória compartilhada amplamente. Para as cargas de trabalho de banco de dados, você também pode fazer uma amostragem do uso regular do projeto para determinar um valor de limite inicial adequado usando a saída das opções -J ou -Z do comando prstat. Para obter mais informações, consulte a página do manual prstat(1M)

Intervalos de operação de rcapd

Você pode ajustar os intervalos para as operações periódicas executadas por rcapd.

Todos os intervalos são especificados em segundos. As operações de rcapd e seus valores de intervalo padrão são descritos na tabela abaixo.

Operação 

Valor de intervalo padrão em segundos 

Descrição 

scan

15 

Número de segundos entre escaneamentos para processos que foram unidos a uma carga de trabalho do projeto ou dela separados. O valor mínimo é 1 segundo. 

sample

O número de segundos entre amostras do tamanho do conjunto residente e subseqüentes aplicações de limite. O valor mínimo é 1 segundo. 

report

5  

Número de segundos entre atualizações da estatística de paginação. Se definidas para 0, as estatísticas não são atualizadas e a saída de rcapstat não é atual.

config

60 

Número de segundos entre reconfigurações. Em um evento de reconfiguração, rcapadm lê o arquivo de configuração à procura de atualizações e examina o banco de dados do project à procura de limites de projeto novos ou revisados. O envio de um SIGHUP para rcapd causa uma reconfiguração imediata.

Para ajustar intervalos, consulte Como definir intervalos de operação.

Determinação de intervalos de escaneamento rcapd

O intervalo de escaneamento controla a freqüência com que rcapd procura novos processos. Em sistemas com muitos processos em execução, o escaneamento da lista leva mais tempo, por isso é preferível estender o intervalo para reduzir o tempo total gasto da CPU. No entanto, o intervalo de escaneamento também representa a quantidade mínima de tempo que um processo deve existir para ser atribuído a uma carga de trabalho limitada. Se houver cargas de trabalho que executam muitos processos breves, rcapd poderá não atribuir os processos a uma carga de trabalho se o intervalo de escaneamento foi estendido.

Determinação de intervalos de amostra

O intervalo de amostra configurado com rcapadm é a quantidade mais curta de tempo que rcapd aguarda entre a amostragem do uso de uma carga de trabalho e a aplicação de um limite, se for excedido. Se você reduzir esse intervalo, rcapd irá, na maioria das condições, aplicar limites com mais freqüência, resultando possivelmente em uma E/S aumentada devido à paginação. No entanto, um intervalo de amostra mais curto pode também diminuir o impacto que um aumento repentino no uso da memória física de uma carga de trabalho específica teria sobre outras cargas de trabalho. A janela entre as amostragens, em que a carga de trabalho pode consumir memória sem demora e possivelmente tomar a memória de outras cargas de trabalho limitadas, é reduzida.

Se o intervalo de amostra especificado para rcapstat for mais curto do que o intervalo especificado para rcapd com rcapadm, a saída de alguns intervalos poderá ser zero. Esta situação ocorre porque rcapd não atualiza estatísticas com mais freqüência do que o intervalo especificado com rcapadm. O intervalo especificado com rcapadm independe do intervalo de amostragem usado por rcapstat.

Monitorização da utilização de recursos com rcapstat

Use rcapstat para monitorar a utilização de recursos de projetos limitados. Para visualizar um relatório rcapstat de exemplo, consulte Produção de relatórios com rcapstat.

Você pode definir o intervalo de amostragem para o relatório e especificar o número de vezes que a estatística será repetida.

interval

Especifica o intervalo de amostragem em segundos. O intervalo padrão é 5 segundos.

count

Especifica o número de vezes que a estatística será repetida. Por padrão, rcapstat relata estatísticas até um sinal de término ser recebido ou até a saída do processo de rcapd.

As estatísticas de página no primeiro relatório emitido por rcapstat mostram a atividade desde que o daemon começou. Relatórios subseqüentes refletem a atividade desde que o último relatório foi emitido.

A tabela abaixo define os cabeçalhos de colunas em um relatóriorcapstat.

Cabeçalhos de colunas de rcapstat

Descrição 

id

O ID de projeto do projeto limitado. 

project

O nome do projeto. 

nproc

O número de processos no projeto. 

vm

A quantidade total do tamanho da memória virtual usado por processos no projeto, incluindo todos os arquivos e dispositivos mapeados, em kilobytes (K), megabytes (M) ou gigabytes (G). 

rss

A quantidade estimada do tamanho do conjunto residente (RSS) total dos processos no projeto, kilobytes (K), megabytes (M) ou gigabytes (G), sem incluir as páginas que são compartilhadas. 

cap

O limite de RSS definido para o projeto. Para obter informações sobre como especificar limites de memória, consulte Atributo para limitar o uso da memória física em projetos ou a página do manual rcapd(1M).

at

A quantidade total de memória que rcapd tentou despaginar desde a última amostra de rcapstat.

avgat

A quantidade média de memória que rcapd tentou despaginar durante cada ciclo de amostra que ocorreu desde a última amostra de rcapstat . A taxa na qual o RSS da coleção de amostras de rcapd pode ser definida com rcapadm. Consulte Intervalos de operação de rcapd.

pg

A quantidade total de memória que rcapd despaginou com êxito desde a última amostra de rcapstat.

avgpg

Uma estimativa da quantidade média de memória que rcapd despaginou com êxito durante cada ciclo de amostra que ocorreu desde a última amostra de rcapstat. A taxa na qual tamanhos de RSS do processo de amostras de rcapd podem ser definidos com rcapadm. Consulte Intervalos de operação de rcapd.

Comandos usados com rcapd

Referência de comandos 

Descrição 

rcapstat(1)

Monitora a utilização de recursos de projetos limitados. 

rcapadm(1M)

Configura o resource capping daemon, exibe o status atual do resource capping daemon, se já foi configurado, e ativa ou desativa limitação de recursos.  

rcapd(1M)

O resource capping daemon.