• Aucun résultat trouvé

L’acte II de la décentralisation

Dans le document AVIS SÉNAT N° 74 (Page 31-34)

Em uma instância real do problema ALOCAÇÃO EMGRID, é comum encontrar múltiplas tarefas que acessam determinados subconjuntos de dados recorrentes. Isso normalmente ocorre devido a certos aspectos de localidade [25] que formam esses grupos de dados relacionados, de tal forma que a probabilidade de certos dados serem usados juntos por uma mesma tarefa pode

5.1. Heurísticas 48 Algoritmo 11 Fase de busca local do algoritmo Clusterização de Máquinas

1: repeat

2: ·1, . . . , ·n Ω calculaTemposDeTérmino(g, r)

3: /* Tarefas cujas máquinas atingem o makespan */ 4: Jc Ω {j œ J|·g(j)= max(·1, . . . , ·n)}

5: for all (i, j) œ Jc◊ Jc, g(i) ”= g(j) do

6: ti Ω ·g(i)≠ te(r, i, g(i)) + te(r, j, g(i))

7: tj Ω ·g(j)≠ te(r, j, g(j)) + te(r, i, g(j))

8: if max(·g(i), ·g(j)) > max(ti, tj) then

9: troque g(i) com g(j)

10: break

11: end if

12: end for

13: until nenhuma troca adicional reduz o makespan 14: return g

ser maior que o esperado em uma instância gerada aleatoriamente. Por exemplo, podem existir algumas tarefas de natureza totalmente distinta tal que o conjunto de dados que elas acessam em comum é mínimo ou, até mesmo, vazio. Ou então, considere dados que precisam ser acessados em sequência: se o primeiro é exigido por uma tarefa, então o próximo também será e assim por diante, caracterizando um grupo de dados relacionados.

Portanto, ao identificar um grupo de dados relacionados, é interessante criar réplicas de cada um desses dados em uma mesma máquina ou em máquinas vizinhas, pois sabemos que esses dados tendem a ser acessados em conjunto por uma mesma tarefa. Por outro lado, se um conjunto de dados não costuma ser acessado por uma mesma tarefa, não há necessidade (a priori) de haver réplicas próximas, pois é provável que tarefas diferentes (potencialmente escalonadas em máquinas distintas) irão acessá-las.

Analogamente ao caso da clusterização de vértices do algoritmo CM, os relacionamentos entre os dados não são fornecidos pela instância, porém é possível encontrar padrões obser- vando como os dados são acessados pelas tarefas. Introduzimos nesta seção uma heurística para encontrar grupos de dados potencialmente relacionados e criar réplicas dos dados de cada grupo em máquinas próximas.

5.1.2.1 Fase de agrupamento

Para formar os grupos de dados relacionados, o algoritmo gera uma matriz |D| ◊ |D| de valores [dpfij] que representa, para cada par de dados (Di, Dj), o número de tarefas da entrada que

requerem ambos os dados. Considere o grafo não orientado completo H = (D, D2) com peso

5.1. Heurísticas 49 nesse grafo. Vamos considerar que o grau de relacionamento entre os dados de um grupo S é proporcional ao peso médio das arestas no subgrafo induzido por S em H.

Dessa forma, estamos interessados em formar alguns grupos de dados com grau de rela- cionamento máximo. O número de grupos a serem formados é um fator importante que pode influenciar no desempenho do algoritmo. Dependendo da instância, pode ser possível estimar também de forma heurística quantos grupos devem ser formados para se obter o melhor resul- tado. Por exemplo, itera-se sobre o número de grupos até que um dos grupos formados tenha um grau de relacionamento muito menor que os outros. Porém, em instâncias aleatórias, esse tipo de distinção pode não ser clara o suficiente e demandaria uma análise mais complexa. Por simplicidade, o algoritmo apresentado aqui usa um número fixo de grupos de dados a serem formados, g.

Como as máquinas possuem capacidade de armazenamento de dados limitada, seria inviável manter réplicas de todos os dados de um grupo em máquinas relativamente próximas caso o ar- mazenamento total exigido por esses dados seja muito grande. Para contornar isso, precisamos limitar o tamanho máximo dos dados de cada grupo.

A fase de agrupamento (Algoritmo 12) começa com a partição P dos dados consistindo de |D| grupos, cada um contendo apenas um único dado. Cada aresta do grafo H é processada em ordem não-crescente de peso dpfij no laço da linha 7, determinando os grupos pi e pj aos

quais pertencem cada dado da aresta. Se esses grupos forem diferentes e o tamanho de ambos for menor que o tamanho médio dos grupos, M = qDiœDsi/g, eles são unidos em um único grupo na linha 11. Essa operação é feita até que o número de grupos formados seja igual ao valor desejado, g. Temos a garantia que sempre podemos formar g grupos, pois não é possível que não existam pelo menos dois grupos com tamanho menor que a média M em uma partição com mais que g grupos.

No Algoritmo 12, as operações de busca por conjunto dado um elemento e de união de dois conjuntos podem ser implementadas eficientemente com uma estrutura de dados tradicional de conjuntos disjuntos [?].

A complexidade de tempo é dominada pela geração da matriz [dpfij] e a ordenação do

conjunto de arestas E, resultando em O(|J||D|2+ |D|2log |D|). 5.1.2.2 Fase de clusterização

