Paral­lé­li­sa­tion de travaux

Paral­lé­li­sa­tion de travaux

mer 28 septembre 2022 0 Par Ibmiiste

Paral­lé­li­sa­tion de tra­vaux sur IBM i — Com­ment et pourquoi ?

🧩 Contexte

Sur IBM i, comme sur beau­coup d’environnements ser­veurs, il est sou­vent utile d’exécuter des tra­vaux en paral­lèle plu­tôt qu’en série.
La paral­lé­li­sa­tion per­met d’accélérer le trai­te­ment glo­bal, d’exploiter plu­sieurs uni­tés de tra­vail simul­ta­né­ment, et de mieux uti­li­ser les res­sources système.

Ce concept de paral­lé­lisme est très répan­du en infor­ma­tique : il consiste à divi­ser une tâche en sous-tâches exé­cu­tables en même temps, ce qui réduit le temps total d’exécution com­pa­ré à une exé­cu­tion stric­te­ment séquentielle.


⚙️ Com­ment paral­lé­li­ser des tra­vaux sur IBM i

Pour qu’un tra­vail puisse être exé­cu­té en paral­lèle sur IBM i, il faut :

  1. Sou­mettre le tra­vail à une file de tra­vaux confi­gu­rée pour le paral­lé­lisme.
  2. Ajus­ter éven­tuel­le­ment les para­mètres pour maxi­mi­ser l’exécution simultanée.

🔍 Obte­nir une liste des files de travaux

La vue sys­tème QSYS2.JOB_QUEUE_INFO te per­met de lis­ter les files et de voir com­bien de tra­vaux peuvent être actifs en parallèle.

Exemple :

-- File d'attente des travaux triée par capacité maximale de travaux actifs
SELECT *
  FROM QSYS2.JOB_QUEUE_INFO
  ORDER BY Maximum_active_jobs DESC;

👉 Le champ MAXIMUM_ACTIVE_JOBS indique le nombre maxi­mal de tra­vaux pou­vant être actifs simul­ta­né­ment.


📌 Com­prendre les valeurs clés

Dans le résul­tat de la requête :

  • NULL signi­fie que la file n’est pas atta­chée à un sous-sys­tème.
  • -1 signi­fie *NOMAX : aucune limite n’est fixée pour le nombre de tra­vaux exé­cu­tables simul­ta­né­ment (les contraintes viennent plu­tôt du sous-sys­tème ou des res­sources dis­po­nibles).

🛠️ Exemple de confi­gu­ra­tion d’une file qui sup­porte le parallélisme

Si tu veux créer ou rat­ta­cher une file à un sous-sys­tème avec un nombre maxi­mal de tra­vaux actifs :

ADDJOBQE SBSD(QUSRSYS/WEBSBSD) JOBQ(BETRAV/WBSJOBQ) MAXACT(5)

👉 Cette com­mande attache la file WBSJOBQ au sous-sys­tème WEBSBSD avec 5 comme limite.
Note : tu dois avoir les auto­ri­sa­tions néces­saires (OBJOPR, OBJMGT, EXECUTE, etc.).


🧠 Bonnes pra­tiques pour paral­lé­li­ser efficacement

🚀 1. Choi­sir l’approche adaptée

  • Une file avec NOMAX per­met de lan­cer poten­tiel­le­ment tous les tra­vaux en même temps.
  • Une file avec un nombre défi­ni de Maximum_active_jobs per­met de contrô­ler la charge et d’éviter d’atteindre un pic CPU ou mémoire trop important.

👉 Sur IBM i, il n’y a pas de “threa­ding” direct comme en lan­gage d’application : le paral­lé­lisme repose sur le sys­tème de tra­vaux et les sous-sys­tèmes.


🧮 2. Pen­ser à l’équilibrage

Même si la file auto­rise de nom­breux tra­vaux simul­ta­nés, cela ne garan­tit pas des gains linéaires.
Si tous les tra­vaux effec­tuent des opé­ra­tions lourdes ou attendent des res­sources par­ta­gées, tu peux faire face à :

  • Des bou­chons d’accès disque
  • De l’attente mémoire
  • De la syn­chro­ni­sa­tion excessive

Ces fac­teurs peuvent limi­ter l’amélioration réelle du paral­lé­lisme, un phé­no­mène bien connu en infor­ma­tique des performances.


🧪 3. Mesu­rer et tester

Avant de “paral­lé­li­ser tout”, fais des tests :

  • Com­mence avec un petit nombre de tra­vaux simultanés.
  • Mesure le temps total d’exécution et l’usage des ressources.
  • Ajuste gra­duel­le­ment (comme on le ferait pour opti­mi­ser un job paral­lèle dans d’autres contextes).

Cela évite les mau­vaises sur­prises où une incré­men­ta­tion aveugle du paral­lé­lisme aug­mente la charge ou dégrade les per­for­mances.


🧩 Conclu­sion

La paral­lé­li­sa­tion de tra­vaux sur IBM i est avant tout une ques­tion de :

  • Confi­gu­ra­tion de la file de travaux
  • Com­pré­hen­sion des limites système
  • Choix appro­prié du nombre de tra­vaux simultanés
  • Mesure et optimisation

C’est une tech­nique simple à mettre en place, mais qui demande de la vigi­lance pour tirer un réel béné­fice.