Pour optimiser les performances de jobs multiples ajoutant simultanément des enregistrements à un fichier physique, il faut utiliser une description de fichier distincte, en sortie seulement, en précisant qu'il doit utiliser le traitement séquentiel et le blocage en sortie. Le job s'exécutera mieux, mais on rencontrera des goulets d'étranglement dans
La fonction « Holey Inserts »

le traitement lorsque de nombreux jobs simultanés (de 10 à
100 ou plus) ajoutent des enregistrements au même fichier dans un environnement
de travaux batch multiples. Au-delà d’un certain nombre de jobs, l’utilisation
de la CPU et le débit n’augmentent pas autant que prévu. En fait, à partir d’un
certain seuil, l’utilisation globale de la CPU se stabilise et chaque nouveau
job vient ralentir tous les autres.
Ce ralentissement est du à la sérialisation du traitement SLIC de la base de données
se produisant pendant la construction de l’enregistrement de sortie. Les fonctions
de base de données doivent s’assurer que chaque nouvel enregistrement peut être
ajouté au fichier. Si le blocage en sortie est élevé (comme il le devrait, le
plus près possible de 128 Ko) et si de nombreux jobs ajoutent des enregistrements
en même temps (comme ce devrait être cas), le traitement de validation devient
un goulet d’étranglement.
Heureusement, une fonction de base de données de la V4R4 appelée holey inserts
permet à plusieurs jobs d’ajouter simultanément des enregistrements sans subir
la contention causée par la sérialisation. Le véritable nom de holey inserts est
ENCWT (Enable Concurrent Writes), mais holey inserts (insertions à trous) exprime
mieux la méthodologie de la fonction.
Pour optimiser les traitements d’ajout d’enregistrements à la base de données
en V4R4 ou au delà , il faut faire trois choses suivantes :
1. Appeler un programme base de données OS/400 pour activer les « holey inserts ».
2. Faire un IPL du système activer la fonction.
3. Utiliser une description de fichier distincte, en sortie uniquement, et préciser
SEQONLY *YES et le blocage en sortie.
La séquence d’appel, sur une ligne de commande d’écran passif, pour activer les
holey inserts est CALL QDBENCWT ‘1’ ; pour la désactiver, il faut entrer CALL
QDBENCWT ‘0’. Notons que l’appel de ce programme base de données active les ajouts
simultanés pour tous les fichiers de la base de données du système. Un fichier
physique base de données ne peut bénéficier de l’algorithme des holey inserts
que s’il a été créé avec l’attribut REUSEDLT (Reuse Deleted Records) à *YES, ou
modifié en utilisant CHGPF pour avoir l’attribut REUSEDLT à *YES.
Les holey inserts permettent à plusieurs jobs d’ajouter simultanément des enregistrements
au même fichier base de données, même si un autre job est en train de faire de
même. La base de données calcule le point d’insertion du nouvel enregistrement
pour les jobs suivants et les laisse poursuivre le traitement. Si certains enregistrements
ne satisfont pas aux tests de validation, la base de données ne les acceptera
pas dans le fichier. Elle insèrera alors un enregistrement supprimé (logiquement,
un trou du fichier) à la place de l’enregistrement rejeté, d’où le nom holey inserts.
Grâce aux « holey inserts », plusieurs jobs peuvent utiliser simultanément
la CPU
Si la fonction holey inserts n’est pas activée, aucun enregistrement supprimé
n’est inséré à la place de l’enregistrement rejeté. Les éventuels enregistrements
suivants ajoutés au fichier sont alors remontés d’une position d’enregistrement
dans le fichier. Compte tenu de l’incertitude sur le point d’insertion du début
du prochain job, les jobs suivants ne peuvent procéder à des insertions qu’une
fois que le job en cours a fini de procéder à des ajouts.
Grâce aux holey inserts, plusieurs jobs peuvent utiliser simultanément la CPU.
Cette technique n’améliorera peut-être pas beaucoup les performances sur un système
à une seule CPU, parce que l’opération de validation peut elle-même beaucoup solliciter
la CPU et, par conséquent, il ne restera peut-être pas beaucoup de CPU pour les
autres jobs pendant la validation. En revanche, si on possède un processeur à
n-voies, cette technique permet aux autres jobs concurrents ajoutant des enregistrements
au fichier d’utiliser les autres CPU et de transférer les données dans le fichier
beaucoup plus rapidement.
Si on procède à la journalisation, certains numéros d’ordre (le comptage, par
exemple) des enregistrements du journal risquent d’être modifiés. Cela constitue
un des inconvénients des holey inserts. Cela ne devrait pas poser de problème
avec un logiciel de haute disponibilité.
Caches de journaux batch pour AS/400
par Larry Youngren Bien que la PRPQ soit principalement destinée à des jobs batch, certaines La PRPQ Batch Journal Caching permet de mettre en oeuvre sélectivement une Pour avoir des performances de journalisation optimales, il faut prendre Difficultés techniques De plus, ce type de journalisation risque de ne pas convenir à des applications La PRPQ Batch Journal Caching est surtout intéressante quand on utilise |
On peut aussi mettre en oeuvre la PRPQ de manière sélective pour optimiser les performances d’exécution de charges de travail batch nocturnes, puis la désactiver chaque matin pour optimiser la faculté de reprise pendant l’exécution d’applications interactives. L’avantage est double : on accélère certains jobs batch nocturnes tout en conservant une excellente reprise pour le travail interactif de jour. Larry Yougren travaille chez IBM à Rochester |
Pour beaucoup d’utilisateurs AS/400, une bonne sauvegarde du système repose
sur la journalisation de la base de données
Téléchargez cette ressource

Percer le brouillard des rançongiciels
Explorez les méandres d’une investigation de ransomware, avec les experts de Palo Alto Networks et Unit 42 pour faire la lumière dans la nébuleuse des rançongiciels. Plongez au cœur de l’enquête pour comprendre les méthodes, les outils et les tactiques utilisés par les acteurs de la menace. Découvrez comment prévenir les attaques, les contrer et minimiser leur impact. Des enseignements indispensables aux équipes cyber.