• Aucun résultat trouvé

Notre Modèle de Coût

3.1.3 Politique de notre traitement parallèle

3.1.3.6 L’allocation des sous-requêtes

L’allocation des sous-requêtes est un problème important qui prouve la performance des applications exécutées dans un environnement parallèle. Le problème consiste à trouver le placement le plus judicieux des sous-requêtes sur les nœuds de la grappe de machines qui

Figure 3.7 – Ordonnanceur des requêtes

assure un coût d’exécution de requêtes minimal et une distribution de charge équitable entre les nœuds de traitement. Notons que chaque sous-requête doit être placée sur un et un seul nœud de traitement.

3.1.3.6.1 Formalisation .

Nous formalisons le problème d’allocation des sous-requêtes comme un problème

d’optimi-sation à contraintes. Soient

– un ensemble de fragments F = {F1, F2, . . . , FN}, dont chaque fragment Fi, avec 1 ≤ i ≤

NF, est caractérisé par sa taille T aille(Fi) ;

– un grappe de machine sans partage SN − DBC à M nœuds N = {N1, N2, . . . , NM}, – un schéma d’allocation de l’ensemble des fragments F sur les nœuds de SN − DBC. Ce

schéma est représenté par la matrice MP;

– une charge de requêtes de jointure en étoile Q = {Q1, Q2, . . . , QK} exécutée sur la grappe SN − DBC, chaque requête Qk possèdant une fréquence d’accès fl;

– une contrainte d’équilibrage de charge δ, représentant le degré de déséquilibrage de charge que l’administrateur de l’entrepôt de données parallèle DWA tolère pour le placement de sous-requêtes sur les nœuds de traitement du SN − DBC.

L’objectif est de déterminer l’état de la fonction EstAllouer pour minimiser le coût d’exécu-tion des requêtes de la charge Q et satisfaire la contrainte δ. La foncd’exécu-tion EstAllouer est définie par

3.1. Les paramètres liés à notre modèle de coût

EstAllouer(Qi, Nj) =

