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

Capítulo 14 Exemplo de configuração de gerenciamento de recurso

Este capítulo examina a estrutura do gerenciamento de recurso e descreve um projeto de consolidação de servidor hipotético.

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

Configuração a ser consolidada

Neste exemplo, cinco aplicativos estão sendo consolidados em um único sistema. Os aplicativos de destino têm requisitos de recurso que variam, diferentes populações de usuários e diferentes arquiteturas. Atualmente, cada aplicativo existe em um servidor dedicado que foi projetado para atender os requisitos do aplicativo. Os aplicativos e suas características são identificados no quadro abaixo.

Descrição do aplicativo 

Características 

Servidor do aplicativo 

Exibe escalabilidade negativa acima de 2 CPUs 

Instância do banco de dados para o servidor do aplicativo 

Processamento de transação pesada 

Servidor do aplicativo em ambiente de teste e desenvolvimento 

Baseado em GUI, com execução de código não testado 

Servidor de processamento de transação 

A preocupação principal é o tempo de resposta 

Instância de banco de dados independente 

Processa um grande número de transações e serve várias regiões 

Configuração de consolidação

A configuração a seguir é usada para consolidar os aplicativos em um único sistema.

Esta configuração abarca aplicativos conhecidos que estão sendo executados e consumindo ciclos do processador em cada conjunto de recursos. Assim, podem ser estabelecidas restrições que permitem que o recurso do processador seja transferido para conjuntos em que o recurso é necessário.

Também é aplicada uma restrição adicional para impedir que a utilização ultrapasse 80 por cento de qualquer conjunto de recursos. Esta restrição garante que os aplicativos tenham acesso aos recursos de que necessitam. Além disso, para o conjunto de processadores de transação, o objeto de manter a utilização abaixo de 80 por cento é duas vezes mais importante do que quaisquer outros objetivos especificados. Esta importância será definida na configuração.

Criação da configuração

Edite o arquivo do banco de dados /etc/project. Adicione entradas para implementar os controles de recursos necessários e mapear usuários para grupos de recursos, em seguida visualize o arquivo.


# cat /etc/project
.
.
.
user.app_server:2001:Production Application Server:::project.pool=appserver_pool
user.app_db:2002:App Server DB:::project.pool=db_pool;project.cpu-shares=(privileged,1,deny)
development:2003:Test and development::staff:project.pool=dev_pool;
process.max-address-space=(privileged,536870912,deny)keep with previous line
user.tp_engine:2004:Transaction Engine:::project.pool=tp_pool
user.geo_db:2005:EDI DB:::project.pool=db_pool;project.cpu-shares=(privileged,3,deny)
.
.
.

Observação –

A equipe de desenvolvimento tem de executar tarefas no projeto de desenvolvimento porque o acesso para este projeto é baseado em um ID de grupo de usuários (GID).


Crie um arquivo de entrada nomeado pool.host, que será usado para configurar os grupos de recursos necessários. Visualize o arquivo.


# cat pool.host
create system host
create pset dev_pset (uint pset.min = 0; uint pset.max = 2)
create pset tp_pset (uint pset.min = 2; uint pset.max=8)
create pset db_pset (uint pset.min = 4; uint pset.max = 6)
create pset app_pset (uint pset.min = 1; uint pset.max = 2)
create pool dev_pool (string pool.scheduler="IA")
create pool appserver_pool (string pool.scheduler="TS")
create pool db_pool (string pool.scheduler="FSS")
create pool tp_pool (string pool.scheduler="TS")
associate pool dev_pool (pset dev_pset)
associate pool appserver_pool (pset app_pset)
associate pool db_pool (pset db_pset)
associate pool tp_pool (pset tp_pset)
modify system tester (string system.poold.objectives="wt-load")
modify pset dev_pset (string pset.poold.objectives="locality tight; utilization < 80")
modify pset tp_pset (string pset.poold.objectives="locality tight; 2: utilization < 80")
modify pset db_pset (string pset.poold.objectives="locality tight;utilization < 80")
modify pset app_pset (string pset.poold.objectives="locality tight; utilization < 80")

Atualize a configuração usando o arquivo de entrada pool.host.


# poolcfg -f pool.host

Ative a configuração.


# pooladm -c

A estrutura agora está funcional no sistema.

Visualização da configuração

Para visualizar a configuração da estrutura, que também contém elementos padrão criados pelo sistema, digite:


# pooladm
system host
        string  system.comment
        int     system.version 1
        boolean system.bind-default true
        int     system.poold.pid 177916
        string  system.poold.objectives wt-load

        pool dev_pool
                int     pool.sys_id 125
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler IA
                pset    dev_pset
  
        pool appserver_pool
                int     pool.sys_id 124
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    app_pset
      
        pool db_pool
                int     pool.sys_id 123
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler FSS
                pset    db_pset
  
        pool tp_pool
                int     pool.sys_id 122
                boolean pool.default false
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    tp_pset
 
        pool pool_default
                int     pool.sys_id 0
                boolean pool.default true
                boolean pool.active true
                int     pool.importance 1
                string  pool.comment
                string  pool.scheduler TS
                pset    pset_default

        pset dev_pset
                int     pset.sys_id 4
                string  pset.units population
                boolean pset.default false
                uint    pset.min 0
                uint    pset.max 2
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80

        pset tp_pset
                int     pset.sys_id 3
                string  pset.units population
                boolean pset.default false
                uint    pset.min 2
                uint    pset.max 8
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; 2: utilization < 80

                cpu
                        int     cpu.sys_id 1
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 2
                        string  cpu.comment 
                        string  cpu.status on-line

        pset db_pset
                int     pset.sys_id 2
                string  pset.units population
                boolean pset.default false
                uint    pset.min 4
                uint    pset.max 6
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80

                cpu
                        int     cpu.sys_id 3
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 4
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 5
                        string  cpu.comment 
                        string  cpu.status on-line

                cpu
                        int     cpu.sys_id 6
                        string  cpu.comment 
                        string  cpu.status on-line
        pset app_pset
                int     pset.sys_id 1
                string  pset.units population
                boolean pset.default false
                uint    pset.min 1
                uint    pset.max 2
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0
                string  pset.poold.objectives locality tight; utilization < 80
                cpu
                        int     cpu.sys_id 7
                        string  cpu.comment 
                        string  cpu.status on-line

        pset pset_default
                int     pset.sys_id -1
                string  pset.units population
                boolean pset.default true
                uint    pset.min 1
                uint    pset.max 4294967295
                string  pset.comment
                boolean pset.escapable false
                uint    pset.load 0
                uint    pset.size 0

                cpu
                        int     cpu.sys_id 0
                        string  cpu.comment 
                        string  cpu.status on-line

Segue-se uma representação gráfica da estrutura.

Figura 14–1 Configuração da consolidação do servidor

A ilustração mostra a configuração do servidor hipotético.


Observação –

No grupo db_pool, à instância do banco de dados independente são garantidos 75 por cento do recurso da CPU.