A funcionalidade de gerenciamento de recursos é um componente do ambiente do recipiente do Solaris. O gerenciamento de recursos permite que você controle como os aplicativos usam recursos de sistema disponíveis. Você pode:
Alocar recursos de computação, como tempo de processador
Monitorar como as alocações são usadas e, em seguida, ajustar as alocações, conforme necessário
Gerar informações de contabilidade estendida para análise, fatura e planejamento de capacidade
Este capítulo aborda os seguintes tópicos:
Os ambientes de computação modernos devem fornecer uma resposta flexível às variadas cargas de trabalho geradas por diferentes aplicativos em um sistema. Uma carga de trabalho é uma agregação de todos os processos de um aplicativo ou grupo de aplicativos. Se as facilidades de gerenciamento de recursos não forem usadas, o Solaris Operating System responderá às demandas das cargas de trabalho adaptando-se dinamicamente a novas solicitações de aplicativos. Esta resposta padrão em geral significa que todas as atividades no sistema recebem acesso igual a recursos. As facilidades de gerenciamento de recursos do Solaris permitem que você lide com cargas de trabalho individualmente. Você pode:
Restringir acesso a um recurso específico
Oferecer recursos a cargas de trabalho em uma base preferencial
Isolar cargas de trabalho de cada uma
A capacidade de minimizar comprometimentos de desempenho entre cargas de trabalho, juntamente com os recursos que monitorem uso e utilização, é chamada de gerenciamento de recursos. O gerenciamento de recursos é implementado através de uma coleção de algoritmos. Os algoritmos manipulam a série de solicitações de capacidade que um aplicativo apresenta ao longo de sua execução.
As facilidades de gerenciamento de recursos permitem que você modifique o comportamento padrão do sistema operacional com relação a diferentes cargas de trabalho. O comportamento se refere primeiramente ao conjunto de decisões tomadas por algoritmos do sistema operacional quando um aplicativo apresenta uma ou mais solicitações ao sistema. Você pode usar as facilidades do gerenciamento de recursos para fazer o seguinte:
Negar recursos ou preferir um aplicativo a outro para um maior conjunto de alocações do que de outro modo seria permitido
Lidar com determinadas alocações coletivamente, em vez de através de mecanismos isolados
A implementação de uma configuração de sistema que usa as facilidades de gerenciamento de recursos pode servir a diversos propósitos. Você pode:
Impedir que um aplicativo consuma recursos indiscriminadamente
Alterar a prioridade de um aplicativo com base em eventos externos
Equilibrar garantias de recursos a um conjunto de aplicativos com o objetivo de maximizar a utilização do sistema
Ao se planejar uma configuração gerenciada por recursos, há os seguintes requisitos-chave:
Identificação de cargas de trabalho concorrentes no sistema
Distinção de cargas de trabalho que não estão em conflito das cargas de trabalho com requisitos de desempenho que comprometem as cargas de trabalho principais
Após identificar cargas de trabalho cooperativas e conflitantes, você pode criar uma configuração de recurso que apresenta o menor comprometimento dos objetivos do serviço da atividade, dentro dos limites das capacidades do sistema.
Um gerenciamento de recursos eficaz é possibilitado no sistema do Solaris ao oferecer mecanismos de controle, mecanismos de notificação e mecanismos de monitoração. Várias dessas capacidades são fornecidas através de aprimoramentos dos mecanismos existente, como o sistema de arquivos proc(4), conjuntos de processadores e classes de agendamento. Outras capacidades são específicas do gerenciamento de recursos. Essas capacidades são descritas nos próximos capítulos.
Um recurso é qualquer aspecto do sistema de computação que pode ser manipulado com o propósito de alterar o comportamento do aplicativo. Assim, um recurso é uma capacidade que um aplicativo solicita implícita ou explicitamente. Se a capacidade for negada ou restringida, a execução de um aplicativo escrito robustamente se dá mais lentamente.
A classificação de recursos, em oposição à identificação de recursos, pode ser feita ao longo de diversos eixos. Os eixos podem ser solicitados implicitamente, em vez de explicitamente, com base no tempo, como o tempo da CPU, comparado com a independência do tempo, como compartilhamentos de CPU atribuídos, e assim por diante.
Em geral, o gerenciamento de recursos com base no agendador é aplicado a recursos que o aplicativo pode solicitar implicitamente. Por exemplo, para continuar a execução, um aplicativo solicita implicitamente tempo de CPU adicional. Para gravar dados em um soquete de rede, um aplicativo solicita implicitamente largura de banda. Restrições podem ser impostas ao uso total agregado de um recurso solicitado implicitamente.
Interfaces adicionais podem ser apresentadas, de modo que a largura de banda ou os níveis de serviço da CPU possam ser negociados explicitamente. Recursos solicitados explicitamente, como a solicitação de um segmento adicional, podem ser gerenciados por restrição.
Os três tipos de mecanismos de controle que estão disponíveis no Solaris Operating System são restrições, agendamento e partição.
Restrições permitem que o administrador ou o desenvolvedor de aplicativos definam limites no consumo de recursos específicos para uma carga de trabalho. Com limites conhecidos, a modelagem de cenários de consumo de recursos se torna um processo mais simples. Limites também podem ser usados para controlar aplicativos que se comportam mal e que de outro modo comprometeriam o desempenho do sistema ou a disponibilidade através de solicitações de recursos não reguladas.
As restrições apresentam complicações para o aplicativo. O relacionamento entre o aplicativo e o sistema pode ser modificado ao ponto de o aplicativo não poder mais funcionar. Uma abordagem que pode mitigar este risco é reduzir gradualmente as restrições a aplicativos com comportamento de recursos desconhecido. Os controles de recursos tratados no Capítulo 6Controles de recursos (visão geral) oferecem um mecanismo de restrição. Aplicativos mais novos podem ser escritos para reconheçam as restrições de recursos, mas nem todos os autores de aplicativos escolhem fazê-lo.
O agendamento se refere a fazer uma seqüência de decisões de alocações a intervalos específicos. A decisão feita é baseada em um algoritmo previsível. Um aplicativo que não necessita da alocação atual deixa os recursos disponíveis para uso por outros aplicativos. O gerenciamento de recursos com base em agendamento permite a utilização total de uma configuração pouco comprometida, ao mesmo tempo que fornece alocações controladas em um cenário criticamente comprometido ou comprometido em excesso. O algoritmo subjacente define como o termo “controlado” é interpretado. Em algumas instâncias, o algoritmo de agendamento pode garantir que todos os aplicativos tenham algum acesso ao recurso. O fair share scheduler (FSS), descrito no Capítulo 8Fair share scheduler (visão geral), gerencia o acesso de um aplicativo aos recursos de CPU de uma forma controlada.
A partição é usada para vincular uma carga de trabalho a um subconjunto dos recursos disponíveis do sistema. Essa vinculação garante que uma quantidade conhecida de recursos esteja sempre disponível para a carga de trabalho. A funcionalidade de grupos de recursos, descrita no Capítulo 12Grupos de recursos (visão geral), permite que você limite cargas de trabalho para subconjuntos específicos da máquina.
Configurações que usam partição podem evitar o comprometimento excessivo no sistema geral. No entanto, ao evitar esse comprometimento excessivo, a capacidade de se alcançar altas utilizações pode ser reduzida. Um grupo de recursos reservado, como processadores, não está disponível para uso por outra carga de trabalho quando a carga de trabalho vinculada a eles está ociosa.
Partes da configuração do gerenciamento de recursos podem ser colocadas em um serviço de nomes de rede. Esta função permite que o administrador aplique restrições de gerenciamento de recursos a uma coleção de máquinas, e não na base de uma máquina exclusivamente. Um trabalho relacionado pode compartilhar um identificador comum, e o uso agregado desse trabalho pode ser tabulado a partir de dados de contabilidade.
A configuração do gerenciamento de recursos e os identificadores orientados para cargas de trabalho são descritos com mais detalhes no Capítulo 2Projetos e tarefas (visão geral). A facilidade da contabilidade estendida que vincula esses identificadores com o uso de recursos de aplicativos é descrita no Capítulo 4Contabilidade estendida (visão geral).
As facilidades de gerenciamento de recursos podem ser usadas com o Solaris Zones para aprimorar ainda mais o ambiente do aplicativo. As interações entre essas facilidades e regiões são descritas nas seções aplicáveis neste guia.
Use o gerenciamento de recursos para assegurar que os aplicativos têm os tempos de resposta necessários.
O gerenciamento de recursos também pode aumentar a utilização de recursos. Ao categorizar e priorizar o uso, você pode usar com eficácia capacidade de reserva durante períodos fora de pico, com freqüência eliminando a necessidade de potência de processamento adicional. Você também pode assegurar que os recursos não sejam desperdiçados devido à variabilidade das cargas.
O gerenciamento de recursos é ideal para ambientes que consolidam diversos aplicativos em um único servidor.
O custo e a complexidade do gerenciamento de diversas máquinas incentiva a consolidação de vários aplicativos em servidores maiores e mais escaláveis. Em vez de executar cada carga de trabalho em um sistema separado, com total acesso aos recursos desse sistema, você pode usar o software de gerenciamento de recursos para segregar cargas de trabalho dentro do sistema. O gerenciamento de recursos permite que você baixe o custo total de propriedade ao executar e controlar diversos aplicativos diferentes em um único sistema do Solaris.
Se estiver fornecendo serviços de Internet e aplicativos, você pode usar o gerenciamento de recursos para fazer o seguinte:
Hospedar vários serviços Web em uma única máquina. Você pode controlar o consumo de recursos para cada site da Web e pode proteger cada site contra os excessos potenciais de outros sites.
Impedir que um script incorreto da interface de gateway comum (CGI) exaure os recursos da CPU.
Fazer com que um aplicativo que se comporte incorretamente pare de vazar toda a memória virtual disponível.
Assegurar que um aplicativo cliente não seja afetado por outro aplicativo cliente executado no mesmo site.
Fornecer níveis ou classes de serviço diferenciados na mesma máquina.
Obter informações de contabilidade para propósitos de fatura.
Use as facilidades de gerenciamento de recursos em qualquer sistema que tenha uma base de usuário grande e diversificada, como em uma instituição educacional. Se você tiver uma mistura de cargas de trabalho, o software pode ser configurado para dar prioridade a projetos específicos.
Por exemplo, em firmas de corretagem grandes, os corretores precisam constantemente de acesso rápido para executar uma consulta ou para fazer um cálculo. Outros usuários de sistema, no entanto, têm cargas de trabalho mais consistentes. Se você alocar uma quantidade proporcionalmente grande de potência de processamento aos projetos de agentes, os agentes terão a resposta de que necessitam.
O gerenciamento de recursos é também ideal para oferecer suporte a sistemas thin-client. Essas plataformas oferecem consoles sem informações de estado com buffers de quadro e dispositivos de entrada, como placas inteligentes. A computação atual é feita em um servidor compartilhado, resultando em um tipo de compartilhamento de tempo de ambiente. Use as facilidades de gerenciamento de recursos para isolar os usuários no servidor. Com isso, um usuário que gere carga excessiva não monopolizará recursos de hardware nem exercerá um impacto significativo sobre outros que usem o sistema.
O mapa de tarefas a seguir fornece uma visão geral de nível superior das etapas envolvidas na configuração do gerenciamento de recursos no sistema.
Tarefa |
Descrição |
Para instruções |
---|---|---|
Identificar as cargas de trabalho no sistema e categorize cada carga de trabalho por projeto. |
Crie entradas de projeto no arquivo /etc/project, no mapa NIS ou no serviço de diretório LDAP. | |
Priorizar as cargas de trabalho no sistema. |
Determine os aplicativos que são cruciais. Essas cargas de trabalho podem requerer acesso preferencial a recursos. |
Consulte os objetivos de serviço comercial. |
Monitorar a atividade em tempo real no sistema. |
Use ferramentas de desempenho para visualizar o consumo de recursos atual de cargas de trabalho em execução no sistema. Você pode a seguir avaliar se deve restringir acesso a um determinado recurso ou isolar cargas de trabalho específicas de outras cargas de trabalho. |
Monitoração por sistema e as páginas do manual cpustat(1M), iostat(1M), mpstat(1M), prstat(1M), sar(1) e vmstat(1M) |
Fazer modificações temporárias nas cargas de trabalho em execução no sistema. |
Para determinar os valores que podem ser alterados, consulte os controles de recursos disponíveis no sistema do Solaris. Você pode atualizar os valores a partir da linha de comando enquanto a tarefa ou o processo estiverem em execução. |
Controles de recursos disponíveis, Ações globais e locais em valores de controle de recursos, Atualização temporária de valores do controle de recursos em um sistema em execução e as páginas do manual rctladm(1M) e prctl(1). |
Definir controles de recursos e atributos de projeto para cada entrada de projeto no banco de dados de project ou no banco de dados de projeto do serviço de nomes. |
Cada entrada de projeto no arquivo /etc/project ou no banco de dados de projeto do serviço de nomes podem conter um ou mais controles de recursos ou atributos. Controles de recursos contêm tarefas e processos anexados a esse projeto. Para cada valor de limiar colocado em um controle de recursos, você pode associar uma ou mais ações a serem tomadas quando o valor foi alcançado. Você pode definir controles de recursos usando a interface da linha de comando. Determinados parâmetros de configuração também podem ser definidos usando-se o Console de gerenciamento Solaris. |
Banco de dados de project, Formato de arquivo /etc/project local , Controles de recursos disponíveis, Ações globais e locais em valores de controle de recursos e o Capítulo 8Fair share scheduler (visão geral) |
Colocar um limite superior no consumo de recursos da memória física por coleções de processos anexados a um projeto. |
O daemon de aplicação de limitação de recursos aplicará a limitação de recursos da memória física para o atributo rcap.max-rss do projeto no arquivo /etc/project. |
Banco de dados de project e o Capítulo 10Controle da memória física usando o resource capping daemon (visão geral) |
Criar configurações de grupo de recursos. |
Os grupos de recursos fornecem uma forma de efetuar a partição de recursos do sistema, como processadores, e manter essas partições nas reinicializações. Você pode adicionar um atributo project.pool a cada entrada no arquivo /etc/project. |
Banco de dados de project e o Capítulo 12Grupos de recursos (visão geral) |
Tornar o fair share scheduler (FSS) o agendador padrão do sistema. |
Assegure-se de que todos os processos de usuário em um sistema de CPU único ou em um conjunto de processadores pertençam à mesma classe de agendamento. |
Configuração do FSS e a página do manual dispadmin(1M) |
Ativar a facilidade da contabilidade estendida para monitorar e registrar consumo de recursos com base em tarefa ou processo. |
Use dados da contabilidade estendida para avaliar controles de recursos atuais e planejar requisitos de capacidade para cargas de trabalho futuras. Agregue uso em uma base de sistema geral que pode ser acompanhado. Para obter estatísticas completas de uso de cargas de trabalho relacionadas que se estendem para mais de um sistema, o nome do projeto pode ser compartilhado em diversas máquinas. |
Como ativar a contabilidade estendida para processos, tarefas e fluxos e a página do manual acctadm(1M) |
(Opcional) Se for necessário fazer ajustes adicionais na configuração, você pode continuar a alterar os valores a partir da linha de comando. Você pode alterar os valores enquanto a tarefa ou o processo estão em execução. |
Modificações em tarefas existentes podem ser aplicadas em base temporária sem reiniciar o projeto. Ajuste os valores até o desempenho ser satisfatório. Em seguida, atualize os valores atuais no arquivo /etc/project ou no banco de dados de projeto do serviço de nomes. |
Atualização temporária de valores do controle de recursos em um sistema em execução e as páginas do manual rctladm(1M) e prctl(1) |
(Opcional) Capturar dados da contabilidade estendida. |
Grave registros da contabilidade estendida para processos e tarefas ativos. Os arquivos produzidos podem ser usados para planejamento, chargeback e propósitos de fatura. Há também uma interface prática de linguagem de extração e relatório (Perl) para libexacct que permite que você desenvolva relatórios personalizados e scripts de extração. |