(

1 si la Qi est allou´ee sur le noeud Nj

0 sinon

Nous rappelons que le schéma de placement global des sous-requêtes par une matrice notée MPSQ. Cette matrice représente la présence des sous-requête sur les nœuds. Les lignes et les colonnes de cette matrice sont associées aux L sous-requêtes obtenus par la réécriture d’une requêtes Qi selon le schéma de fragmentation et les M nœuds. La valeur de chaque élément de cette matrice est définie selon la fonction EstAllouer(SQi, Nj)avec1 ≤ i ≤ L et 1 ≤ j ≤ M .

3.1.3.6.2 Algorithmes proposés .

L’allocation de requêtes dépend de l’allocation des données qui peut être redondante (avec réplication) ou non redondante (sans réplication).

Dans le cas d’une allocation non redondante où chaque fragment est stocké sur un seul les nœuds de traitement, chaque sous-requête peut être placée sur un seul nœud de traitement. Ainsi, le coordinateur utilise son module d’équilibrage de charge pour améliorer la performance du système.

Dans le cas d’une allocation redondante, chaque fragment est stocké sur au moins deux nœuds. Ainsi, chaque sous-requête a la possibilité d’être allouée sur plus d’un nœud; il faut trouver l’emplacement adéquat des sous-requêtes pour minimiser le coût d’exécution de la charge de requête et maximiser l’utilisation de l’usage des données disponibles.

Dans notre travail, nous assimilons le problème d’allocation des sous-requêtes à un dual du problème de remplissage (Dual Bin Packing Problem (DBPP)). En effet, le problème Dual Bin Packing (DBP) partitionne les n objets dont chacun est caractérisé par un poids Pi(1 ≤ i ≤ n) en M sous-ensembles respectant la contrainte de capacité de stockage des bins C = 1

M PN

i=1Pi. L’objectif du DBP est de minimiser la somme des charges des bins, sachant que la taille d’un bin est définie par la somme des tailles des objets dans le bin. Le problème d’ordonnan-cement des n sous-requêtes sur les M nœuds de la grappe de machines consiste à minimiser le coût d’exécution totale des requêtes. Chaque sous-requête peut être considérée comme un item caractérisé par le temps d’exécution Ti de la requête Qi et chaque nœud sera considéré comme un bin de capacité C:

C = 1 jδ×PM j=1 j1δ × N X i=1 Ti (3.5)

DBPP a été montré comme un problème NP-Complet [87], il a pour but de minimiser la capacité de M bins identiques pour qu’on puisse emballer tous les éléments dans M bins sans violer la contrainte de capacité [4]. Dans la littérature, des procédures déterministes, pour construire les solutions faisables, ont été proposée pour ce problème, telles que [4]:

– Dual Best-Fit Decreasing (DBFD) – Dual Worst-Fit Decreasing (DWFD) – Dual Best 3-Fit Decreasing (DB3FD) – Dual Worst-Sum-Fit Decreasing(DWSFD) – Longest Processing Time (LPT)

Pour produire une solution quasi-optimale pour notre problème, nous avons opté pour la proposition d’un algorithme glouton (greedy algorithm) qui génère une solution réalisable. nous l’appelons SQ − DPB.

Dans le cas où la solution choisie n’est pas réalisable, il faut utiliser une méthode d’équili-brage de charge pour essayer de minimiser les violations de la capacité. Les solutions voisines d’une solution donnée peuvent être déterminées en échangeant deux éléments dans deux bins dont un bins est violé. Pour déterminer si une solution est meilleure qu’une autre, on peut se baser sur différents critères:

1. la solution avec plus de bins qui sont pleins est la solution meilleure, 2. la solution avec moins de bins qui sont violés est la solution meilleure. [4]

La procédure se termine lorsque la solution finale est réalisable pour le problème Bin P acking.

Notre algorithme agrandit la taille du bin pour permettre des solutions infaisables initiale-ment. Nous commençons avec une solution initiale qui a des proportions similaires à celles de grandes et petites sous-requêtes dans les bins. Voici les principales étapes de SQ − DPB:

1. fixer le nombre de bins au nombre des nœuds valides, 2. calculer le coût d’exécution de chaque sous-requête,

3. trier la sous-requête en fonction du coût d’exécution dans un ordre décroissant, 4. calculer la charge moyenne des bins,

5. fixer la taille de chaque bin à une valeur supérieure à la charge moyenne des bins pour permettre des solutions infaisables,

6. construire une solution initiale avec une heuristique décroissante de type Dual Best-Fit

Decreasing ,

7. utilisez la fonction objective qui minimise la somme des carrés des charges bin,

8. si la valeur obtenue est inférieure ou égale au seuil de déséquilibrage de charge. Aller à terminer,

9. sinon, utiliser l’algorithme d’échange de base pour échanger des éléments entre toutes les paires de bacs lors de la recherche locale pour éliminer les violations des capacités, 10. arrêter l’algorithme lorsque toutes les violations des capacités ont été enlevées. Si la

solution est encore impossible après un nombre fixe d’itérations, augmenter la limite inférieure et construire une nouvelle solution initiale.

L’algorithme 1 montre les grandes lignes de la procédure. SQ − DPB est un algorithme polynomial d’ordre O(NF).

Une fois les sous-requêtes sont placées sur le nœuds de traitement, le coordinateur utilise son module d’équilibrage de charge pour améliorer la performance du système qui vise à uniformiser la distribution de charge entre les nœuds de traitement en faisant recours à la migration de données entre les nœuds de traitement.

3.1. Les paramètres liés à notre modèle de coût Algorithm 1 Allocation des Requêtes ( SQ − DPB )

1: Entrées: M nœuds, Qj requête

2: Sorties: MPSQ: Matrice de Placement des sous-requêtes

3: Soit ListFrag la liste des fragments valides pour la requêtesQj.

4: Soit NumberFrag le nombre des fragments dans ListFrag;

5: Soit NumberValideNode le nombre des nœuds valides pour les fragments de ListFrag;

6: Soit ListSubQuery la liste des sous- requêtes:

7: Estimer SizeQ le nombre d’E/S nécessaires pour l’exécution de Qj;

8: calculer la charge moyenne d’un nœud ;

LB = PN umberV alideN ode1

j=1 j1δ

× SizeQ (3.6)

9: Trier la liste des fragments en ordre décroissant selon le taille des fragments;

10: Initailiser j à zéro

11: for i = 1 to N umberF rag de la requête Qj do

12: Récupérer ListNode la liste des nœuds valide pour le ième fragment de ListFrag.

13: Calculer la charge de travail affecté à chaque nœud de la liste ListNode ;

14: Assigner Qj au nœud qui à la plus grande capacité pour traiter Fi;

15: end for

Dans ce qui suit, nous proposons notre stratégie d’équilibrage de charge [22]. Ce problème est un enjeu important pour atteindre une haute performance d’un entrepôt de données paral-lèle. Une redistribution des fragments des nœuds surchargés dénotés par N SU R sur les nœuds sous chargés dénotés par N SOU S est nécessaire.

Cette redistribution peut être formalisée comme suit : soit la matrice d’allocation des frag-ments MP, M nœuds de traitement de la grappe SN − DBC décrit par sa matrice de com-munication CC. Le problème de répartition de la charge consiste à offrir un système équilibré assurant un coût de communication minimal. Pour le résoudre, quelques définitions s’imposent.

Définition 2. Le niveau de chargement d’un nœud correspond au nombre de requêtes à exécuter