Exécution de commandes en parallèle ou en série

Vous avez la possibilité d'exécuter des commandes en série, en parallèle ou en série et en parallèle. Pour cela, exécutez les commandes de script SERIAL ou PARALLEL du paramètre COMMAND_LINE des commandes DEFINE et UPDATE SCRIPT. Par conséquent, il est possible d'exécuter plusieurs commandes en parallèle et d'attendre qu'elles soient terminées avant de passer à la prochaine commande.

A propos de cette tâche

L'exécution de commandes en série dans un script garantit que toutes les commandes précédentes sont terminées et s'assure que les commandes suivantes sont exécutées en série. Au démarrage d'un script, toutes les commandes s'exécutent en série jusqu'à la détection d'une commande PARALLEL. Les multiples commandes parallèles qui accèdent à des ressources communes , comme les unités de bande, peuvent s'exécuter en série.

Les codes retour de script restent les mêmes avant et après l'exécution d'une commande PARALLEL. Lorsqu'une commande SERIAL est détectée, le code retour du script est défini sur le code retour maximal provenant d'une des commandes précédentes exécutées en parallèle.

A l'appel des commandes prenant en charge le paramètre WAIT après une commande PARALLEL, le comportement est le suivant :

  • Si vous indiquez le paramètre WAIT=NO (ou utilisez la valeur par défaut), un script n'attend pas la fin de la commande lorsqu'une autre commande SERIAL est détectée. Le code retour provenant de cette commande indique que le traitement s'est poursuivi jusqu'au moment où la commande a démarré un processus en arrière-plan. Le code retour final de la commande n'est pas disponible pour votre script.
  • Si vous indiquez le paramètre WAIT=YES, votre script attend la fin de la commande lorsqu'une autre commande SERIAL est détectée. Le code retour provenant de cette commande indique le traitement pour toute la commande.

Dans la plupart des cas, vous pouvez utiliser WAIT=YES sur les commandes qui sont exécutées en parallèle.

Restrictions :
  • Si la commande démarre un processus d'arrière-plan qui n'a pas le paramètre WAIT, la commande est considérée comme terminée une fois l'unité d'exécution en arrière plan démarrée. Par conséquent, la commande ne peut s'exécuter qu'en parallèle.
  • Si vous spécifiez un script avec la commande PARALLEL, n'incluez pas de commande SHOW, QUERY ou SELECT dans le script. Cette restriction est valable pour tous les scripts, y compris les scripts appelant d'autres scripts.

L'exemple ci-après illustre l'utilisation de la commande PARALLEL pour sauvegarder, migrer et récupérer des pools de stockage.

/*run multiple commands in parallel and wait for 
them to complete before proceeding*/
PARALLEL
/*back up four storage pools simultaneously*/
BACKUP STGPOOL PRIMPOOL1 COPYPOOL1 WAIT=YES
BACKUP STGPOOL PRIMPOOL2 COPYPOOL2 WAIT=YES
BACKUP STGPOOL PRIMPOOL3 COPYPOOL3 WAIT=YES
BACKUP STGPOOL PRIMPOOL4 COPYPOOL4 WAIT=YES
/*wait for all previous commands to finish*/
SERIAL
/*after the backups complete, migrate stgpools 
simultaneously*/
PARALLEL
MIGRATE STGPOOL PRIMPOOL1 DURATION=90 WAIT=YES
MIGRATE STGPOOL PRIMPOOL2 DURATION=90 WAIT=YES
MIGRATE STGPOOL PRIMPOOL3 DURATION=90 WAIT=YES
MIGRATE STGPOOL PRIMPOOL4 DURATION=90 WAIT=YES
/*wait for all previous commands to finish*/
SERIAL
/*after migration completes, relcaim storage 
pools simultaneously*/
PARALLEL
RECLAIM STGPOOL PRIMPOOL1 DURATION=120 WAIT=YES
RECLAIM STGPOOL PRIMPOOL2 DURATION=120 WAIT=YES
RECLAIM STGPOOL PRIMPOOL3 DURATION=120 WAIT=YES
RECLAIM STGPOOL PRIMPOOL4 DURATION=120 WAIT=YES