Objetivos são especificados da mesma forma para restrições. O conjunto completo de objetivos está documentado na Tabela 12–1.
Há duas categorias de objetivos.
Um objetivo dependente da carga de trabalho é um objetivo que variará de acordo com a natureza da carga de trabalho em execução no sistema. Um exemplo é o objetivo utilization. Os dados da utilização de um conjunto de recursos variarão de acordo com a natureza da carga de trabalho que esteja ativa no conjunto.
Um objetivo independente de carga de trabalho é um objetivo que não varia de acordo com a natureza da carga de trabalho em execução no sistema. Um exemplo é o objetivo locality de CPU. A medida avaliada de localidade para um conjunto de recursos não varia com a natureza da carga de trabalho que esteja ativa no conjunto.
Você pode definir três tipos de objetivos.
Nome |
Elementos válidos |
Operadores |
Valores |
---|---|---|---|
wt-load |
system |
N/D |
N/D |
locality |
pset |
N/D |
loose | tight | none |
utilization |
pset |
< > ~ |
0–100% |
Objetivos são armazenados em seqüências de propriedades na configuração libpool. Os nomes das propriedades são os seguintes:
system.poold.objectives
pset.poold.objectives
Objetivos têm a seguinte sintaxe:
objectives = objective [; objective]*
objective = [n:] keyword [op] [value]
Todos os objetivos levam um prefixo de importância opcional. A importância atua como um multiplicador para o objetivo, aumentando assim a significância de sua contribuição para a avaliação da função do objetivo. O intervalo é de 0 a INT64_MAX (9223372036854775807). Se não especificado, o valor padrão da importância é 1.
Alguns tipos de elemento fornecem suporte a mais de um tipo de objetivo. Um exemplo é pset. Você pode especificar vários tipos de objetivo para esses elementos. Pode também especificar vários objetivos de utilização em um único elemento pset.
Para exemplos de uso, consulte Como definir objetivos de configuração.
O objetivo wt-load favorece configurações que coincidem alocações de recursos com utilizações de recurso. Um conjunto de recursos que use mais recursos receberão mais recursos quando este objetivo estiver ativo. wt-load significa carga ponderada.
Use este objetivo quando você estiver satisfeito com as restrições estabelecidas usando as propriedades mínimas e máximas, e desejar que o daemon manipule recursos livremente dentro dessas restrições.
O objetivo locality influencia o impacto que a localidade, como medida por dados de grupo de localidade (lgroup), tem sobre a configuração selecionada. Uma definição alternativa para localidade é latência. Um lgroup descreve recursos de CPU e de memória. O lgroup é usado pelo sistema do Solaris para determinar a distância entre recursos, usando o tempo como a medida. Para obter mais informações sobre a abstração do grupo de localidades, consulte Locality Groups Overview no Programming Interfaces Guide.
Este objetivo pode tomar um dos três valores seguintes:
Se definido, as configurações que maximizam a localidade de recursos são favorecidas.
Se definido, as configurações que minimizam a localidade de recursos são favorecidas.
Se definido, o favorecimento de uma configuração não é influenciado pela localidade do recurso. Este é o valor padrão para o objetivo locality.
Em geral, o objetivo locality deve ser definido para tight. No entanto, para maximizar a largura de banda da memória ou para minimizar o impacto das operações DR em um conjunto de recursos, você pode definir este objetivo como loose ou mantê-lo na definição padrão de none.
O objetivo utilization favorece configurações que alocam recursos a partições que não atendem ao objetivo de utilização especificado.
Este objetivo é especificado usando-se operadores e valores. Os operadores são os seguintes:
O operador “less than” indica que o valor especificado representa um valor de destino máximo.
O operador “greater than” indica que o valor especificado represente um valor de destino mínimo.
O operador “about” indica que o valor especificado é um valor de destino em relação ao qual determinada flutuação é aceitável.
Um pset pode ter somente um objetivo de utilização definido para cada tipo de operador.
Se o operador ~ estiver definido, os operadores < e > não podem ser definidos.
Se os operadores < e > estiverem definidos, o operador ~ não pode ser definido. Observe que as configurações do operador < e do operador > não podem se contradizer.
Você pode definir um operador < e um operador > juntos para criar um intervalo. Os valores serão validados para garantir que não se sobreponham.
No exemplo abaixo, poold avalia esses objetivos para o pset:
O utilization deve ser mantido entre 30 por cento e 80 por cento.
O locality deve ser maximizado para o conjunto de processadores.
Os objetivos devem tomar a importância padrão de 1.
pset.poold.objectives "utilization > 30; utilization < 80; locality tight"
Para exemplos adicionais de uso, consulte Como definir objetivos de configuração.