Após particionarmos o conjunto de dados em g grupos, o próximo passo é escolher os locais do grid para criar réplicas dos dados de cada um desses grupos. Intuitivamente, queremos associar cada grupo de dados a um subconjunto de máquinas próximas do grid para replicá-los de forma que as tarefas que mais usem dados desse grupo sejam preferencialmente escalonadas nessas máquinas para fazer os acessos a esses dados da forma mais eficiente possível.

Como cada grupo tem aproximadamente o mesmo tamanho de dados, cada subconjunto de máquinas precisará também de cerca da mesma capacidade de armazenamento. Portanto, o

5.1. Heurísticas 50 Algoritmo 12 Fase de agrupamento do algoritmo de Dados Relacionados

1: for all (Di, Dj) œ D2 do 2: dpfij Ω |{Jkœ J|Di œ dk· Dj œ dk}| 3: end for 4: E Ω {(Di, Dj, dpfij) ’Di, Dj œ D} 5: M ΩqDiœDsi/g 6: P Ω {{D1}, {D2}, . . . , {D|D|}}

7: for all (Di, Dj, dpfij) œ E em ordem não-crescente de dpfij do

8: pi Ω X œ P t.q. Di œ X 9: pj Ω X œ P t.q. Dj œ X 10: if pi ”= pj e max(qDkœpisk, q Dkœpjsk) < M then 11: P Ω P\{pi, pj} fi {pifi pj} 12: if |P| = g then 13: break 14: end if 15: end if 16: end for 17: return P

problema de gerar esses subconjuntos é muito parecido ao da fase de clusterização de máquinas do algoritmo CM (seção 5.1.1.1). Porém, no CM a restrição usada é uma certa capacidade máxima dos clusters (L) ao invés do número exato de clusters formados (g). Seja c(L) o número de clusters formados pelo algoritmo CM quando a capacidade máxima dos clusters é L.

Para resolvermos o problema sem precisar modificar o algoritmo, basta variarmos o parâ- metro L até que c(L) = g. Além disso, como c(L) é inversamente proporcional a L, esse procedimento pode ser feito de forma eficiente usando busca binária em L. Note que, em al- guns casos específicos, é possível que o algoritmo não permita obter exatamente g clusters. Por exemplo, se c(L) < g e c(L ≠ 1) > g. Nesse caso, podemos simplesmente ignorar alguns clusters ao atribuí-los aos grupos de dados.

5.1.2.3 Fase de replicação

Neste ponto, temos g grupos de dados e g clusters de máquinas a serem emparelhados. Evi- dentemente, é possível que algum grupo de dados não possa ser inteiramente replicado nas máquinas de um determinado cluster. Nesse caso, devemos ter réplicas dos dados restantes em máquinas externas. Para minimizar esse tipo de ocorrência, os emparelhamentos são feitos as- sociando os maiores tamanhos do grupo de dados às maiores capacidades de armazenamento do cluster.

A fase de replicação (Algoritmo 13) percorre os pares associados de grupo de dados e cluster na linha 2, e, para cada um dos dados, procura uma máquina aleatória do cluster para criar uma

5.1. Heurísticas 51 réplica na linha 5 (se possível). Após isso, o algoritmo procura preencher aleatoriamente a capacidade de armazenamento restante nas máquinas com dados, até não ser mais possível fazê-lo.

Algoritmo 13 Fase de Replicação do algoritmo de Dados Relacionados 1: rΩ alocação viável de todos os dados

2: for all (Mi, Gi) œ C ◊ P em ordem não-decrescente deqvœMicv e q

DkœGisk do 3: for all d œ Gi do

4: for all v œ Mifl máquinasParaRéplica(d, r) em ordem aleatória do

5: r(d) Ω r(d) fi {v} 6: break 7: end for 8: end for 9: end for 10: repeat 11: for all d œ D do 12: E Ω máquinasParaRéplica(d, r) 13: if E ”= ÿ then

14: seja e um elemento de E escolhido aleatoriamente

15: r(d) Ω r(d) fi {e}

16: end if

17: end for

18: until nenhuma réplica adicional pode ser criada 19: return r Algoritmo 14 máquinasParaRéplica(d, r) 1: M Ω {} 2: for all v œ V \r(d) do 3: RΩ {x œ D|v œ r(x)} 4: if qxœRsx+ sd Æ cv then 5: M Ω M fi {v} 6: end if 7: end for 8: return M

A subrotina máquinasParaRéplica(d, r) (Algoritmo 14) determina em quais máquinas uma réplica de um dado d pode ser criada, dada uma função de replicação r. O laço da linha 2 itera no conjunto de máquinas que não possuem uma réplica de d e verifica quais delas possuem espaço de armazenamento suficiente para o dado.

Esse método para replicação tem um custo computacional baixo, sendo que a complexidade de tempo é dominada pela parte final de criar réplicas aleatoriamente. No pior caso, todos os

5.1. Heurísticas 52 dados poderão ser replicados em todas as máquinas fora do cluster associado ao conjunto de dados correspondente. Logo, o laço externo será executado O(|V |) vezes e a complexidade de tempo resulta em O(|V |2|D|).

5.1.2.4 Fase de escalonamento

A fase de escalonamento para o algoritmo DR segue o mesmo funcionamento do algoritmo CM (Algoritmos 10 e 11), já que os problemas a serem resolvidos a partir deste ponto são idênticos.

Dans le document AVIS SÉNAT N° 74 (Page 31-34)