Parallélisation de travaux
mer 28 septembre 2022Parallélisation de travaux sur IBM i — Comment et pourquoi ?
🧩 Contexte
Sur IBM i, comme sur beaucoup d’environnements serveurs, il est souvent utile d’exécuter des travaux en parallèle plutôt qu’en série.
La parallélisation permet d’accélérer le traitement global, d’exploiter plusieurs unités de travail simultanément, et de mieux utiliser les ressources système.
Ce concept de parallélisme est très répandu en informatique : il consiste à diviser une tâche en sous-tâches exécutables en même temps, ce qui réduit le temps total d’exécution comparé à une exécution strictement séquentielle.
⚙️ Comment paralléliser des travaux sur IBM i
Pour qu’un travail puisse être exécuté en parallèle sur IBM i, il faut :
- Soumettre le travail à une file de travaux configurée pour le parallélisme.
- Ajuster éventuellement les paramètres pour maximiser l’exécution simultanée.
🔍 Obtenir une liste des files de travaux
La vue système QSYS2.JOB_QUEUE_INFO te permet de lister les files et de voir combien de travaux 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 maximal de travaux pouvant être actifs simultanément.
📌 Comprendre les valeurs clés
Dans le résultat de la requête :
- NULL signifie que la file n’est pas attachée à un sous-système.
- -1 signifie
*NOMAX: aucune limite n’est fixée pour le nombre de travaux exécutables simultanément (les contraintes viennent plutôt du sous-système ou des ressources disponibles).
🛠️ Exemple de configuration d’une file qui supporte le parallélisme
Si tu veux créer ou rattacher une file à un sous-système avec un nombre maximal de travaux actifs :
ADDJOBQE SBSD(QUSRSYS/WEBSBSD) JOBQ(BETRAV/WBSJOBQ) MAXACT(5)👉 Cette commande attache la file WBSJOBQ au sous-système WEBSBSD avec 5 comme limite.
Note : tu dois avoir les autorisations nécessaires (OBJOPR, OBJMGT, EXECUTE, etc.).
🧠 Bonnes pratiques pour paralléliser efficacement
🚀 1. Choisir l’approche adaptée
- Une file avec NOMAX permet de lancer potentiellement tous les travaux en même temps.
- Une file avec un nombre défini de Maximum_active_jobs permet 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 “threading” direct comme en langage d’application : le parallélisme repose sur le système de travaux et les sous-systèmes.
🧮 2. Penser à l’équilibrage
Même si la file autorise de nombreux travaux simultanés, cela ne garantit pas des gains linéaires.
Si tous les travaux effectuent des opérations lourdes ou attendent des ressources partagées, tu peux faire face à :
- Des bouchons d’accès disque
- De l’attente mémoire
- De la synchronisation excessive
Ces facteurs peuvent limiter l’amélioration réelle du parallélisme, un phénomène bien connu en informatique des performances.
🧪 3. Mesurer et tester
Avant de “paralléliser tout”, fais des tests :
- Commence avec un petit nombre de travaux simultanés.
- Mesure le temps total d’exécution et l’usage des ressources.
- Ajuste graduellement (comme on le ferait pour optimiser un job parallèle dans d’autres contextes).
Cela évite les mauvaises surprises où une incrémentation aveugle du parallélisme augmente la charge ou dégrade les performances.
🧩 Conclusion
La parallélisation de travaux sur IBM i est avant tout une question de :
- Configuration de la file de travaux
- Compréhension des limites système
- Choix approprié du nombre de travaux simultanés
- Mesure et optimisation
C’est une technique simple à mettre en place, mais qui demande de la vigilance pour tirer un réel bénéfice.

