Paramètres d'Up ! Object Management System
Tous les programmes Up ! Application System possèdent les paramètres énumérés ci-après. Certains paramètres font référence à des fichiers ou à des chemins d'accès. En ce cas, il est possible d'employer des variables environnement dans l'expression des chemins d'accès. Exemple :
Tmp=${UPS_HOME}/demo/tmp/${UPS_USER}
D'autre part, le séparateur de répertoire est le caractère division /
et les noms de fichiers ou de répertoires peuvent utiliser les partitions montées automatiquement par Up ! System.
Les paramètres sont lus successivement dans :
Les valeurs des paramètres comportant des caractères espace doivent être mises entre caractères guillemet " ou entre caractères apostrophe ' .
D'autre part, la configuration du noyau d'exécution est isolée dans un fichier à part. Il s'agit de la définition des entrepôts stockant les objets.
Ceci permet de la partager entre plusieurs programmes, voire ces programmes peuvent via le même noyau partager des objets lors de leur exécution.
Elle est sélectionnée avec le paramètre Noyau. La configuration par défaut est ${UPS_HOME}/ini/${UPS_LANGUAGE}/upsoms.ini en mode mono-utilisateur ou ${UPS_HOME}/ini/${UPS_USER}/upsoms.ini en mode multi-utilisateur.
Paramètres d'exécution
ArchiverFichier
ArchiverFichier permet de spécifier une commande d'archivage d'un fichier journal ou d'un fichier de persistance. Le paramètre NomFichier représente le nom du fichier à archiver. Par convention, le code retour 0 correspond à un fonctionnement correct de la commande d'archivage. Par défaut, il n'y a pas d'archivage des fichiers journaux ou de persistance.
ArchiverFichier=/users/outils/bin/monarchivage ${NomFichier}
EntrepotDefaut
EntrepotDefaut permet de spécifier le nom de l'entrepôt de mémoire par défaut dans laquelle seront créés les objets pour lesquels aucun entrepôt particulièr n'est spécifié. Par défaut, il s'agit de l'entrepôt système.
EntrepotDefaut=users
EntrepotRetour
EntrepotRetour permet de spécifier le nom de l'entrepôt de mémoire dans laquelle seront conservées les valeurs des objets transactionnels avant qu'ils ne soient modifiés. Par défaut, il s'agit de l'entrepôt système.
EntrepotRetour=users
FichierPersistance
FichierPersistance permet de spécifier le nom du fichier mémorisant le dernier état de persistance du programme.
Si le fichier n'existe pas, il s'agit alors de la première exécution du programme.
Si le fichier existe, l'exécution du programme reprend à l'état enregistré dans ce fichier. En ce cas, chaque entrepôt doit être persistant et leurs fichiers doivent dater de la même exécution que le fichier de persistance du programme. A l'issu de l'exécution, l'état du programme est enregistré dans les fichiers de persistance du programme et des entrepôts.
FichierPersistance=${UPS_HOME}/upsvtm/upsoms/${APPLICATION}.uof
GardeVerrou
GardeVerrou permet de spécifier le temps maximal d'attente en secondes après un verrou lorsqu'il y a une concurrence d'accès entre deux tâches. Par défaut, ce délai est de 60 secondes. Si ce délai est expiré, une erreur est envoyée.
GardeVerrou=120
NbProcessus
NbProcessus permet de spécifier le nombre de processus que Up ! Object Management System sait gérer simultanément sur un noyau d'exécution partagé. Par défaut, la valeur est 4.
NbProcessus=20
NbSessions
NbSessions permet de spécifier le nombre de sessions à Up ! Object Management System. Chaque tâche a sa propre session. Par défaut, la valeur est 8. La valeur maximale est 256.
NbSessions=40
Noyau
Noyau permet de spécifier le fichier contenant la configuration d'exécution de Up ! Object Management System. Par défaut, la valeur est ${UPS_HOME}/ini/upsoms.ini ou ${UPS_HOME}/ini/${UPS_USER}/upsoms.ini.
Noyau=mon-noyau
PeriodeMoniteur
PeriodeMoniteur permet de spécifier la période d'activation de la tâche Moniteur. Cette période est exprimée en secondes. Par défaut, la valeur est 0 aussi il n'y a pas de tâche Moniteur.
PeriodeMoniteur=300
PeriodePerformance
PeriodePerformance permet de spécifier la période de mesure des performances du noyau par la tâche Moniteur. Cette période est exprimée en secondes. Par défaut, la valeur est 0 aussi il n'y a pas de mesure des performances.
Ce journal est conservé dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upskrn-performance-${UPS_SESSION}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upskrn-performance-${UPS_SESSION}.log en mode multi-utilisateur.
PeriodePerformance=1
PeriodeSynchronisation
PeriodeSynchronisation permet de spécifier la période de synchronisation entre les fichiers de persistance des entrepôts et les fichiers journaux. Cette période est exprimée en secondes. Par défaut, la valeur est 180.
PeriodeSynchronisation=60
Reprise
Reprise permet de spécifier le mode de reprise de l'exécution d'un programme suite à une panne ayant occasionné un arrêt brutal. Par défaut, la valeur est automatique.
Sémantique de la valeur | Valeur de l'option |
Le programme ne peut être relancé. | Sans |
S'il y a des journaux intègres, le mécanisme de reprise est automatiquement activé. S'il n'y a pas de journaux ou qu'ils ne sont pas intègres, le programme ne peut être relancé. | Automatique |
S'il y a des journaux intègres, le mécanisme de reprise est automatiquement activé. S'il n'y a pas de journaux ou qu'ils ne sont pas intègres, le programme est relancé et ses données sont dans un état inconnu. Le programme risque de mal fonctionner. | Forcer |
Reprise=Forcer
Semaphore
Semaphore permet de spécifier le nom du groupe de sémaphores gérant la mémoire partagée. Par défaut, la valeur est ups.
Semaphore=SyncApp
Ce groupe de sémaphore est uniquement utilisé si l'applicatif fonctionne en multi-processus i.e. s'il comporte des entrepôts protégés ou publics.
TailleMaximaleCaractere
TailleMaximaleCaractere permet de spécifier la taille maximale des chaînes des objet du type Caractere en nombre de caractères.
Ce nombre ne peut excéder la capacité du ramasse-miettes définie par TailleBloc*NbBlocs.
La taille par défaut est 256.
TailleMaximaleCaractere=512
TailleMaximaleTableau
TailleMaximaleTableau permet de spécifier la taille maximale des tableaux du type Tableau en nombre d'éléments.
Ce nombre ne peut excéder la capacité du ramasse-miettes définie par TailleBloc*NbBlocs.
La taille par défaut est 256.
TailleMaximaleCaractere=512
Tmp
Tmp permet de spécifier le répertoire où sont rangés les fichiers temporaires. Par défaut, le répertoire est le répertoire courant.
Tmp=/tmp
TracerCycleDeVieObjets
TracerCycleDeVieObjets permet de tracer le cycle de vie des objets gérés par Up ! Object Management System. La valeur par défaut est Non.
Cette trace est inscrite dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode multi-utilisateur.
TracerCycleDeVieObjets=Oui
TracerPagination
TracerPagination permet de tracer l'activité d'Up ! Object Management System. La valeur par défaut est Non.
Cette trace est inscrite dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode multi-utilisateur.
TracerPagination=Oui
TracerSynchronisations
TracerSynchronisations permet de tracer la synchronisation des tâches au sein d'Up ! Application System. La valeur par défaut est Non.
Cette trace est inscrite dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode multi-utilisateur.
TracerSynchronisations=Oui
TracerVerrouillageObjets
TracerSynchronisations permet de tracer le verrouillage des objets effectué par Up ! Objet Management System. La valeur par défaut est Non.
Cette trace est inscrite dans le fichier ${UPS_HOME}/log/${UPS_LANGUAGE}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode mono-utilisateur ou dans le fichier ${UPS_HOME}/log/${UPS_USER}/${UPS_APPLICATION}-upsoms-${UPS_SESSION}.log en mode multi-utilisateur.
TracerVerrouillageObjets=Oui
VerifierAdresse
VerifierAdresse permet de demander à Up ! Object Management System de vérifier chaque adresse des objets du programme avant de les utiliser. Cela permet de détecter les adresses invalides. Par défaut, la vérification n'a pas lieu.
VerifierAdresse=Oui
Optimisation du cycle de vie des objets
Type | Conservation possible | Taille par défaut du segment |
EnregistrementJournal | Non. | 64. |
ImageAvant | Oui. | 64. |
IObjet | Oui. | 16. |
ConserverObjets, quand le paramètre est possible, spécifie qu'au plus TailleSegment objets du type sont conservés pré-construits en anté-mémoire au lieu d'être détruits.
Quand un nouvel objet du type est demandé, il est prélevé de l'anté-moire s'il en existe un pré-construit. Cela évite de réaliser des enchaînements de destruction / libération / ... / allocation / création d'objets de ce type trop fréquents.
Par défaut, les objets ne sont pas conservés en anté-mémoire.
ConserverObjetsImageAvant=Oui
TailleSegment spécifie la taille d'un segment de mémoire dédié à un objet du type concerné en spécifiant le nombre d'objets de ce dernier par segment de mémoire. Ce nombre ne peut excéder la capacité du ramasse-miettes définie par TailleBloc*NbBlocs.
La valeur est 0 signifie que le type n'a pas ses propres buffers et que les objets du type sont alloués dans le tas commun.
TailleSegmentEnregistrementJournal=128
TailleSegmentImageAvant=128
TailleSegmentIOBjet=32
Le type interne EnregistrementJournal est utilisé pour journaliser une modification d'un objet dans le journal en cas de fonctionnement transactionnel avec persistance. Confère l'instruction Transactionnel.
Le type interne ImageAvant est utilisé pour faire une copie d'un objet avant qu'il ne soit modifié en cas de fonctionnement transactionnel en multi-tâche. Confère l'instruction Transactionnel.
L'interface interne IObjet est utilisé en tant que lien entre les objets des types hérités et ceux des types héritants. Confère l'instruction HeriteDe.
Paramètres de la configuration de chaque entrepôt
La section UpsOms énumère toutes les entrepôts au moyen des entrées Entrepot?. Le premier entrepôt est obligatoirement l'entrepôt Systeme. Les entrepôts suivants sont les entrepôts de mémoire publique, puis les entrepôts de mémoire protégée et enfin les entrepôts de mémoire privée.
Le fichier de la configuration comporte ensuite une section par entrepôt portant leur nom. Voici les entrées possibles de ces sections définissant le paramétrage d'un entrepôt :
AllocationUnique
AllocationUnique permet de spécifier que tous les blocs de mémoire de l'entrepôt sont alloués en une unique allocation. L'avantage est de ne plus réaliser d'allocations et de désallocations de mémoire physique en cours d'exécution, ce qui fait moins travailler le système d'exploitation. L'inconvénient est de se réserver toute la mémoire même si une fraction de celle-ci est uniquement utile à un moment donné.
Mode d'allocation | Valeur de l'option |
Allocation unique. | Oui |
Allocation fractionnée. | Non |
AllocationUnique=Oui
FichierJournal
FichierJournal permet de spécifier le nom générique des fichiers journaux mémorisant les modifications apportées dans la mémoire cache de l'entrepôt. La présence des fichiers journaux permet d'activer le mécanisme de reprise qui sera utilisé si le processus est interrompu suite à un dysfonctionnement ou suite à une panne matérielle. Par défaut, les modifications ne sont pas journalisées.
FichierJournal=${UPS_HOME}/upsvtm/upsoms/${APPLICATION}.ulg
FichierPersistance
FichierPersistance permet de spécifier le nom du fichier mémorisant le dernier état de persistance de l'entrepôt. Si le fichier n'existe pas, il s'agit alors de la première exécution du programme. Si le fichier existe, l'exécution du programme à l'état de persistance enregistré dans ce fichier. Le fichier doit dater de la même exécution que le fichier de persistance du programme desservant cet entrepôt.
FichierPersistance=${UPS_HOME}/upsvtm/upsoms/systeme.uwf
Fixe
Fixe permet de spécifier que l'entrepôt est de la mémoire fixe ou de la mémoire mobile. Par défaut, il s'agit de mémoire fixe.
Type de mémoire | Valeur de l'option |
Mémoire fixe. | Oui |
Mémoire mobile. | Non |
Fixe=Oui
HashCode
HashCode permet de spécifier la taille du hash-code permettant de retrouver les blocs de mémoire. La valeur de ce paramètre est proportionnelle aux nombres de blocs dans l'entrepôt, modulé par le nombre moyen de blocs contigus. Par défaut, la valeur est 256 entrées. Plus cette valeur est grande, plus il sera rapide de retrouver un bloc mémoire, donc un objet.
HashCode=512
MaxFichierEchange
MaxFichierEchange permet de spécifier la taille maximale d'un fichier d'échange. Cette valeur est exprimée en milliers de blocs. La valeur par défaut est 50, ce qui représente 50 Mo pour des blocs de taille 1024 octets.
MaxFichierEchange=100
MaxFichierJournal
MaxFichierJournal permet de spécifier la taille maximale d'un fichier journal. Cette valeur est exprimée en mégaoctets. La valeur par défaut est 50 Mo.
MaxFichierJournal=100
NbBlocs
NbBlocs permet de spécifier la taille de l'entrepôt en nombre de blocs, sachant que la taille d'un bloc est fixée par le paramètre TailleBloc de Up ! Object Management System. Plus ce paramètre est grand, plus l'entrepôt pourra contenir d'objets simultanément en mémoire. Par défaut, la valeur est 64 blocs.
NbBlocs=64
NbBlocsContigus
NbBlocsContigus permet de spécifier le nombre de blocs de mémoire contiguë que le ramasse-miettes de Up ! Object Management System sait gérer. Pour les types dont la taille d'allocation est fixée par programmation, ce paramètre n'entre pas en ligne de compte. En revanche, pour les types dont la taille d'allocation est libre, cette dernière est calculée d'après la valeur de ce paramètre. Ainsi, plus la taille de ce paramètre est importante, plus il y a d'objets de ces types d'alloués simultanément. Par défaut, la valeur est 4 et elle ne peut excéder 65536.
NbBlocsContigus=8
NbFichiersJournaux
NbFichiersJournaux permet de spécifier le nombre de fichiers jounaux que Up ! Object Management System doit gérer pour mémoriser les modifications apportées à la mémoire cache de l'entrepôt. Il doit y avoir au moins deux fichiers journaux, ce qui est la valeur par défaut.
NbFichiersJournaux=4
NbQueues
NbQueues permet de spécifier le nombre de files d'attente que Up ! Object Management System sait gérer simultanément. Ces files d'attente servent pour paralléliser le verrouillage des objets. Plus il y a de files d'attente, moins il y a d'interblocages mais plus il y a de ressources systèmes consommées. Par défaut, la valeur est 16.
NbQueues=32
NbVerrous
NbVerrous permet de spécifier le nombre de verrous que Up ! Object Management System sait maintenir simultanément sur des blocs de mémoire. Par défaut, la valeur 24 sachant que Up ! Object Management System s'en réserve 12.
NbVerrous=64
PeriodeRetasserFichier
PeriodeRetasserFichier permet de spécifier la période en secondes au bout de laquelle Up ! Object Management System doit retasser le fichier d'échange de cet entrepôt. Selon le type de travaux, il est nécessaire ou non de retasser les blocs libres des fichiers d'échange, sachant que cette opération réalisée en tâche de fond est coûteuse en ressources. Si la valeur est 0, le retassement n'a jamais lieu, ce qui est la valeur par défaut.
PeriodeRetasserFichier=60
PeriodeRetasserMemoire
PeriodeRetasserMemoire permet de spécifier la période en secondes au bout de laquelle Up ! Object Management System doit retasser la mémoire de cet entrepôt. Selon le type de travaux, il est nécessaire ou non de retasser les blocs de la mémoire de travail, sachant que cette opération réalisée en tâche de fond est coûteuse en ressources. Si la valeur est 0, le retassement n'a jamais lieu, ce qui est la valeur par défaut.
PeriodeRetasserMemoire=60
Serveur
Serveur permet de spécifier que l'entrepôt est constitué de mémoire protégée ou publique et qu'il est géré par ce processus serveur. Par défaut, il s'agit de mémoire privée au processus, celui-ci étant son propre serveur.
Type de mémoire | Valeur de l'option |
Mémoire publique. | Nom du programme serveur@nom de la machine serveur. |
Mémoire protégée. | Nom du programme serveur. |
Mémoire privée. | Pas de valeur. |
Serveur=SrvFinance
TailleBloc
TailleBloc permet de spécifier la taille en octets d'un bloc de mémoire alloué par le ramasse-miettes de Up ! Object Management System. Plus la taille est importante, moins il y a d'opérations d'allocations / désallocations de mémoire du système d'exploitation ou d'usage des fichiers d'échange, mais plus le programme est consommateur de mémoire. Par défaut, la valeur est 1024. Sa valeur doit toujours être une puissance de deux.
TailleBloc=512
TacheFichier
TacheFichier permet de spécifier que le fichier d'échange de l'entrepôt est géré par une tâche spécialisée. Par défaut, il n'y a pas de tâche spécialisée. Cela est particulièrement pertinent si votre applicatif est multi-processus. Par contre, si votre applicatif ne comporte qu'une seule tâche, cela n'est pas recommandé car cela alourdit l'accès aux objets.
Type de gestion des fichiers d'échange | Valeur de l'option |
Tâche spécialisée. | Oui. |
Gestion par la tâche cliente. | Non. |
TacheFichier=Oui
Exemple de configuration d'Up ! Object Management System
Fichier upsaps.ini
; -------------------------------------------------------------------
; Fichier : upsaps.ini
; Objet : Initialisation d'Up ! Application System.
;
; Module : Up ! Application System.
; Auteur-Date : DUVAL Jean-Pierre - Novembre 2003.
; -------------------------------------------------------------------
; Observations
;
;
; -------------------------------------------------------------------
[UpsOms]
ArchiverFichier=/users/outils/bin/monarchivage ${NomFichier}
ConserverObjetsImageAvant=Oui
EntrepotDefaut=users
EntrepotRetour=users
FichierPersistance=${UPS_HOME}/upsvtm/upsoms/${APPLICATION}.uof
GardeVerrou=120
NbProcessus=20
NbSessions=40
Noyau=mon-noyau
PeriodeMoniteur=300
PeriodePerformance=1
PeriodeSynchronisation=60
Reprise=Forcer
Semaphore=SyncApp
TailleMaximaleCaractere=512
TailleMaximaleCaractere=512
TailleSegmentEnregistrementJournal=128
TailleSegmentImageAvant=0
Tmp=/tmp
TracerCycleDeVieObjets=Oui
TracerPagination=Oui
TracerSynchronisations=Oui
TracerVerrouillageObjets=Oui
VerifierAdresse=Oui
Fichier upsoms.ini
; -------------------------------------------------------------------
; Fichier : upsoms.ini
; Objet : Initialisation d'Up ! Object Management System.
;
; Module : Up ! Application System.
; Auteur-Date : DUVAL Jean-Pierre - Novembre 2003.
; -------------------------------------------------------------------
; Observations
;
;
; -------------------------------------------------------------------
[UpsOms]
Entrepot1=systeme
Entrepot2=users
[systeme]
NbBlocs=64
AllocationUnique=Oui
Fixe=Oui
PeriodeRetasserMemoire=100
[user]
HashCode=10
AllocationUnique=Oui
Fixe=Non
NbBlocs=40
;Fixe=Oui
;NbBlocs=64
PeriodeRetasserMemoire=0
PeriodeRetasserFichier=0
TacheFichier=Non