FR3078462A1 - METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS - Google Patents

METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS Download PDF

Info

Publication number
FR3078462A1
FR3078462A1 FR1851581A FR1851581A FR3078462A1 FR 3078462 A1 FR3078462 A1 FR 3078462A1 FR 1851581 A FR1851581 A FR 1851581A FR 1851581 A FR1851581 A FR 1851581A FR 3078462 A1 FR3078462 A1 FR 3078462A1
Authority
FR
France
Prior art keywords
tokens
software application
software applications
software
resource
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1851581A
Other languages
French (fr)
Other versions
FR3078462B1 (en
Inventor
Paul Chaignon
Diane Adjavon
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Orange SA
Original Assignee
Orange SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Orange SA filed Critical Orange SA
Priority to FR1851581A priority Critical patent/FR3078462B1/en
Publication of FR3078462A1 publication Critical patent/FR3078462A1/en
Application granted granted Critical
Publication of FR3078462B1 publication Critical patent/FR3078462B1/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

Le procédé de contrôle comprend : - l'association à chaque application logicielle (APP1-APPN) d'un ensemble de jetons (TB1-TBN), chaque jeton représentant un temps d'accès prédéterminé à la ressource ; - sur réception d'un paquet de données destiné à une application : ○ si l'ensemble de jetons de cette application comprend au moins un jeton, le traitement du paquet et la décrémentation de l'ensemble de jetons de l'application d'un nombre de jetons correspondant à la durée d'accès à la ressource par l'application lors du traitement ; ○ sinon, le rejet du paquet ; - sur détection d'un événement de mise à jour relatif à au moins un sous-ensemble d'applications : ○ pour chaque application du sous-ensemble, la détermination d'un nombre de jetons et l'ajout du nombre de jetons déterminé à l'ensemble de jetons de l'application dans la limite d'un nombre maximum ; ○ si, pour au moins une application du sous-ensemble, le nombre de jetons déterminé est supérieur au nombre de jetons ajouté, et s'il existe au moins une application dont l'ensemble de jetons a un nombre de jetons inférieur au nombre maximum fixé pour cette application, la réattribution du nombre de jetons résiduels à ladite au moins une application.The control method comprises: - associating with each software application (APP1-APPN) a set of tokens (TB1-TBN), each token representing a predetermined access time to the resource; - upon receipt of a data packet for an application: ○ if the token set of this application includes at least one token, the processing of the packet and the decrementation of the set of tokens of the application of a number of tokens corresponding to the duration of access to the resource by the application during processing; ○ otherwise, rejection of the packet; - on detecting an update event relating to at least one subset of applications: ○ for each application of the subset, determining a number of tokens and adding the number of tokens determined to the set of application tokens within the limit of a maximum number; ○ if, for at least one application of the subset, the number of tokens determined is greater than the number of tokens added, and if there is at least one application whose set of tokens has a number of tokens less than the maximum number set for this application, the reassignment of the number of residual tokens to said at least one application.

Description

Arrière-plan de l'inventionInvention background

L'invention se rapporte au domaine général des systèmes informatiques et des réseaux de communication.The invention relates to the general field of computer systems and communication networks.

Elle concerne plus particulièrement le contrôle de l'accès à des ressources d'un système informatique et notamment à son unité centrale de traitement (ou CPU pour Central Processing Unit en anglais) par une pluralité d'applications logicielles s'exécutant sur ce système informatique. Par application logicielle on entend ici un programme ou un processus informatique apte à exécuter tout type de traitement.It relates more particularly to the control of access to resources of a computer system and in particular to its central processing unit (or CPU for Central Processing Unit in English) by a plurality of software applications executing on this computer system. . By software application here is meant a computer program or process capable of performing any type of processing.

On assiste aujourd'hui à une évolution dans la manière de construire et d'implémenter les réseaux de communication, afin notamment de faire face à la demande croissante de nouveaux services. En particulier, le récent paradigme de la virtualisation des fonctions réseaux (ou Network Function Virtualization (NFV) en anglais) propose d'implémenter des services réseaux sous forme d'applications logicielles (ou tout simplement de logiciels) s'exécutant sur des systèmes informatiques standards, non spécialisés. Pour atteindre les performances requises, l'architecture de ces applications logicielles doit être adaptée et optimisée pour le traitement des paquets de données échangés sur les réseaux (aussi couramment désignés par « paquets réseaux »).Today we are witnessing an evolution in the way of building and implementing communication networks, in particular in order to meet the growing demand for new services. In particular, the recent paradigm of virtualization of network functions (or Network Function Virtualization (NFV) in English) proposes to implement network services in the form of software applications (or quite simply software) executing on computer systems. standard, not specialized. To achieve the required performance, the architecture of these software applications must be adapted and optimized for the processing of data packets exchanged on networks (also commonly referred to as “network packets”).

Le traitement logiciel de paquets réseaux consiste à exécuter un ensemble d'opérations pour chaque paquet de données reçu, à la fois sur le paquet (comme par exemple la mise à jour ou l'ajout de champs au paquet de données) et/ou sur le système informatique sur lequel s'exécute le traitement logiciel (comme par exemple la mise à jour d'une structure de données) pour éventuellement envoyer le paquet de données vers un autre système informatique tel qu'une machine virtuelle ou un autre hôte. Pour exécuter ces opérations, deux approches sont généralement envisagées :Software processing of network packets consists of executing a set of operations for each data packet received, both on the packet (such as updating or adding fields to the data packet) and / or on the computer system on which the software processing is carried out (such as updating a data structure for example) to optionally send the data packet to another computer system such as a virtual machine or another host. To carry out these operations, two approaches are generally considered:

— selon une première approche, chaque opération du traitement logiciel à réaliser sur les paquets réseaux est exécutée par un processus différent. Lorsqu'un processus a achevé de réaliser l'opération qui lui est confiée sur un paquet réseau, il transmet ce paquet réseau au processus suivant en charge d'exécuter l'opération suivante sur le paquet ;- according to a first approach, each operation of the software processing to be carried out on the network packets is executed by a different process. When a process has completed performing the operation entrusted to it on a network packet, it transmits this network packet to the next process responsible for performing the next operation on the packet;

— selon une seconde approche, les paquets réseaux reçus sont répartis entre différents processus, chaque processus exécutant l'ensemble des opérations à réaliser sur les paquets qui lui sont attribués.- according to a second approach, the network packets received are distributed between different processes, each process executing all of the operations to be performed on the packets which are allocated to it.

Cette seconde approche, couramment utilisée, est aussi connue sous l'appellation de modèle « run-to-completion » (ou d'exécution jusqu'à achèvement en français). En d'autres mots, chaque paquet réseau reçu par le processus auquel il est confié est traité complètement par celuici (i.e. toutes les opérations dont le processus est en charge sont exécutées par celui-ci sur le paquet réseau) avant de débuter le traitement d'un autre paquet réseau. Ce modèle permet d'éviter des transmissions coûteuses des paquets réseaux entre différents processus.This second approach, commonly used, is also known as the “run-to-completion” model (or execution until completion in French). In other words, each network packet received by the process to which it is entrusted is processed completely by it (ie all the operations for which the process is in charge are executed by it on the network packet) before starting the processing of another network packet. This model avoids costly transmissions of network packets between different processes.

Pour tirer pleinement profit du modèle run-to-completion sur un système informatique ayant une unité centrale de traitement ou un processeur multi-cœur, il est préférable de dédier de façon propre à chaque processus, un ou plusieurs cœurs CPU du système informatique. Une telle configuration permet d'éviter de devoir gérer des changements de contexte (ou « context switch » en anglais) entre les différents cœurs CPU du système informatique. De tels changements de contexte sont particulièrement coûteux en temps CPU : toutes les informations relatives au processus considéré qui traduisent notamment son état (ex. drapeaux, registres, pointeurs d'instruction, etc., manipulés par le processus) doivent être sauvegardées pour pouvoir exécuter le processus sur un nouveau cœur CPU ; de même, les caches doivent être remis à zéro sur le nouveau cœur CPU.To take full advantage of the run-to-completion model on a computer system having a central processing unit or a multi-core processor, it is preferable to dedicate one or more CPU cores of the computer system to each process. Such a configuration makes it possible to avoid having to manage context changes (or “context switch” in English) between the different CPU cores of the computer system. Such context changes are particularly costly in CPU time: all the information relating to the process under consideration which in particular translates its state (eg flags, registers, instruction pointers, etc., manipulated by the process) must be saved in order to be able to execute the process on a new CPU core; similarly, the caches must be reset to zero on the new CPU core.

En outre, il est courant d'avoir plusieurs processus ou plusieurs applications logicielles de traitement des paquets réseaux s'exécutant sur un même système informatique, en vue notamment d'utiliser de manière efficace les ressources de ce système informatique. Ces différentes applications logicielles peuvent éventuellement être rattachées à des entités différentes (par exemple à divers clients du système informatique).In addition, it is common to have several processes or several software applications for processing network packets running on the same computer system, in particular with a view to efficiently using the resources of this computer system. These different software applications may possibly be attached to different entities (for example to various clients of the computer system).

Dans un tel contexte, se pose le problème du partage des ressources du système informatique (et notamment de son CPU ou de ses multiples cœurs CPU) entre les différentes applications logicielles qu'il héberge pour permettre leur exécution. Le modèle « run-tocompletion » complique quelque peu ce partage.In such a context, there is the problem of sharing the resources of the computer system (and in particular of its CPU or of its multiple CPU cores) between the different software applications that it hosts to allow their execution. The “run-tocompletion” model somewhat complicates this sharing.

En effet, dans un modèle d'ordonnancement préemptif classique (ou « preemptive scheduling » en anglais), il est d'usage de répartir l'accès au(x) cœur(s) CPU du système informatique entre les différentes applications logicielles concernées en attribuant à celles-ci des unités de temps CPU pendant lesquelles les applications logicielles peuvent chacune accéder librement au(x) cœur(s) CPU. Si par exemple, n unités de temps CPU sont allouées à chaque application, n désignant un entier positif, toutes les n unités de temps, l'application en cours d'exécution sur le cœur CPU considéré est interrompue et remplacée par une autre application de manière à assurer un partage équitable du temps CPU entre les différentes applications. Toutefois, conformément au modèle « run-to-completion », l'exécution d'une application (i.e. le traitement d'un paquet réseau) ne peut être interrompue tant que l'ensemble des opérations prévues par cette application n'est pas achevé.Indeed, in a classic preemptive scheduling model (or “preemptive scheduling” in English), it is customary to distribute access to the CPU core (s) of the computer system between the different software applications concerned. allocating to them CPU time units during which the software applications can each freely access the CPU core (s). If, for example, n units of CPU time are allocated to each application, n designating a positive integer, every n units of time, the application running on the CPU core considered is interrupted and replaced by another application of so as to ensure an equitable sharing of CPU time between the different applications. However, according to the “run-to-completion” model, the execution of an application (ie the processing of a network packet) cannot be interrupted until all the operations planned by this application are completed .

L'approche adoptée dans l'état actuel de la technique pour exécuter plusieurs applications logicielles selon un modèle « run-to-completion » sur un même système informatique hôte multi-cœur, tout en garantissant une répartition équitable des ressources du système informatique entre les différentes applications, consiste à allouer de façon dédiée à chacune des applications logicielles un ou plusieurs cœurs CPU. Cette approche présente cependant deux inconvénients majeurs.The approach adopted in the current state of the art for executing several software applications according to a “run-to-completion” model on the same multi-core host computer system, while guaranteeing an equitable distribution of the resources of the computer system between the different applications, consists in allocating in a dedicated way to each of the software applications one or more CPU cores. This approach has two major drawbacks, however.

Tout d'abord, elle requiert de dédier des ressources du système informatique au démultiplexage des paquets réseaux vers les différents cœurs CPU : ces ressources peuvent être constituées d'un ou de plusieurs cœurs CPU, ou la ou les carte(s) réseau du système informatique doiv(en)t être en mesure de réaliser elle(s)-même(s) ce démultiplexage.First of all, it requires dedicating computer system resources to demultiplexing network packets to the different CPU cores: these resources can consist of one or more CPU cores, or the network card (s) of the system IT must be able to perform this demultiplexing itself.

En outre, cette approche ne permet pas une répartition très fine et par conséquent très efficace, des ressources du système informatique entre les différentes applications. Typiquement, deux applications logicielles ne peuvent pas partager un même cœur CPU où l'une d'entre elles se voit attribuer 1.5 cœur CPU tandis que l'autre disposerait de 2.5 cœurs CPU.In addition, this approach does not allow a very fine and consequently very efficient distribution of the resources of the computer system between the different applications. Typically, two software applications cannot share the same CPU core where one of them is allocated 1.5 CPU core while the other would have 2.5 CPU cores.

Objet et résumé de l'inventionSubject and summary of the invention

L'invention permet de remédier notamment aux inconvénients de l'état de la technique en proposant un procédé de contrôle d'un accès à une ressource d'un système informatique par une pluralité d'applications logicielles destinées à s'exécuter sur le système informatique, ce procédé de contrôle comprenant :The invention overcomes in particular the drawbacks of the state of the art by proposing a method of controlling access to a resource of a computer system by a plurality of software applications intended to run on the computer system. , this control process comprising:

— une étape d'association, à chaque application logicielle, d'un ensemble dédié de jetons, chaque jeton représentant une période de temps prédéterminée d'accès à ladite ressource ;A step of associating, with each software application, a dedicated set of tokens, each token representing a predetermined period of time of access to said resource;

— sur réception d'un paquet de données destiné à être traité par une dite application logicielle :- upon receipt of a data packet intended to be processed by a so-called software application:

o si l'ensemble de jetons associé à cette application logicielle comprend au moins un jeton :o if the set of tokens associated with this software application includes at least one token:

une étape de traitement du paquet de données par l'application logicielle en utilisant la ressource ;a step of processing the data packet by the software application using the resource;

une étape de décrémentation de l'ensemble de jetons associé à l'application logicielle d'un nombre de jetons correspondant à une durée d'accès à ladite ressource par l'application logicielle pendant l'étape de traitement du paquet de données ;a step of decrementing the set of tokens associated with the software application by a number of tokens corresponding to a duration of access to said resource by the software application during the step of processing the data packet;

o sinon, une étape de rejet du paquet de données ; et — sur détection d'au moins un événement de mise à jour relatif à au moins un sous-ensemble d'applications logicielles de la pluralité d'applications logicielles, une étape de mise à jour comprenant :o otherwise, a step of rejecting the data packet; and - upon detection of at least one update event relating to at least one subset of software applications from the plurality of software applications, an update step comprising:

o pour chaque application logicielle dudit sous-ensemble :o for each software application of said subset:

une étape de détermination d'un nombre de jetons destiné à cette application logicielle ; et une étape d'ajout du nombre de jetons déterminé à l'ensemble de jetons dédié associé à cette application logicielle dans la limite d'un nombre maximum de jetons fixé pour cette application logicielle ; et o si, pour au moins une application logicielle du sous-ensemble d'applications logicielles, le nombre de jetons déterminé est supérieur au nombre de jetons ajouté, et s'il existe au moins une autre application logicielle de la pluralité d'applications logicielles qui est associée à un ensemble de jetons ayant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette autre application logicielle, une étape de réattribution des jetons résiduels à ladite au moins une autre application.a step of determining a number of tokens intended for this software application; and a step of adding the number of tokens determined to the set of dedicated tokens associated with this software application within the limit of a maximum number of tokens fixed for this software application; and o if, for at least one software application of the subset of software applications, the number of tokens determined is greater than the number of tokens added, and if there is at least one other software application of the plurality of software applications which is associated with a set of tokens having a number of tokens lower than the maximum number of tokens set for this other software application, a step of reassigning the residual tokens to said at least one other application.

Corrélativement, l'invention propose aussi un dispositif de contrôle d'un accès à une ressource d'un système informatique par une pluralité d'applications logicielles destinées à s'exécuter sur le système informatique, chaque application logicielle étant associée à un ensemble dédié de jetons, chaque jeton représentant une période de temps prédéterminée d'accès à ladite ressource, ledit dispositif de contrôle comprenant :Correlatively, the invention also proposes a device for controlling access to a resource of a computer system by a plurality of software applications intended to run on the computer system, each software application being associated with a dedicated set of tokens, each token representing a predetermined period of time of access to said resource, said control device comprising:

— un module d'association, configuré pour associer à chaque application logicielle un ensemble dédié de jetons, chaque jeton représentant une période de temps prédéterminée d'accès à ladite ressource ;- an association module, configured to associate with each software application a dedicated set of tokens, each token representing a predetermined period of time of access to said resource;

— des modules, activés sur réception d'un paquet de données destiné à être traité par une dite application logicielle, et comprenant :- modules, activated on receipt of a data packet intended to be processed by a said software application, and comprising:

o un module de traitement et un module de décrémentation, activés si l'ensemble de jetons associé à cette application logicielle comprend au moins un jeton, le module de traitement étant configuré pour déclencher le traitement du paquet de données par l'application logicielle en utilisant la ressource, et le module de décrémentation étant configuré pour décrémenter l'ensemble de jetons associé à l'application logicielle d'un nombre de jetons correspondant à une durée d'accès à ladite ressource par l'application logicielle lors du traitement du paquet de données ;o a processing module and a decrementing module, activated if the set of tokens associated with this software application comprises at least one token, the processing module being configured to trigger the processing of the data packet by the software application using the resource, and the decrement module being configured to decrement the set of tokens associated with the software application by a number of tokens corresponding to a duration of access to said resource by the software application during the processing of the packet of data;

o un module de rejet activé sinon et configuré pour rejeter le paquet de données ; et — un module de mise à jour activé sur détection d'au moins un événement de mise à jour relatif à au moins un sous-ensemble d'applications logicielles de la pluralité d'applications logicielles, ce module de mise à jour comprenant :o a rejection module activated otherwise and configured to reject the data packet; and an update module activated on detection of at least one update event relating to at least one subset of software applications from the plurality of software applications, this update module comprising:

o un module de détermination et un module d'ajout, activés pour chaque application logicielle du sous-ensemble, le module de détermination étant configuré pour déterminer un nombre de jetons destiné à cette application logicielle, et le module d'ajout étant configuré pour ajouter le nombre de jetons déterminé à l'ensemble de jetons associé à l'application logicielle dans la limite d'un nombre maximum de jetons fixé pour cette application logicielle ; et o un module de réattribution, activé si pour au moins une application logicielle du sousensemble d'applications logicielles, le nombre de jetons déterminé est supérieur au nombre de jetons ajouté, et s'il existe au moins une autre application logicielle de la pluralité d'applications logicielles qui est associée à un ensemble de jetons ayant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette autre application logicielle, ce module de réattribution étant configuré pour réattribuer les jetons résiduels à ladite au moins une autre application.o a determination module and an addition module, activated for each software application of the subset, the determination module being configured to determine a number of tokens intended for this software application, and the addition module being configured to add the number of tokens determined for the set of tokens associated with the software application within the limit of a maximum number of tokens fixed for this software application; and o a reassignment module, activated if for at least one software application of the subset of software applications, the number of tokens determined is greater than the number of tokens added, and if there is at least one other software application of the plurality of software applications which is associated with a set of tokens having a number of tokens lower than the maximum number of tokens set for this other software application, this reassignment module being configured to reassign the residual tokens to said at least one other application.

Ainsi, l'invention propose un mécanisme permettant d'organiser le partage entre plusieurs applications logicielles de traitement de paquets de données, d'une ressource d'un système informatique, telle que par exemple une ressource de son unité de traitement centrale comme un cœur CPU, parfaitement compatible avec un modèle « run-to-completion » selon lequel, lorsqu'une application logicielle exécute un traitement sur un paquet de données en utilisant cette ressource, elle peut y accéder jusqu'à l'achèvement de ce traitement. Ce mécanisme, au lieu de s'employer à contrôler directement les temps d'accès à la ressource comme dans l'état de la technique, agit sur (i.e. limite) la quantité de données traitée par chaque application logicielle en utilisant la ressource. En fonction du choix des différents paramètres permettant d'agir sur cette quantité de données, l'invention conduit à un partage équitable des ressources entre les différentes applications logicielles, ou au contraire à favoriser lors de ce partage l'une ou l'autre des applications logicielles lors de ce partage. Le mécanisme proposé par l'invention est aisément configurable et offre une solution flexible pour le partage des ressources d'un système informatique.Thus, the invention provides a mechanism for organizing the sharing, between several software applications of data packet processing, of a resource of a computer system, such as for example a resource of its central processing unit such as a core. CPU, perfectly compatible with a “run-to-completion” model according to which, when a software application performs processing on a data packet using this resource, it can access it until the processing is completed. This mechanism, instead of working directly to control access times to the resource as in the prior art, acts on (i.e. limit) the amount of data processed by each software application using the resource. Depending on the choice of the various parameters making it possible to act on this quantity of data, the invention leads to an equitable sharing of resources between the different software applications, or on the contrary to favor during this sharing one or the other of the software applications during this sharing. The mechanism proposed by the invention is easily configurable and offers a flexible solution for sharing the resources of a computer system.

A cet effet, l'invention s'appuie plus particulièrement sur un ensemble de jetons dédié alloué à chaque application logicielle, un jeton représentant une période de temps prédéterminée d'accès à la ressource considérée. Chaque ensemble de jetons dédiés peut comprendre un nombre maximum prédéterminé de jetons fixé pour l'application logicielle associée.To this end, the invention is based more particularly on a set of dedicated tokens allocated to each software application, a token representing a predetermined period of time of access to the resource considered. Each set of dedicated tokens may include a predetermined maximum number of tokens set for the associated software application.

Les ensembles de jetons associés aux applications logicielles sont maintenus à jour en fonction de l'utilisation de la ressource par les applications logicielles. Plus précisément, chaque ensemble de jetons dédié à une application logicielle est décrémenté à chaque fois que l'application logicielle accède à la ressource pour traiter un paquet de données ; cette décrémentation est réalisée en fonction du temps passé par l'application logicielle pour effectuer le traitement complet du paquet qui lui a été confié (conformément au modèle « run-to-completion », l'application logicielle n'est pas interrompue tant qu'elle n'a pas achevé le traitement du paquet de données qui lui a été confié). Conformément à l'invention, il peut donc arriver qu'un ensemble de jetons associé à une application logicielle comprenne à un instant donné, suite à une décrémentation, un nombre de jetons négatif. Dans ce cas, il convient de noter que seuls les paquets destinés à cette application logicielle seront impactés, et ce, tant que de nouveaux jetons ne sont pas attribués à l'application logicielle.The token sets associated with software applications are kept up to date according to the use of the resource by software applications. More specifically, each set of tokens dedicated to a software application is decremented each time the software application accesses the resource to process a data packet; this decrementation is carried out as a function of the time spent by the software application to carry out the complete processing of the package which has been entrusted to it (in accordance with the “run-to-completion” model, the software application is not interrupted as long as it has not completed processing the data packet entrusted to it). According to the invention, it can therefore happen that a set of tokens associated with a software application comprises at a given instant, following a decrementation, a negative number of tokens. In this case, it should be noted that only the packets intended for this software application will be impacted, as long as new tokens are not allocated to the software application.

En marge de cette décrémentation reflétant l'utilisation de la ressource par l'application logicielle, les ensembles de jetons associés aux applications logicielles sont mis à jour, et plus particulièrement incrémentés, sur détection d'un événement de mise à jour, et dans la limite d'un nombre maximum de jetons fixé pour chaque application logicielle. L'invention est remarquable en ce qu'elle réattribue tout ou partie des jetons résiduels qui en raison de cette limite ne sont pas ajoutés aux applications logicielles du sous-ensemble, à d'autres applications logicielles. Cela permet un partage de la ressource du système informatique entre les différentes applications logicielles hébergées par ce système informatique tout en tenant compte du modèle « run-to-completion » adopté pour l'ordonnancement des traitements mis en œuvre par ces applications.In addition to this decrement reflecting the use of the resource by the software application, the token sets associated with the software applications are updated, and more particularly incremented, upon detection of an update event, and in the limit of a maximum number of tokens fixed for each software application. The invention is remarkable in that it reassigns all or part of the residual tokens which, because of this limit, are not added to the software applications of the subset, to other software applications. This allows a sharing of the computer system resource between the different software applications hosted by this computer system while taking into account the "run-to-completion" model adopted for the scheduling of the treatments implemented by these applications.

Cette approche est au premier abord contre-intuitive, car elle peut conduire à rejeter certains paquets lorsque l'application logicielle à laquelle ils sont destinés ne dispose plus de jetons d'accès à la ressource, et ce, alors même que la ressource est peut-être disponible. Toutefois, elle permet une répartition plus efficace et plus précise de la ressource entre les applications logicielles que l'état de la technique lorsqu'un modèle « run-to-completion » est envisagé. Elle est d'ailleurs d'autant plus efficace que les temps d'exécution des traitements mis en œuvre par les applications logicielles sur les paquets de données sont courts.This approach is at first counter-intuitive, because it can lead to the rejection of certain packets when the software application for which they are intended no longer has access tokens for the resource, even when the resource is -be available. However, it allows a more efficient and more precise distribution of the resource between software applications than the state of the art when a "run-to-completion" model is envisaged. It is moreover all the more effective as the execution times of the treatments implemented by the software applications on the data packets are short.

L'invention est en outre très simple à mettre en œuvre : elle s'appuie en effet sur la provision et le maintien à jour d'un compteur de jetons (aussi appelé seau de jetons ou « token bucket » en anglais) dédié et unique pour chaque application logicielle, qui est incrémente et décrémenté en fonction de l'utilisation de la ressource par l'application logicielle et d'événements prédéterminés. Ces compteurs de jetons permettent de gérer finement la répartition de la ressource considérée entre des applications logicielles en concurrence pour utiliser cette ressource, en adaptant les paramètres de mise à jour des compteurs (ex. nombre maximum de jetons, vitesse de génération des nouveaux jetons ou nombre de nouveaux jetons générés pour chaque application, définition de la période d'accès prédéterminée, événements de mise à jour, etc.). Cette flexibilité et cette simplicité offrent la possibilité d'attribuer aisément à une application logicielle une fraction d'une ressource (par exemple un demi-cœur CPU) en termes de temps d'accès, et à une autre application logicielle une autre fraction de cette même ressource.The invention is also very simple to implement: it is in fact based on the provision and keeping up to date of a token counter (also called bucket of tokens or “token bucket” in English) dedicated and unique for each software application, which is incremented and decremented as a function of the use of the resource by the software application and of predetermined events. These token counters make it possible to finely manage the distribution of the resource considered between software applications competing to use this resource, by adapting the parameters for updating the counters (e.g. maximum number of tokens, speed of generation of new tokens or number of new tokens generated for each application, definition of the predetermined access period, update events, etc.). This flexibility and simplicity offers the possibility of easily allocating a fraction of a resource (for example a half-core CPU) to a software application in terms of access time, and to another software application another fraction of this same resource.

On note que l'utilisation de compteurs ou de seaux de jetons est connue pour limiter le nombre de paquets en entrée d'un système ou d'un nœud d'un réseau informatique, ou pour limiter le débit traversant ce système ou ce nœud. Les algorithmes dits du seau à jetons ou du seau percé s'appuient par exemple sur ces notions. L'invention est remarquable en ce qu'elle propose d'appliquer ce concept pour gérer l'accès à une ressource d'un système informatique en considérant des jetons qui correspondent à un temps d'accès à la ressource.It should be noted that the use of counters or token buckets is known to limit the number of packets entering a system or a node of a computer network, or to limit the throughput passing through this system or this node. The so-called token bucket or pierced bucket algorithms are based, for example, on these concepts. The invention is remarkable in that it proposes to apply this concept to manage access to a resource of a computer system by considering tokens which correspond to a time of access to the resource.

En outre, grâce au mécanisme mis en œuvre pour mettre à jour les ensembles de jetons associés aux applications logicielles et notamment à la réattribution des jetons résiduels, l'invention propose une approche dite « work-conserving » (ordonnancement sans oisiveté), consistant à toujours utiliser la ressource disponible dès lors qu'une application logicielle reçoit un paquet de données à traiter. En effet, par exemple, si un cœur CPU d'un processeur d'un système informatique est partagé entre deux programmes, que l'un des deux programmes a déjà atteint son quota de temps d'accès au cœur CPU (i.e. il a utilisé tous ses jetons) et qu'il reçoit encore des paquets à traiter, du temps d'accès au cœur CPU non utilisé par le deuxième programme peut lui être réattribué lors de la mise à jour des ensembles de jetons de façon à ne pas perdre de ressource CPU.In addition, thanks to the mechanism implemented to update the sets of tokens associated with software applications and in particular to the reassignment of residual tokens, the invention proposes a so-called "work-conserving" approach, consisting of always use the available resource as soon as a software application receives a data packet to be processed. Indeed, for example, if a CPU core of a computer system processor is shared between two programs, that one of the two programs has already reached its quota of access time to the CPU core (ie it has used all its tokens) and it still receives packets to be processed, access time to the CPU core not used by the second program can be reassigned to it when updating the token sets so as not to lose CPU resource.

On note que l'exemple précédent est donné en référence à une ressource de type cœur CPU d'un processeur d'un système informatique. Toutefois l'invention s'applique pour contrôler l'accès à d'autres types de ressources comme par exemple pour contrôler l'accès à un disque dur d'un système informatique ou à une ressource réseau telle qu'une carte réseau par exemple, dès lors que l'accès à cette ressource peut être qualifié (caractérisé) en termes de temps d'accès.Note that the previous example is given with reference to a resource of the CPU core type of a processor of a computer system. However, the invention applies to control access to other types of resources such as for example to control access to a hard disk of a computer system or to a network resource such as a network card for example, since access to this resource can be qualified (characterized) in terms of access time.

Conformément à l'invention, de nouveaux jetons permettant d'accéder à la ressource sont générés pour les différentes applications logicielles sur détection d'événements prédéterminés.In accordance with the invention, new tokens allowing access to the resource are generated for the various software applications on detection of predetermined events.

Dans un mode de réalisation, l'événement de mise à jour détecté est un instant de mise à jour prédéterminé pour le sous-ensemble parmi une pluralité d'instants de mise à jour espacés de façon régulière dans le temps.In one embodiment, the detected update event is a predetermined update time for the subset among a plurality of update times spaced regularly in time.

Cette mise à jour permet de réattribuer de façon périodique des jetons aux applications logicielles qui en consomment, et ce indépendamment de la réception des paquets de données.This update makes it possible to reassign tokens periodically to the software applications which consume them, and this independently of the reception of the data packets.

On note que l'invention offre une grande flexibilité pour ce qui est de la définition du sous-ensemble concerné par chaque étape de mise à jour. On peut par exemple définir une pluralité de sous-ensembles contenant chacun une application logicielle différente : ceci revient à mettre à jour l'ensemble de jetons associés à chaque application logicielle à des instants différents. En variante, on peut définir un sous-ensemble contenant toutes les applications logicielles, ce qui revient à mettre à jour au même moment les ensembles de jetons des différentes applications logicielles considérées.It should be noted that the invention offers great flexibility with regard to the definition of the subset concerned by each updating step. We can for example define a plurality of subsets each containing a different software application: this amounts to updating the set of tokens associated with each software application at different times. As a variant, it is possible to define a subset containing all the software applications, which amounts to updating at the same time the token sets of the different software applications considered.

Ce mode de réalisation, dans lequel les étapes de mise à jour sont décorrélées de l'exécution des traitements sur les paquets de données, requiert la gestion de l'accès concurrent aux ensembles de jetons associés aux différentes applications logicielles. En effet, conformément à l'invention, on décrémente d'une part les ensembles de jetons après exécution des traitements et on les incrémente d'autre part, lors des étapes de mise à jour. Une synchronisation entre la génération des nouveaux jetons et leur utilisation par les applications logicielles pour accéder à la ressource est donc souhaitable. Cette synchronisation peut être réalisée de divers moyens, comme par exemple au moyen d'un verrou logiciel destiné à empêcher un accès simultané à un même ensemble de jetons d'une part pour l'incrémenter, et d'autre part, pour vérifier son contenu et le décrémenter lors du traitement d'un paquet de données.This embodiment, in which the updating steps are decorrelated from the execution of the processing operations on the data packets, requires the management of concurrent access to the sets of tokens associated with the different software applications. Indeed, in accordance with the invention, the sets of tokens are decremented on the one hand after execution of the processing operations and they are incremented on the other hand, during the updating steps. Synchronization between the generation of new tokens and their use by software applications to access the resource is therefore desirable. This synchronization can be achieved by various means, such as by means of a software lock intended to prevent simultaneous access to the same set of tokens on the one hand to increment it, and on the other hand, to verify its content. and decrement it when processing a data packet.

La mise en œuvre d'une telle synchronisation peut se traduire par des latences, par exemple induites en raison du temps d'attente requis jusqu'à la libération du verrou avant de pouvoir démarrer un traitement.The implementation of such synchronization can result in latencies, for example induced due to the waiting time required until the release of the lock before being able to start a treatment.

Dans un autre mode de réalisation, l'événement de mise à jour détecté est la réception d'un paquet de données destiné à être traité par une dite application logicielle. Préférentiellement, l'étape de mise à jour est alors effectuée avant le traitement du paquet de données reçu par l'application logicielle.In another embodiment, the update event detected is the reception of a data packet intended to be processed by a said software application. Preferably, the update step is then carried out before the processing of the data packet received by the software application.

Autrement dit dans ce mode de réalisation, la mise à jour des ensembles de jetons a lieu non plus à intervalles réguliers mais en fonction de la réception des paquets de données à traiter.In other words in this embodiment, the updating of the token sets takes place no longer at regular intervals but as a function of the reception of the data packets to be processed.

Dans un mode particulier de réalisation, on s'assure toutefois que deux étapes de mises à jour successives des ensembles de jetons sont espacées d'au moins un intervalle de temps prédéterminé, afin d'éviter une mise à jour trop fréquente des ensembles de jetons qui peut ellemême s'avérer consommatrice de ressources du système informatique.In a particular embodiment, it is however ensured that two successive steps for updating the token sets are spaced at least by a predetermined time interval, in order to avoid too frequent updating of the token sets. which can itself consume computer system resources.

Dans un mode particulier de réalisation, lors de l'étape de détermination, le nombre de jetons destiné à une application logicielle est déterminé à partir d'une vitesse de génération de jetons fixée pour cette application logicielle.In a particular embodiment, during the determination step, the number of tokens intended for a software application is determined from a token generation speed set for this software application.

Le temps d'accès à la ressource par les applications logicielles pour traiter les paquets reçus est ainsi fonction de la vitesse de génération des jetons.The time of access to the resource by the software applications to process the received packets is thus a function of the token generation speed.

Une même vitesse de génération peut être notamment fixée pour chacune des applications logicielles de la pluralité d'applications logicielles, afin d'obtenir un partage équitable des ressources entre les différentes applications logicielles.The same generation speed can in particular be fixed for each of the software applications of the plurality of software applications, in order to obtain an equitable sharing of resources between the different software applications.

En variante, des vitesses de génération des jetons distinctes peuvent être considérées pour les différentes applications logicielles, par exemple en fonction de priorités que l'on souhaite attribuer à l'une ou l'autre des applications logicielles.As a variant, separate token generation speeds can be considered for the different software applications, for example as a function of priorities which it is desired to assign to one or the other of the software applications.

Dans un mode particulier de réalisation, le procédé de contrôle comprend lors de l'étape de mise à jour :In a particular embodiment, the control method comprises during the updating step:

— une étape d'évaluation d'un nombre global de jetons résiduels pour le sous-ensemble d'applications logicielles ;A step of evaluating a global number of residual tokens for the subset of software applications;

— une étape d'identification, parmi ladite pluralité d'applications logicielles, des applications logicielles associées à des ensembles dédiés de jetons qui après l'étape d'ajout comprennent des nombres de jetons inférieurs aux nombres maximaux de jetons fixés pour ces applications logicielles ; et — une étape de répartition entre les applications logicielles identifiées de tout ou partie du nombre global de jetons résiduels dans la limite des nombres maximums de jetons fixés pour les applications logicielles identifiées.A step of identifying, among said plurality of software applications, software applications associated with dedicated sets of tokens which after the adding step comprise numbers of tokens lower than the maximum numbers of tokens set for these software applications; and a step of distributing all or part of the overall number of residual tokens between the identified software applications within the limit of the maximum number of tokens set for the identified software applications.

En outre, tant qu'à l'issue de l'étape de répartition, il reste des jetons résiduels et qu'au moins une application logicielle associée à un ensemble de jetons comprenant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette application logicielle peut être identifiée, ces jetons résiduels peuvent être répartis entre ladite au moins une application logicielle pouvant être identifiée.In addition, as long as at the end of the distribution step, there are residual tokens and at least one software application associated with a set of tokens comprising a number of tokens less than the maximum number of tokens set for this software application can be identified, these residual tokens can be distributed between said at least one software application that can be identified.

Ce mode de réalisation favorise de façon simple et efficace un fonctionnement de type « work-conserving ». Tous les jetons résiduels sont réattribués entre les applications logicielles de sorte à pouvoir utiliser la ressource disponible lorsqu'elle est requise pour le traitement d'un paquet reçu par une application logicielle. Cela permet une répartition adaptée et précise de la ressource du système informatique en fonction des besoins des applications logicielles.This embodiment promotes in a simple and effective manner a “work-conserving” type of operation. All residual tokens are reassigned between software applications so that they can use the available resource when it is required to process a packet received by a software application. This allows an adapted and precise distribution of the computer system resource according to the needs of software applications.

Dans un mode particulier de réalisation, un même nombre maximum de jetons est fixé pour chacune des applications logicielles de ladite pluralité d'applications logicielles.In a particular embodiment, the same maximum number of tokens is fixed for each of the software applications of said plurality of software applications.

Le nombre maximum de jetons fixé pour chaque application logicielle impacte l'exécution des applications logicielles et la stabilité du système informatique. Préférentiellement, on choisit ce nombre maximum de sorte à ne pas trop « hachurer » les exécutions des applications logicielles (on évite typiquement qu'une application consomme l'ensemble des jetons qui lui est dédié trop rapidement puis reste inactive pendant un temps long).The maximum number of tokens set for each software application affects the execution of software applications and the stability of the computer system. Preferably, this maximum number is chosen so as not to “hatch” the executions of the software applications too much (one typically avoids that an application consumes all of the tokens dedicated to it too quickly then remains inactive for a long time).

Un même nombre maximum de jetons fixé pour toutes les applications logicielles permet de faciliter l'implémentation de l'invention et notamment le dimensionnement de ses paramètres de fonctionnement.The same maximum number of tokens set for all software applications makes it possible to facilitate the implementation of the invention and in particular the dimensioning of its operating parameters.

Dans un mode particulier de réalisation, les différentes étapes du procédé de contrôle sont déterminées par des instructions de programmes d'ordinateurs.In a particular embodiment, the different steps of the control method are determined by instructions from computer programs.

En conséquence, l'invention vise aussi un programme d'ordinateur sur un support d'informations, ce programme étant susceptible d'être mis en œuvre dans un dispositif de contrôle ou plus généralement dans un ordinateur, ce programme comportant des instructions adaptées à la mise en œuvre des étapes d'un procédé de contrôle tel que décrit ci-dessus.Consequently, the invention also relates to a computer program on an information medium, this program being capable of being implemented in a control device or more generally in a computer, this program comprising instructions adapted to the implementation of the steps of a control process as described above.

Ce programme peut utiliser n'importe quel langage de programmation, et être sous la forme de code source, code objet, ou de code intermédiaire entre code source et code objet, tel que dans une forme partiellement compilée, ou dans n'importe quelle autre forme souhaitable.This program can use any programming language, and be in the form of source code, object code, or intermediate code between source code and object code, such as in a partially compiled form, or in any other desirable form.

L'invention vise aussi un support d’informations ou d'enregistrement lisible par un ordinateur, et comportant des instructions d'un programme d'ordinateur tel que mentionné cidessus.The invention also relates to an information or recording medium readable by a computer, and comprising instructions of a computer program as mentioned above.

Le support d'informations ou d'enregistrement peut être n'importe quelle entité ou dispositif capable de stocker le programme. Par exemple, le support peut comporter un moyen de stockage, tel qu'une ROM, par exemple un CD ROM ou une ROM de circuit microélectronique, ou encore un moyen d'enregistrement magnétique, par exemple un disque dur.The information or recording medium can be any entity or device capable of storing the program. For example, the support may include a storage means, such as a ROM, for example a CD ROM or a microelectronic circuit ROM, or also a magnetic recording means, for example a hard disk.

D’autre part, le support d'informations ou d'enregistrement peut être un support transmissible tel qu'un signal électrique ou optique, qui peut être acheminé via un câble électrique ou optique, par radio ou par d’autres moyens. Le programme selon l'invention peut être en particulier téléchargé sur un réseau de type Internet.On the other hand, the information or recording medium can be a transmissible medium such as an electrical or optical signal, which can be routed via an electrical or optical cable, by radio or by other means. The program according to the invention can in particular be downloaded from a network of the Internet type.

Alternativement, le support d'informations ou d'enregistrement peut être un circuit intégré dans lequel le programme est incorporé, le circuit étant adapté pour exécuter ou pour être utilisé dans l'exécution du procédé en question.Alternatively, the information or recording medium can be an integrated circuit in which the program is incorporated, the circuit being adapted to execute or to be used in the execution of the process in question.

L'invention vise également un système informatique comprenant :The invention also relates to a computer system comprising:

— une pluralité d'applications logicielles de traitement de données destinées à s'exécuter sur le système informatique et à accéder à au moins une ressource du système informatique lors de leurs exécutions ; et — un dispositif de contrôle d'un accès à ladite au moins une ressource par la pluralité d'applications logicielles conforme à l'invention.- a plurality of data processing software applications intended to run on the computer system and to access at least one resource of the computer system during their execution; and a device for controlling access to said at least one resource by the plurality of software applications according to the invention.

On peut également envisager, dans d'autres modes de réalisation, que le procédé de contrôle, le dispositif de contrôle et le système informatique selon l'invention présentent en combinaison tout ou partie des caractéristiques précitées.It can also be envisaged, in other embodiments, that the control method, the control device and the computer system according to the invention have all or some of the above characteristics in combination.

Brève description des dessinsBrief description of the drawings

D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures :Other characteristics and advantages of the present invention will emerge from the description given below, with reference to the appended drawings which illustrate an embodiment thereof devoid of any limiting character. In the figures:

— la figure 1 représente, de façon schématique, un système informatique et un dispositif de contrôle conformes à l'invention dans un mode particulier de réalisation ;- Figure 1 shows, schematically, a computer system and a control device according to the invention in a particular embodiment;

— les figures 2A et 2B représente, sous forme d'ordinogramme, un procédé de contrôle selon l'invention dans un premier mode de réalisation, lorsqu'il est mis en œuvre par le dispositif de contrôle de la figure 1 ; et — la figure 3 représente, sous forme d'ordinogramme, un procédé de contrôle selon l'invention dans un second mode de réalisation, lorsqu'il est mis en œuvre par le dispositif de contrôle de la figure 1.- Figures 2A and 2B shows, in the form of a flowchart, a control method according to the invention in a first embodiment, when it is implemented by the control device of Figure 1; and FIG. 3 represents, in the form of a flowchart, a control method according to the invention in a second embodiment, when it is implemented by the control device of FIG. 1.

Description détaillée de l'inventionDetailed description of the invention

La figure 1 représente, dans son environnement, un système informatique 1 conforme à l'invention, dans un mode particulier de réalisation.FIG. 1 represents, in its environment, a computer system 1 according to the invention, in a particular embodiment.

Dans l'exemple illustré à la figure 1, le système informatique 1 est un ordinateur, équipé d'un processeur 2 (ou unité centrale de traitement) mono ou multi-cœur : il comprend K cœurs CPU notés CPU1, CPU2,...,CPUK, K désignant un entier supérieur ou égal à 1. Le système informatique 1 héberge dans cet exemple une pluralité d'applications logicielles (i.e. de programmes informatiques) APP1, APP2,..., APPN, N désignant un entier supérieur à 1, aptes à appliquer divers traitements sur des paquets de données, et à utiliser le processeur 2 du système informatique 1 pour exécuter ces traitements. Chacun des traitements réalisés peut comprendre une ou plusieurs opérations. On se place ici, à titre illustratif, dans un contexte de virtualisation de fonctions réseaux (NFV) tel que mentionné précédemment, et on suppose que les traitements mis en œuvre par les applications logicielles APP1, APP2,..., APPN, sont des traitements destinés à être appliqués sur des paquets de données réseaux (i.e. échangés au sein d'un réseau de communication). De tels traitements consistent par exemple à modifier/ajouter ou supprimer un entête d'un paquet, à vérifier la légitimité d'un paquet en fonction de règles de contrôle d'accès, à agréger des statistiques à partir des paquets (pour mettre en œuvre par exemple une fonction de supervision), etc.In the example illustrated in FIG. 1, the computer system 1 is a computer, equipped with a processor 2 (or central processing unit) single or multi-core: it includes K cores CPU denoted CPU1, CPU2, ... , CPUK, K designating an integer greater than or equal to 1. The computer system 1 hosts in this example a plurality of software applications (ie of computer programs) APP1, APP2, ..., APPN, N designating an integer greater than 1 , able to apply various processing operations on data packets, and to use the processor 2 of the computer system 1 to carry out these processing operations. Each of the treatments carried out may include one or more operations. We place ourselves here, by way of illustration, in a context of network function virtualization (NFV) as mentioned above, and we assume that the processing implemented by software applications APP1, APP2, ..., APPN, are processing intended to be applied to network data packets (ie exchanged within a communication network). Such processing consists, for example, of modifying / adding or removing a header from a packet, of verifying the legitimacy of a packet according to access control rules, of aggregating statistics from packets (to implement for example a supervisory function), etc.

Cet exemple n'est toutefois envisagé qu'à titre illustratif et l'invention peut s'appliquer dans d'autres contextes, à d'autres types de traitements et/ou de paquets de données, etc. Le système informatique 1 peut également comprendre en variante une pluralité d'ordinateurs ou d'autres éléments matériels, qui peuvent être reliés entre eux par exemple via un réseau de télécommunications (filaire ou sans fil).This example is however considered for illustrative purposes only and the invention can be applied in other contexts, to other types of processing and / or data packets, etc. The computer system 1 can also alternatively comprise a plurality of computers or other hardware elements, which can be linked together for example via a telecommunications network (wired or wireless).

Conformément à l'invention, le système informatique 1 comprend un dispositif de contrôle 3 de l'accès par les applications logicielles APP1,...,APPN hébergées par le système informatique 1 aux ressources du système informatique 1, et plus particulièrement ici, à son processeur 2 et à son ou ses cœurs CPU, CPU1,...,CPUK, Chaque cœur CPU constitue ici une ressource du système informatique 1 au sens de l'invention. On note que l'invention peut également s'appliquer à d'autres ressources du système informatique 1, comme par exemple à un disque dur, ou à des ressources réseaux (ex. carte réseau), etc., dès lors qu'il est possible de qualifier ou de caractériser l'accès à ces ressources en termes de temps d'accès.In accordance with the invention, the computer system 1 comprises a device 3 for controlling access by the software applications APP1, ..., APPN hosted by the computer system 1 to the resources of the computer system 1, and more particularly here, at its processor 2 and its CPU core (s), CPU1, ..., CPUK, Each CPU core here constitutes a resource of the computer system 1 within the meaning of the invention. It should be noted that the invention can also be applied to other resources of the computer system 1, such as for example a hard disk, or to network resources (eg network card), etc., provided that it is possible to qualify or characterize access to these resources in terms of access time.

Le dispositif de contrôle 3 est configuré ici pour appliquer un modèle « run-tocompletion » pour l'ordonnancement des différents traitements réalisés par les applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ sur les paquets de données réseaux qui sont confiés au système informatique 1, et gérer l'accès au processeur 2 pour exécuter ces traitements. Dans le mode de réalisation décrit ici, on suppose qu'un unique cœur CPU du processeur 2 du système informatique 1, à savoir le cœur CPU1, est dédié à l'exécution des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ. Si plusieurs cœurs CPU sont dédiés aux applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ, pour l'exécution de leurs traitements, l'accès à chacun de ces cœurs CPU est géré par le dispositif de contrôle 3 de la même façon que ce qui est décrit par la suite pour le cœur CPU1.The control device 3 is configured here to apply a “run-tocompletion” model for the scheduling of the various processing operations carried out by the software applications ΑΡΡΙ,.,., ΑΡΡΝ on the network data packets which are entrusted to the computer system 1, and manage access to processor 2 to execute these treatments. In the embodiment described here, it is assumed that a single core CPU of the processor 2 of the computer system 1, namely the core CPU1, is dedicated to the execution of the software applications ΑΡΡΙ,.,., ΑΡΡΝ. If several CPU cores are dedicated to software applications ΑΡΡΙ,.,., ΑΡΡΝ, for the execution of their processing, access to each of these CPU cores is managed by the control device 3 in the same way as what is described below for the CPU1 core.

Selon le modèle « run-to-completion », chaque application logicielle APPn, n=l,...,N, lorsqu'elle reçoit un paquet de données qui lui est destiné pour traitement, réalise l'ensemble des opérations prévues par ce traitement sur ce paquet en utilisant le cœur CPU1 sans être interrompue par le dispositif de contrôle 3 : en d'autres mots, l'accès au cœur CPU1 du processeur 2 lui est assuré jusqu'à l'achèvement du traitement qu'elle exécute sur le paquet de données.According to the “run-to-completion” model, each software application APPn, n = l, ..., N, when it receives a data packet intended for processing, performs all of the operations provided for by this processing on this packet using the core CPU1 without being interrupted by the control device 3: in other words, access to the core CPU1 of the processor 2 is ensured until the processing it executes on the data packet.

On note que l'invention s'applique quelle que soit la quantité de ressource CPU du cœur CPU1 du processeur 2 attribuée à proprement parler aux applications ΑΡΡΙ,.,.,ΑΡΡΝ pour exécuter leurs traitements. On suppose ici par souci de simplification que les applications ΑΡΡΙ,.,.,ΑΡΡΝ sont en mesure d'utiliser tout le temps d'accès au cœur CPU1 du processeur 2, et que le dispositif de contrôle 3 permet de contrôler cet accès concurrent par les applications ΑΡΡΙ,.,.,ΑΡΡΝ à cette ressource CPU.It is noted that the invention applies regardless of the quantity of resource CPU of the core CPU1 of the processor 2 allocated strictly speaking to the applications ΑΡΡΙ,.,., ΑΡΡΝ to execute their processing. It is assumed here for the sake of simplification that the applications ΑΡΡΙ,.,., ΑΡΡΝ are able to use all the time of access to the core CPU1 of the processor 2, and that the control device 3 makes it possible to control this concurrent access by the applications ΑΡΡΙ,.,., ΑΡΡΝ to this CPU resource.

En variante, seule une fraction du temps d'accès possible au cœur CPU1 peut être attribuée aux applications ΑΡΡΙ,.,.,ΑΡΡΝ (par exemple 75%), la fraction restante pouvant être dédiée à d'autres applications ou processus gérés par le système informatique 1. La façon dont cet ajustement peut être réalisé est décrit plus en détails ultérieurement. Dans la suite de la description, par souci de simplicité, il est fait référence de manière générale à « la ressource CPU » pour désigner la partie du cœur CPU1 dédiée aux applications APP1,...,APPN pour l'exécution de leurs traitements.As a variant, only a fraction of the possible access time to the core CPU1 can be allocated to the applications ΑΡΡΙ,.,., ΑΡΡΝ (for example 75%), the remaining fraction being able to be dedicated to other applications or processes managed by the computer system 1. How this adjustment can be made is described in more detail later. In the following description, for the sake of simplicity, reference is made generally to "the CPU resource" to designate the part of the core CPU1 dedicated to applications APP1,..., APPN for the execution of their processing.

Conformément à l'invention, pour contrôler l'accès au cœur CPU1 du processeur 2, le dispositif de contrôle 3 associe, via un module d'association 3A prévu à cet effet, à chaque application logicielle APP1,...,APPN hébergée par le système informatique 1 un ensemble (aussi appelé seau dans la suite de la description) dédié de jetons d'accès au processeur 2. Chaque jeton représente une période prédéterminée T de temps d'accès à la ressource CPU1 ; cette période de temps T définit dans le contexte de l'invention une « unité de temps CPU » (ou une unité de temps d'accès à la ressource CPU1) allouée aux applications, telle que par exemple une nanoseconde de temps CPU, le temps CPU désignant ici la durée pendant laquelle la ressource CPU considérée (i.e. le cœur CPU1 ici) est active, c'est-à-dire le temps pendant lequel on peut y accéder. Ce temps CPU ne comptabilise pas typiquement les interruptions de l'accès au cœur CPU1 : une nanoseconde de temps CPU peut ainsi en soi être distincte d'une nanoseconde. La quantité de jetons attribuée à chaque application logicielle ΑΡΡΙ,.,.,ΑΡΡΝ est décrite plus en détail ultérieurement.According to the invention, to control access to the core CPU1 of processor 2, the control device 3 associates, via an association module 3A provided for this purpose, with each software application APP1, ..., APPN hosted by the computer system 1 a dedicated set (also called bucket in the following description) of access tokens for the processor 2. Each token represents a predetermined period T of access time to the resource CPU1; this time period T defines in the context of the invention a “CPU time unit” (or a unit of access time to the resource CPU1) allocated to the applications, such as for example a nanosecond of CPU time, the time CPU here designating the duration during which the CPU resource considered (ie the core CPU1 here) is active, that is to say the time during which it can be accessed. This CPU time does not typically count the interruptions of access to the CPU1 core: a nanosecond of CPU time can thus in itself be distinct from a nanosecond. The quantity of tokens allocated to each software application ΑΡΡΙ,.,., ΑΡΡΝ is described in more detail later.

Chaque seau de jetons noté TBn, n=l,...,N associé à une application logicielle APPn peut contenir un nombre maximum de jetons Bn. Par souci de simplification, on suppose ici que le même nombre maximum de jetons B est fixé pour toutes les applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ, soit B1=B2=...=BN= B. Le nombre maximum B peut être choisi de façon expérimentale, comme décrit plus en détail ultérieurement.Each bucket of tokens noted TBn, n = l, ..., N associated with a software application APPn can contain a maximum number of tokens Bn. For the sake of simplification, it is assumed here that the same maximum number of tokens B is fixed for all the software applications ΑΡΡΙ,.,., ΑΡΡΝ, that is to say B1 = B2 = ... = BN = B. The maximum number B can be chosen experimentally, as described in more detail later.

En variante, des nombres Bn, n=l,...,N différents peuvent être envisagés.As a variant, different numbers Bn, n = l, ..., N can be envisaged.

Le dispositif de contrôle 3 manipule les différents seaux de jetons TBn, n=l,...,N pour contrôler l'accès à la ressource CPU considérée du système informatique 1 (le cœur CPU1 dans l'exemple envisagé ici). A cet effet, il comprend une pluralité de modules fonctionnels s'appuyant ou commandant divers moyens matériels du système informatique 1 (par exemple une mémoire vive, une mémoire morte, une mémoire non volatile, des moyens de communication, etc, dont est pourvu classiquement un système informatique et ici le système informatique 1) et mettant en œuvre le procédé de contrôle selon l'invention. Ces modules fonctionnels sont ici des modules logiciels définis par des instructions d'un programme d'ordinateur PROG conforme à l'invention. Le programme d'ordinateur PROG est stocké dans une mémoire morte 4 du système informatique 1 lisible par le processeur 2. Il comporte des instructions pour l'exécution des étapes du procédé de contrôle selon l'invention mis en œuvre par le dispositif de contrôle 3. La mémoire morte 4 constitue ainsi un support d'enregistrement conforme à l'invention, sur lequel est enregistré le programme d'ordinateur PROG.The control device 3 manipulates the different buckets of tokens TBn, n = l, ..., N to control access to the resource CPU considered of the computer system 1 (the core CPU1 in the example envisaged here). To this end, it comprises a plurality of functional modules relying on or controlling various hardware means of the computer system 1 (for example a random access memory, a read-only memory, a non-volatile memory, means of communication, etc., which is conventionally provided a computer system and here the computer system 1) and implementing the control method according to the invention. These functional modules are here software modules defined by instructions of a computer program PROG according to the invention. The computer program PROG is stored in a read only memory 4 of the computer system 1 readable by the processor 2. It includes instructions for the execution of the steps of the control method according to the invention implemented by the control device 3 The read-only memory 4 thus constitutes a recording medium in accordance with the invention, on which the computer program PROG is recorded.

Le programme d'ordinateur PROG définit les modules fonctionnels suivants du dispositif de contrôle 3 :The PROG computer program defines the following functional modules of the control device 3:

— un module d'association 3A déjà mentionné, configuré pour associer à chacune des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ les seaux de jetons ΤΒΙ,.,.,ΤΒΝ respectivement ;- an association module 3A already mentioned, configured to associate with each of the software applications ΑΡΡΙ,.,., ΑΡΡΝ the token buckets ΤΒΙ,.,., ΤΒΝ respectively;

— des modules, activés sur réception par le dispositif de contrôle 3 du système informatique 1, d'un paquet de données destiné à être traité par l'une des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ (notée APPj dans la suite) et comprenant :- modules, activated on reception by the control device 3 of the computer system 1, of a data packet intended to be processed by one of the software applications ΑΡΡΙ,.,., ΑΡΡΝ (denoted APPj in the following) and including:

o un module 3B d'inspection de l'ensemble, ou du seau, de jetons TBj associé à l'application logicielle APPj ;o a module 3B for inspecting the set, or bucket, of tokens TBj associated with the software application APPj;

o un module 3C de traitement et un module 3D de décrémentation, activés si le module d'inspection 3B détermine que le seau de jetons TBj comprend au moins un jeton. Le module de traitement 3C est configuré pour déclencher le traitement du paquet de données par l'application logicielle APPj si le seau de jetons TBj comprend au moins un jeton. Le module de décrémentation 3D est configuré pour décrémenter le seau de jetons TBj d'un nombre de jetons correspondant à la durée du traitement effectué par l'application logicielle APPj sur le paquet de données (cette durée caractérise le temps d'accès à la ressource CPU1 par l'application logicielle APPj pour le traitement du paquet de données) ;a processing module 3C and a 3D decrementing module, activated if the inspection module 3B determines that the bucket of tokens TBj comprises at least one token. The processing module 3C is configured to trigger the processing of the data packet by the software application APPj if the token bucket TBj comprises at least one token. The 3D decrementation module is configured to decrement the bucket of tokens TBj by a number of tokens corresponding to the duration of the processing carried out by the software application APPj on the data packet (this duration characterizes the time of access to the resource CPU1 by the software application APPj for processing the data packet);

o un module 3E de rejet activé si le module 3A d'inspection détermine que le seau TBj ne contient pas au moins un jeton, et configuré pour rejeter le paquet de données ; et — un module 3F de mise à jour, activé à chaque détection d'un événement de mise à jour relatif à un ou plusieurs sous-ensembles SI,...,SL d'applications logicielles de la pluralité d'applications logicielles, L désignant un entier supérieur ou égal à 1. Aucune limitation n'est attachée à la façon dont on définit les sous-ensembles. Les sous-ensembles S1,...,SL sont disjoints (i.e. ils ne comprennent pas d'application(s) logicielle(s) en commun). A titre illustratif, L peut être pris égal à 1 et le sous-ensemble SI contenir l'ensemble des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ. Selon un autre exemple, on peut considérer L=N sous-ensembles chacun constitué d'une unique application logicielle distincte. On désigne par N(S) le nombre d'applications logicielles compris dans chaque sous-ensemble S, S=S1,...,SL, et par I(S) l'ensemble des indices des applications logicielles de la pluralité d'applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ compris dans ce sous-ensemble S. Conformément à l'invention, le module 3F de mise à jour comprend :o a rejection module 3E activated if the inspection module 3A determines that the bucket TBj does not contain at least one token, and configured to reject the data packet; and - an update module 3F, activated on each detection of an update event relating to one or more subsets SI, ..., SL of software applications of the plurality of software applications, L designating an integer greater than or equal to 1. No limitation is attached to the way in which the subsets are defined. The subsets S1, ..., SL are disjoint (i.e. they do not include any common software application (s)). By way of illustration, L can be taken equal to 1 and the subset SI contain all of the software applications ΑΡΡΙ,.,., ΑΡΡΝ. According to another example, we can consider L = N subsets each consisting of a single distinct software application. We denote by N (S) the number of software applications included in each subset S, S = S1, ..., SL, and by I (S) the set of indices of software applications of the plurality of software applications ΑΡΡΙ,.,., ΑΡΡΝ included in this subset S. According to the invention, the update module 3F comprises:

o un module de détermination 3F1 et un module d'ajout 3F2, activés pour chaque application logicielle APPi, iel(S) du sous-ensemble S considéré, le module de détermination 3F1 étant configuré pour déterminer un nombre de jetons ri destiné à cette application logicielle APPi, et le module d'ajout 3F2 étant configuré pour ajouter le nombre de jetons déterminé ri au seau de jetons dédié TBi associé à l'application logicielle APPi dans la limite du nombre maximum Bi (=B ici) de jetons fixé pour cette application logicielle ; et o un module de réattribution 3F3, activé si pour au moins une application logicielle notée APPm du sous-ensemble S, le nombre de jetons rm déterminé par le module de détermination 3F1 est supérieur au nombre de jetons ajouté par le module d'ajout 3F2 au seau de jetons TBm (ce nombre de jetons ajouté est en fait égal à min(Bm-bm,rm) où bm désigne le nombre de jetons déjà présents lors de la mise à jour dans le seau de jetons TBm, bm pouvant être positif, négatif ou nul). Le module de réattribution 3F3 est configuré pour réattribuer les jetons résiduels (autrement dit, les rm-min(Bmbm,rm) jetons résiduels pour chaque application APPm concernée) à au moins une autre application de ladite pluralité d'applications logicielles ΑΡΡΙ,.,.ΑΡΡΝ.o a 3F1 determination module and a 3F2 addition module, activated for each software application APPi, iel (S) of the subset S considered, the 3F1 determination module being configured to determine a number of tokens ri intended for this application APPi software, and the 3F2 adding module being configured to add the determined number of tokens ri to the dedicated token bucket TBi associated with the APPi software application within the limit of the maximum number Bi (= B here) of tokens set for this software application; and o a 3F3 reassignment module, activated if for at least one software application denoted APPm of the subset S, the number of tokens rm determined by the determination module 3F1 is greater than the number of tokens added by the addition module 3F2 to the TBm token bucket (this added number of tokens is in fact equal to min (Bm-bm, rm) where bm denotes the number of tokens already present during the update in the TBm token bucket, bm can be positive , negative or zero). The 3F3 reallocation module is configured to reassign the residual tokens (in other words, the rm-min (Bmbm, rm) residual tokens for each APPm application concerned) to at least one other application of said plurality of software applications ΑΡΡΙ,., .ΑΡΡΝ.

Les fonctions de ces modules sont décrites plus en détail maintenant, en référence aux étapes du procédé de contrôle selon l'invention.The functions of these modules are now described in more detail, with reference to the steps of the control method according to the invention.

Conformément à l'invention, le procédé de contrôle s'appuie sur deux processus :According to the invention, the control method is based on two processes:

— un premier processus PROC1 qui vise à proprement parler à gérer un paquet de données entrant PKT destiné à l'une des applications logicielles APP1,...,APPN. Ce processus PROC1 vise plus particulièrement à identifier l'application logicielle à laquelle est destiné le paquet PKT, à déterminer si elle est, au vu de l'état courant de son seau de jetons, en mesure de traiter ce paquet, et le cas échéant, à mettre à jour (plus précisément à décrémenter dans le cas du processus PROC1) le nombre de jetons contenu dans le seau de l'application logicielle en fonction du temps d'accès à la ressource CPU1 consommé par l'application logicielle pour le traitement du paquet ; et — un second processus PROC2 qui vise à mettre à jour, sur détection d'événements de mise à jour, les seaux de jetons associés aux applications logicielles APP1,...,APPN et plus précisément à incrémenter les nombres de jetons contenus dans ces seaux dans la limite des nombres maximums fixés pour ceux-ci.- a first process PROC1 which aims, strictly speaking, to manage an incoming PKT data packet intended for one of the software applications APP1, ..., APPN. This process PROC1 aims more particularly to identify the software application for which the PKT packet is intended, to determine whether it is, in view of the current state of its bucket of tokens, able to process this packet, and if necessary , to update (more precisely to decrement in the case of the PROC1 process) the number of tokens contained in the bucket of the software application as a function of the time of access to the resource CPU1 consumed by the software application for the processing of the package; and - a second process PROC2 which aims to update, upon detection of update events, the token buckets associated with the software applications APP1, ..., APPN and more precisely to increment the number of tokens contained in these buckets within the limit of the maximum numbers fixed for them.

Autrement dit, le procédé de contrôle met en œuvre deux types de mises à jour des seaux de jetons associés aux applications logicielles : une décrémentation du nombre de jetons contenus dans le seau lorsque l'application logicielle a consommé de la ressource pour traiter un paquet de données, et une incrémentation du nombre de jetons sur détection d'événements prédéterminés.In other words, the control method implements two types of token bucket updates associated with software applications: a decrementation of the number of tokens contained in the bucket when the software application has consumed the resource to process a packet of data, and an incrementation of the number of tokens upon detection of predetermined events.

Nous allons maintenant décrire plus en détail chacun des processus PROC1 et PROC2 dans plusieurs modes de réalisation de l'invention.We will now describe in more detail each of the processes PROC1 and PROC2 in several embodiments of the invention.

Dans un premier mode de réalisation, représenté sur les figures 2A et 2B, les deux processus sont mis en œuvre indépendamment l'un de l'autre.In a first embodiment, shown in FIGS. 2A and 2B, the two processes are carried out independently of one another.

Plus précisément, dans le premier mode de réalisation, le processus PROC1 (illustré sur la figure 2A) est mis en œuvre par le dispositif de contrôle 3 sur réception d'un paquet de données PKT à traiter, tandis que le processus PROC2 (illustré sur la figure 2B) est mis en œuvre à des instants de mise à jour prédéterminés, fixés pour chaque sous-ensemble S1,...,SL. L'événement déclenchant la mise à jour opérée par le processus PROC2 (incrémentation des seaux de jetons) est donc ici la détection d'un instant de mise à jour prédéterminé, fixé pour chaque sous-ensemble SI,...,SL. On réalise ici, pour chaque sous-ensemble SI, 1=1,...,L, une mise à jour selon le processus PROC2 à des instants de mise à jour espacés de façon régulière dans le temps.More precisely, in the first embodiment, the process PROC1 (illustrated in FIG. 2A) is implemented by the control device 3 on reception of a packet of PKT data to be processed, while the process PROC2 (illustrated in FIG. 2B) is implemented at predetermined update times, fixed for each subset S1, ..., SL. The event triggering the update operated by the PROC2 process (incrementing the token buckets) is therefore here the detection of a predetermined update time, fixed for each subset SI, ..., SL. One carries out here, for each subset SI, 1 = 1, ..., L, an update according to the process PROC2 at times of update regularly spaced in time.

La figure 2A illustre les étapes du processus PROC1.Figure 2A illustrates the steps in the PROC1 process.

Lorsqu'un paquet de données PKT à traiter est reçu par le dispositif de contrôle 3 (étape E10), le dispositif de contrôle 3 détermine dans un premier temps à quelle application logicielle parmi les applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ ce paquet PKT est destiné (étape E20). A cet effet, le dispositif de contrôle 3 examine par exemple les valeurs d'un ou de plusieurs entêtes du paquet PKT et utilise des associations (valeur(s), application) pour déterminer l'application logicielle destinataire de ce paquet.When a PKT data packet to be processed is received by the control device 3 (step E10), the control device 3 firstly determines which software application among the software applications ΑΡΡΙ,.,., ΑΡΡΝ this PKT packet is intended (step E20). To this end, the control device 3 examines for example the values of one or more headers of the PKT packet and uses associations (value (s), application) to determine the software application intended for this packet.

On suppose ici que le paquet de données PKT est destiné à l'application logicielle APPn. Puis le dispositif de contrôle 3, par l'intermédiaire de son module d'inspection 3B, détermine si le seau TBn de jetons associé à l'application logicielle APPn comprend au moins un jeton, autrement si bn (nombre de jetons compris dans le seau TBn à l'instant courant) est supérieur ou égal à 1 (étape test E30).It is assumed here that the PKT data packet is intended for the software application APPn. Then the control device 3, via its inspection module 3B, determines whether the bucket TBn of tokens associated with the software application APPn comprises at least one token, otherwise if bn (number of tokens included in the bucket TBn at the current time) is greater than or equal to 1 (test step E30).

Si le seau TBn ne contient pas au moins un jeton (réponse non à l'étape E30), i.e. le nombre de jetons bn est négatif ou nul, le paquet PKT est rejeté par le module de rejet 3E du dispositif de contrôle 3 (étape E40). Il est par exemple supprimé par le module de rejet 3E. En d'autres mots, il n'est pas traité.If the bucket TBn does not contain at least one token (response no to step E30), ie the number of tokens bn is negative or zero, the PKT packet is rejected by the rejection module 3E of the control device 3 (step E40). It is for example deleted by the 3E rejection module. In other words, it is not treated.

Si le seau TBn contient au moins un jeton (réponse oui à l'étape test E30), le module de traitement 3C du dispositif de contrôle 3 le transmet à l'application logicielle APPn et déclenche le traitement du paquet PKT par l'application logicielle APPn (étape E50). L'application logicielle APPn a accès librement à la ressource CPU1 et peut exécuter sans être interrompue les diverses opérations du traitement qu'elle doit appliquer sur le paquet PKT. La durée notée tf-td pendant laquelle la ressource CPU1 est utilisée par l'application logicielle APPn lors du traitement du paquet PKT est mesurée par la ressource CPU1. Cette durée caractérise la durée d'accès à la ressource CPU1 par l'application logicielle lors du traitement du paquet PKT.If the bucket TBn contains at least one token (answer yes in test step E30), the processing module 3C of the control device 3 transmits it to the software application APPn and triggers the processing of the PKT packet by the software application APPn (step E50). The software application APPn has free access to the resource CPU1 and can execute without being interrupted the various processing operations which it must apply to the PKT packet. The duration noted tf-td during which the resource CPU1 is used by the software application APPn during the processing of the PKT packet is measured by the resource CPU1. This duration characterizes the duration of access to the resource CPU1 by the software application during the processing of the PKT packet.

A l'issue du traitement du paquet PKT par l'application logicielle APPn, le seau à jetons TBn de l'application APPn est mis à jour (étape E60).At the end of the processing of the PKT packet by the software application APPn, the token bucket TBn of the application APPn is updated (step E60).

Plus spécifiquement, le nombre de jetons bn contenu dans le seau TBn est décrémenté par le module de décrémentation 3D du dispositif de contrôle 3 d'un nombre de jetons noté ici dn. Ce nombre de jetons dn correspond à la durée d'accès à la ressource CPU1 par l'application logicielle APPn lors du traitement du paquet de données PKT, soit à tf-td. Cette durée caractérise la durée pendant laquelle l'application logicielle APPn a pu accéder librement à la ressource CPU1 pour traiter le paquet de données PKT lors de l'étape de traitement E50 sans être interrompue par une autre application. Elle est quantifiée ici par le module de décrémentation 3D en unités de temps CPU (de durée T chacune) : dans l'exemple envisagé ici, le module de décrémentation 3C estime cette durée d'accès à dn.T, chaque jeton correspondant à une unité de temps CPU (de durée T) comme indiqué précédemment. On note qu'il est possible que dn.T ne soit pas exactement égal à tf-td en fonction des valeurs de dn et de T, dn étant un nombre entier (on a (dn-l).T <tf-td< dn.T).More specifically, the number of tokens bn contained in the bucket TBn is decremented by the 3D decrementation module of the control device 3 by a number of tokens noted here dn. This number of tokens dn corresponds to the duration of access to the resource CPU1 by the software application APPn during the processing of the PKT data packet, ie at tf-td. This duration characterizes the duration during which the software application APPn was able to freely access the resource CPU1 to process the data packet PKT during the processing step E50 without being interrupted by another application. It is quantified here by the 3D decrementation module in CPU time units (of duration T each): in the example envisaged here, the decrementation module 3C estimates this access time at dn.T, each token corresponding to a CPU time unit (of duration T) as indicated previously. We note that it is possible that dn.T is not exactly equal to tf-td depending on the values of dn and T, dn being an integer (we have (dn-l) .T <tf-td < dn.T).

Cette étape de décrémentation E60 clôture le processus PROC1. Le dispositif de contrôle 3 se met alors en attente de la réception d'un nouveau paquet à traiter. Les étapes du processus PROC1 sont répétées pour chaque nouveau paquet de données reçu par le dispositif de contrôle 3 et destiné à une application logicielle ΑΡΡΙ,,.,,ΑΡΡΝ.This step of decrementing E60 ends the process PROC1. The control device 3 then waits for reception of a new packet to be processed. The steps of the process PROC1 are repeated for each new data packet received by the control device 3 and intended for a software application ΑΡΡΙ ,,. ,, ΑΡΡΝ.

Comme mentionné précédemment, dans le premier mode de réalisation, le dispositif de contrôle 3 met en œuvre, en marge (c'est-à-dire indépendamment) de la réception des paquets de données à traiter (autrement dit, en marge du processus PROC1), le processus PROC2 visant à générer de nouveaux jetons d'accès à la ressource CPU1 pour les applications logicielles ΑΡΡΙ,,.,,ΑΡΡΝ. Ce processus PROC2 est illustré sur la figure 2B et est mis en œuvre pour chaque sous-ensemble SI,,..,SL dès que les instants de mise à jour de ces sous-ensembles sont détectés (étape F10). Les instants de mise à jour des sous-ensembles S1,...,SL sont espacés de façon régulière dans le temps. On note ûtl l'intervalle de temps séparant deux mises à jour selon le processus PROC2 pour le sous-ensemble SI, 1=1,...,L. Un même intervalle de temps Atl peut être choisi pour tous les sous-ensembles SI ou des intervalles de temps différents. De même, les mises à jour des différents sous-ensembles peuvent être désynchronisées les unes par rapport aux autres (i.e. effectuées à des instants tOI+Atl avec tOI différents selon les sous-ensembles SI).As mentioned previously, in the first embodiment, the control device 3 implements, on the fringes (that is to say independently) of the reception of the data packets to be processed (in other words, on the fringes of the process PROC1 ), the process PROC2 aimed at generating new tokens for accessing the resource CPU1 for the software applications ΑΡΡΙ ,,. ,, ΑΡΡΝ. This process PROC2 is illustrated in FIG. 2B and is implemented for each subset SI ,, .., SL as soon as the instants for updating these subsets are detected (step F10). The times for updating the subsets S1, ..., SL are spaced regularly over time. We note ûtl the time interval separating two updates according to the process PROC2 for the subset SI, 1 = 1, ..., L. The same time interval Atl can be chosen for all the subsets SI or different time intervals. Likewise, the updates of the different subsets can be out of sync with one another (i.e. carried out at times tOI + Atl with different tOI depending on the subsets SI).

Dans la suite de la description, on considère qu'un instant de mise à jour relatif au sous-ensemble d'applications logicielles S (S étant l'un des sous-ensembles S1,...,SL mentionné cidessus) est détecté lors de l'étape F10 (évènement de mise à jour au sens de l'invention). On désigne par I(S) l'ensemble des indices des applications logicielles appartenant au sous-ensemble S et par AtS l'intervalle de temps séparant deux mises à jour pour le sous-ensemble S.In the following description, it is considered that an update time relating to the subset of software applications S (S being one of the subsets S1, ..., SL mentioned above) is detected during of step F10 (update event within the meaning of the invention). We denote by I (S) the set of indices of the software applications belonging to the subset S and by AtS the time interval separating two updates for the subset S.

De nouveaux jetons d'accès sont alors générés par le dispositif de contrôle 3 pour les applications logicielles APPi, iel(S), via son module de mise à jour 3F. La génération à proprement parler de nouveaux jetons conformément au processus PROC2 se déroule en trois étapes F20 à F40.New access tokens are then generated by the control device 3 for the software applications APPi, iel (S), via its update module 3F. The actual generation of new tokens according to the PROC2 process takes place in three stages F20 to F40.

Lors de cette génération, pour chaque application logicielle APPi, iel(S), le dispositif de contrôle 3, via son module de détermination 3F1, détermine tout d'abord un nombre de jetons ri destiné à l'application logicielle APPi, et plus particulièrement, à être ajouté à son seau de jetons TBi (i.e. aux bi jetons déjà présents dans le seau de jetons TBi, bi désignant le nombre courant de jetons présents dans le seau TBi) (étape F20). Dans le mode de réalisation décrit ici, le nombre de jetons ri est déterminé à partir d'une vitesse de génération de jetons fixée pour l'application logicielle APPi. On note vi cette vitesse ; elle est exprimée en jetons par seconde, autrement dit ici en unités de temps CPU par seconde.During this generation, for each software application APPi, iel (S), the control device 3, via its determination module 3F1, first of all determines a number of tokens ri intended for the software application APPi, and more particularly , to be added to its bucket of tokens TBi (ie to the bi tokens already present in the bucket of tokens TBi, bi denoting the current number of tokens present in the bucket TBi) (step F20). In the embodiment described here, the number of tokens ri is determined from a token generation speed set for the software application APPi. We note vi this speed; it is expressed in tokens per second, in other words here in units of CPU time per second.

Une même vitesse de génération de jetons v pour toutes les applications logicielles ΑΡΡΙ,,.,,ΑΡΡΝ peut être envisagée. En variante, on peut envisager des vitesses de génération distinctes en fonction des applications logicielles APPi, i=l,...,N. La somme des vitesses de génération détermine le pourcentage du temps d'accès à la ressource CPU1 que l'opérateur du système informatique 1 est prêt à allouer aux applications logicielles APPi, i=1,...,N.The same token generation speed v for all the software applications ΑΡΡΙ ,,. ,, ΑΡΡΝ can be envisaged. As a variant, it is possible to envisage separate generation speeds as a function of the software applications APPi, i = l, ..., N. The sum of the generation speeds determines the percentage of the access time to the resource CPU1 that the operator of the computer system 1 is ready to allocate to the software applications APPi, i = 1, ..., N.

Ainsi, par exemple, si chaque jeton représente une nanoseconde de temps CPU (i.e. du temps d'accès à la ressource CPU1 ici), cela signifie que le dispositif de contrôle 3 dispose de 109 jetons à allouer entre les applications logicielles APP1,...,APPN si le cœur CPU1 est dédié entièrement à ces applications. Il peut en variante être décidé par l'opérateur du système informatique 1 de n'allouer qu'une fraction des 109 jetons aux applications logicielles APP1,...,APPN (par exemple 80%). Si on désigne par a la fraction du temps CPU dédié par l'opérateur aux applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ et NbT le nombre de jetons disponibles chaque seconde, la somme des vitesses vi de génération des jetons, i=l,...N, vérifie la relation :Thus, for example, if each token represents a nanosecond of CPU time (ie of the access time to the resource CPU1 here), this means that the control device 3 has 10 9 tokens to allocate between the software applications APP1 ,. .., APPN if the CPU1 core is entirely dedicated to these applications. It may alternatively be decided by the operator of the computer system 1 to allocate only a fraction of the 10 9 tokens to software applications APP1, ..., APPN (for example 80%). If we denote by a the fraction of CPU time dedicated by the operator to software applications ΑΡΡΙ,.,., ΑΡΡΝ and NbT the number of tokens available each second, the sum of the speeds vi of generation of the tokens, i = l ,. ..N, check the relation:

N = a. NbT i=lN = a. NbT i = l

Ainsi, si une même vitesse de génération vi=v, i=l,...,N est fixée pour toutes les applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ, les jetons sont répartis de façon équitable entre les applications.Thus, if the same generation speed vi = v, i = l, ..., N is fixed for all the software applications ΑΡΡΙ,.,., ΑΡΡΝ, the tokens are distributed equitably between the applications.

L'opérateur du système informatique 1 peut en variante décider de prioriser certaines applications logicielles APPi en leur attribuant des vitesses de génération de jetons supérieures aux autres applications.The operator of the computer system 1 can, as a variant, decide to prioritize certain software applications APPi by assigning them token generation speeds higher than the other applications.

A partir de la vitesse de génération vi, le module de détermination 3F1 détermine le nombre de jetons à générer ri de la façon suivante :From the generation speed vi, the determination module 3F1 determines the number of tokens to be generated ri as follows:

ri=vi.ûtS pour iel(S).ri = vi.ûtS for iel (S).

Parmi les nouveaux jetons générés, en raison des nombres maximums de jetons fixés pour chaque seau de jetons et de l'état courant des seaux de jetons des applications logicielles APPi, iel(S), certains jetons ne pourront sans doute pas être effectivement alloués aux applications auxquelles ils étaient initialement destinés. Ces jetons sont dits résiduels. Le dispositif de contrôle 3 évalue, via son module de réattribution 3F3, le nombre global de ces jetons résiduels s'il en existe (étape F30) pour l'ensemble des applications logicielles de l'ensemble I(S). Ce nombre global de jetons résiduels, noté r', est évalué par le module de réattribution 3F3 de la façon suivante :Among the new tokens generated, due to the maximum number of tokens set for each bucket of tokens and the current state of the token buckets of APPi, iel (S) software applications, some tokens may not be able to be effectively allocated to applications for which they were originally intended. These tokens are said to be residual. The control device 3 evaluates, via its reallocation module 3F3, the overall number of these residual tokens if there are any (step F30) for all of the software applications of the set I (S). This overall number of residual tokens, noted r ', is evaluated by the 3F3 reallocation module as follows:

r' = (ri - min(B - bi,ri)) ie!(S) où bi désigne le nombre de jetons courant dans le seau TBi de l'application logicielle APPi comme mentionné précédemment.r '= (ri - min (B - bi, ri)) ie! (S) where bi denotes the number of tokens running in the bucket TBi of the software application APPi as mentioned previously.

Puis le dispositif de contrôle 3 ajoute, par le biais de son module d'ajout 3F2, à chaque seau TBi associé à chaque application logicielle APPi de l'ensemble I(S), le nombre de jetons ri déterminé pour cette application logicielle APPi dans la limite du nombre maximum de jetons Bi défini pour celle-ci (étape F40) : le module d'ajout 3F2 ajoute ainsi à chaque seau TBi de jetons associé à une application logicielle APPi, iel(S), mîn(Bi-bi,ri) jetons (soit min(B-bi,ri) dans l'exemple envisagé ici où Bi=B). A l'issue de cette étape, chaque seau de jetons TBi, iel(S) contient donc un nombre de jetons égal à min(B,bi+ri) : il s'agit du nouveau nombre courant bi de jetons contenu dans le seau TBi de l'application logicielle APPi, iel(S).Then the control device 3 adds, by means of its addition module 3F2, to each bucket TBi associated with each software application APPi of the set I (S), the number of tokens ri determined for this software application APPi in the limit of the maximum number of tokens Bi defined for it (step F40): the adding module 3F2 thus adds to each bucket TBi of tokens associated with a software application APPi, iel (S), mîn (Bi-bi, ri) tokens (ie min (B-bi, ri) in the example envisaged here where Bi = B). At the end of this step, each bucket of tokens TBi, iel (S) therefore contains a number of tokens equal to min (B, bi + ri): this is the new current number bi of tokens contained in the bucket TBi of the APPi, iel (S) software application.

Si le nombre ri de jetons résiduels évalués à l'étape F30 est nul (réponse non à l'étape test F50), le processus PROC2 de mise à jour s'achève (étape F120).If the number ri of residual tokens evaluated in step F30 is zero (answer no in test step F50), the updating process PROC2 is completed (step F120).

Conformément à l'invention, si au contraire le nombre global ri de jetons résiduels évalué à l'étape F30 par le dispositif de contrôle 3 est supérieur à 0 (réponse oui à l'étape test F50), les jetons résiduels qui n'ont pas pu être ajoutés aux seaux des applications logicielles ayant atteint leur nombre maximum de jetons sont réattribués par le module de réattribution 3F3 aux autres applications logicielles, ou tout du moins à celles qui n'ont pas encore atteint leur nombre maximum de jetons, et ce, dans la limite de ce nombre maximum de jetons.In accordance with the invention, if on the contrary the overall number ri of residual tokens evaluated in step F30 by the control device 3 is greater than 0 (answer yes in test step F50), the residual tokens which have not software applications that have reached their maximum number of tokens cannot be added to the buckets and are reassigned by the 3F3 reallocation module to other software applications, or at least to those that have not yet reached their maximum number of tokens, and this , within the limit of this maximum number of tokens.

Dans le mode de réalisation décrit ici, on considère pour la réattribution des jetons résiduels toutes les applications logicielles APP1,...,APPN qui n'ont pas atteint leur nombre maximum de jetons. Le module de réattribution 3F3 identifie donc dans un premier temps les applications logicielles APPj parmi les applications ΑΡΡΙ,,.,,ΑΡΡΝ pour lesquelles, à l'issue de l'étape F40, le nombre bj courant de jetons présent dans leur seau TBj est inférieur au nombre maximum de jetons Bj=B fixé pour ces applications (étape F60). On désigne par J l'ensemble des indices des applications logicielles vérifiant cette condition.In the embodiment described here, we consider for the reassignment of residual tokens all software applications APP1, ..., APPN which have not reached their maximum number of tokens. The reallocation module 3F3 therefore first identifies the software applications APPj among the applications ΑΡΡΙ ,,. ,, ΑΡΡΝ for which, at the end of step F40, the current number bj of tokens present in their bucket TBj is lower than the maximum number of tokens Bj = B set for these applications (step F60). We denote by J the set of indices of software applications satisfying this condition.

Puis, le module de réattribution 3F3 répartit entre les applications logicielles ainsi identifiées tout ou partie du nombre global ri de jetons résiduels évalué dans la limite des nombres maximaux de jetons fixés pour les applications logicielles identifiées dans l'ensemble J. Plus précisément ici, il réattribue les ri jetons résiduels aux applications logicielles identifiées dans l'ensemble J en fonction de leurs vitesses de génération respectives (i.e. au prorata de ces vitesses). A cet effet, il détermine, pour chacune des applications logicielles APPj, jeJ, un nombre de jetons rj destiné à cette application en appliquant la relation suivante (étape F70) :Then, the 3F3 reallocation module distributes between the software applications thus identified all or part of the overall number ri of residual tokens evaluated within the limit of the maximum number of tokens set for the software applications identified in the set J. More precisely here, it reassigns the residual tokens to the software applications identified in the set J as a function of their respective generation speeds (ie in proportion to these speeds). To this end, it determines, for each of the software applications APPj, jeJ, a number of tokens rj intended for this application by applying the following relation (step F70):

Comme lors de l'étape F30, parmi les jetons résiduels ri, en raison des nombres maximums de jetons fixés pour les seaux de jetons des applications logicielles identifiées dans l'ensemble J et de l'état courant de ces seaux, il se peut que certains jetons ne puissent pas être alloués aux applications auxquelles on les a destinés lors de l'étape F70 (autrement dit que pour certaines applications logicielles de l'ensemble J, seulement une partie des rj jetons destinés à ces applications puisse être ajoutés à leurs seaux respectifs). Le module de réattribution 3F3 réévalue ainsi le nombre global ri des jetons résiduels au moyen de la relation suivante (étape F80) :As in step F30, among the residual tokens ri, due to the maximum number of tokens set for the token buckets of the software applications identified in the set J and the current state of these buckets, it may be that certain tokens cannot be allocated to the applications to which they were intended during step F70 (in other words that for certain software applications of the set J, only part of the rj tokens intended for these applications can be added to their buckets respectively). The reallocation module 3F3 thus reassesses the overall number ri of the residual tokens by means of the following relation (step F80):

Puis le module d'ajout 3F2 ajoute, à chaque seau TBj dédié à chaque application logicielle APPj, jeJ, le nombre de jetons rj déterminé lors de l'étape F70 pour cette application logicielle APPj dans la limite du nombre maximum de jetons Bj défini pour celle-ci (étape F90) : en d'autres mots, il ajoute à chaque seau TBj de jetons associé à une application logicielle APPj de l'ensemble J, min(Bi-bj,rj) jetons (soit min(B-bj,rj dans l'exemple envisagé ici où Bj=B pour j=l,...,N).Then the adding module 3F2 adds, to each bucket TBj dedicated to each software application APPj, jeJ, the number of tokens rj determined during step F70 for this software application APPj within the limit of the maximum number of tokens Bj defined for this one (step F90): in other words, it adds to each bucket TBj of tokens associated with a software application APPj of the set J, min (Bi-bj, rj) tokens (i.e. min (B-bj , rj in the example considered here where Bj = B for j = l, ..., N).

A l'issue de cette étape F90, chaque seau de jetons TBj associé à une application logicielle APPj contient donc un nombre courant de jetons égal à min(B,bj+rj) : ce nombre constitue le nouveau nombre courant de jetons bj contenus dans le seau TBj, jeJ.At the end of this step F90, each bucket of tokens TBj associated with a software application APPj therefore contains a current number of tokens equal to min (B, bj + rj): this number constitutes the new current number of tokens bj contained in the bucket TBj, jeJ.

Le module de réattribution 3F3 vérifie s'il reste des jetons résiduels à réattribuer entre les applications logicielles, autrement dit si r' est supérieur à 0 (étape test F100).The reassignment module 3F3 checks whether there are residual tokens to be reassigned between the software applications, in other words if r 'is greater than 0 (test step F100).

Si r' est nul (réponse non à l'étape test F100), la mise à jour réalisée par le processus PROC2 est achevée (étape F120).If r 'is zero (response no at test step F100), the update carried out by the process PROC2 is completed (step F120).

S'il reste encore des jetons à réattribuer (i.e. r'>0, réponse oui à l'étape test F100), le module de réattribution 3F3 vérifie s'il existe au moins une application logicielle APPjO parmi les applications identifiées dans l'ensemble J disposant d'un seau de jetons contenant un nombre de jetons courant bjO inférieur au nombre maximum de jetons maximum BjO fixé pour cette application logicielle (étape test F110).If there are still tokens to be reassigned (ie r '> 0, answer yes in the test step F100), the reassignment module 3F3 checks whether there is at least one software application APPjO among the applications identified in the set J having a bucket of tokens containing a number of current tokens bjO lower than the maximum number of maximum tokens BjO fixed for this software application (test step F110).

S'il n'existe pas d'application vérifiant cette condition (réponse non à l'étape test F110), la mise à jour réalisée par le processus PROC2 s'achève (étape F120).If there is no application verifying this condition (response no to the test step F110), the update carried out by the process PROC2 ends (step F120).

S'il existe au moins une application vérifiant cette condition (réponse oui à l'étape test Fl 10), alors les étapes d'identification F60, de détermination F70, de réévaluation F80, d'ajout F90 et de test F100 sont réitérées pour ladite au moins une application, jusqu'à ce que le nombre de jetons résiduels r' soit nul ou que tous les seaux associés respectivement aux applications logicielles APP1,...APPN aient atteint leurs nombres de jetons maximum (réponses non aux étapes tests F90 et F100). Ceci clôture la mise à jour réalisée par le processus PROC2 (étape F120).If there is at least one application verifying this condition (answer yes at the test step Fl 10), then the steps of identification F60, determination F70, reassessment F80, addition F90 and test F100 are repeated for said at least one application, until the number of residual tokens r 'is zero or until all the buckets associated respectively with software applications APP1, ... APPN have reached their maximum number of tokens (responses no to test steps F90 and F100). This closes the update carried out by the PROC2 process (step F120).

On note que pour permettre aux processus PROC1 et PROC2 de s'exécuter en parallèle de façon indépendante l'une de l'autre, on peut envisager d'utiliser des verrous logiciels permettant par exemple, lorsque le processus PROC1 d'empêcher l'accès aux seaux des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ par le processus PROC2 et inversement, de sorte à éviter un accès concurrent aux seaux par les deux processus. L'usage de tels verrous logiciels est connu en soi et n'est pas décrit en détail ici.Note that to allow processes PROC1 and PROC2 to run in parallel independently of each other, we can consider using software locks allowing for example, when the process PROC1 to prevent access to software application buckets ΑΡΡΙ,.,., ΑΡΡΝ by the PROC2 process and vice versa, so as to avoid concurrent access to the buckets by the two processes. The use of such software locks is known per se and is not described in detail here.

En variante, on peut envisager de synchroniser l'exécution d'un processus par rapport à l'autre, de sorte à éviter que ces deux processus s'exécutent en même temps et procèdent à une mise à jour concurrente des seaux de jetons des applications logicielles APP1,....,APPN.As a variant, it is possible to envisage synchronizing the execution of one process with respect to the other, so as to prevent these two processes from executing at the same time and carrying out a concurrent update of the token buckets of the applications. APP1, ...., APPN software.

La figure 3 représente un deuxième mode de réalisation de l'invention dans lequel le processus PROC2 et la génération de nouveaux jetons pour les applications logicielles ΑΡΡΙ,,.,.,ΑΡΡΝ sont réalisés à des intervalles irréguliers, et ne nécessite pas de gérer un accès simultané aux seaux des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ par les deux processus PROC1 etFIG. 3 represents a second embodiment of the invention in which the process PROC2 and the generation of new tokens for the software applications ΑΡΡΙ ,,.,., ΑΡΡΝ are carried out at irregular intervals, and does not require managing a simultaneous access to the software application buckets ΑΡΡΙ,.,., ΑΡΡΝ by the two processes PROC1 and

PROC2.PROC2.

Dans ce deuxième mode de réalisation, l'événement déclencheur (étape F10) de la mise à jour réalisée au moyen du processus PROC2 est la réception par le dispositif de contrôle 3 d'un paquet de données PKT destiné à être traité par l'une (au moins) des applications logicielles APP1,...APPN (étape E10 décrite précédemment en référence à la figure 2A). Le dispositif de contrôle 3 vérifie en outre si la dernière mise à jour date de plus d'un intervalle de temps Δ prédéterminé (étape test G10), afin de s'assurer que deux mises à jour successives des seaux de jetons des applications APP1,...,APPN sont espacées d'au moins l'intervalle de temps Δ.In this second embodiment, the triggering event (step F10) of the update carried out by means of the PROC2 process is the reception by the control device 3 of a PKT data packet intended to be processed by one (at least) software applications APP1, ... APPN (step E10 described previously with reference to FIG. 2A). The control device 3 also checks whether the last update dates from more than a predetermined time interval Δ (test step G10), in order to ensure that two successive updates of the token buckets of the applications APP1, ..., APPN are spaced at least the time interval Δ.

Si tel est le cas (réponse oui à l'étape test G10), le dispositif de contrôle 3 déclenche la mise à jour des seaux de jetons selon le processus PROC2 (étape G20), de façon identique à ce qui a été décrit pour le premier mode de réalisation en référence à la figure 2B. Il peut lors de cette mise à jour considérer un sous-ensemble S d'applications logicielles préalablement sélectionné parmi une pluralité de sous-ensembles SI,...SL, chaque sous-ensemble SI, 1=1,...,L comprenant une ou plusieurs applications logicielles parmi les applications APP1,...,APPN, les sous-ensembles S1,...,SL étant disjoints comme dans le premier mode de réalisation : dans ce cas, le sousensemble S sélectionné est le sous-ensemble parmi les sous-ensembles S1,...,SL qui comprend l'application logicielle APPn à laquelle le paquet PKT est destiné. En variante, lors de la mise à jour selon le processus PROC2, le dispositif de contrôle 3 peut considérer l'ensemble des applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ (i.e. le sous-ensemble S comprend ici toutes les applications logicielles APP1,...,APPN). Le processus PROC2 est appliqué en considérant Atl = AtUPDs, où AtUPDs désigne l'intervalle de temps séparant cette mise à jour de la dernière mise à jour effectuée par le dispositif de contrôle 3 selon le processus PROC2 pour le sous-ensemble S.If this is the case (answer yes in test step G10), the control device 3 triggers the updating of the token buckets according to the process PROC2 (step G20), in an identical manner to what has been described for the first embodiment with reference to FIG. 2B. During this update, it can consider a subset S of software applications previously selected from a plurality of subsets SI, ... SL, each subset SI, 1 = 1, ..., L comprising one or more software applications among the applications APP1, ..., APPN, the subsets S1, ..., SL being disjoint as in the first embodiment: in this case, the selected subset S is the subset among the subsets S1, ..., SL which comprises the software application APPn for which the PKT packet is intended. As a variant, during the update according to the process PROC2, the control device 3 can consider all of the software applications ΑΡΡΙ,.,., ΑΡΡΝ (ie the subset S here includes all the software applications APP1 ,. .., APPN). The PROC2 process is applied by considering Atl = AtUPD s , where AtUPD s denotes the time interval separating this update from the last update carried out by the control device 3 according to the PROC2 process for the subset S.

Sinon (réponse non à l'étape test G10), le dispositif de contrôle 3 exécute directement le processus PROC1 de traitement du paquet de données PKT reçu à l'étape E10 (étape G30) et aucune mise à jour selon le processus PROC2 n'est effectuée.Otherwise (response no to test step G10), the control device 3 directly executes the process PROC1 for processing the data packet PKT received in step E10 (step G30) and no update according to the process PROC2 is done.

A l'issue de la mise à jour réalisée le cas échéant lors de l'étape G20, le dispositif de contrôle 3 déclenche le traitement du paquet PKT via le processus PROC1 (étape G30), comme décrit précédemment dans le premier mode de réalisation en référence à la figure 2A.At the end of the update carried out if necessary during step G20, the control device 3 triggers the processing of the PKT packet via the process PROC1 (step G30), as described previously in the first embodiment in reference to Figure 2A.

On note que quel que soit le mode de réalisation envisagé, le processus PROC2 peut être mis en œuvre lors d'une étape d'initialisation des seaux de jetons associés aux différentes applications logicielles ΑΡΡΙ,.,.,ΑΡΡΝ pour attribuer des jetons à ces différentes applications avant même la réception d'un paquet de données. En variante, on peut envisager d'attribuer, lors de cette étape d'initialisation, à chaque application logicielle ΑΡΡΙ,.,.,ΑΡΡΝ un même nombre de jetons prédéterminé ou un nombre de jetons différents (égal par exemple aux nombres maximums de jetons ΒΙ,.,,.,ΒΝ).Note that whatever the embodiment envisaged, the PROC2 process can be implemented during a step of initialization of the token buckets associated with the different software applications ΑΡΡΙ,.,., ΑΡΡΝ to assign tokens to these different applications even before receiving a data packet. As a variant, it is possible to envisage assigning, during this initialization step, to each software application ΑΡΡΙ,.,., ΑΡΡΝ the same predetermined number of tokens or a number of different tokens (equal for example to the maximum number of tokens ΒΙ,. ,,., ΒΝ).

Claims (16)

REVENDICATIONS 1. Procédé de contrôle d'un accès à une ressource (CPU1) d'un système informatique (1) par une pluralité d'applications logicielles (ΑΡΡΙ,.,.ΑΡΡΝ) destinées à s'exécuter sur le système informatique, le procédé de contrôle comprenant :1. Method for controlling access to a resource (CPU1) of a computer system (1) by a plurality of software applications (ΑΡΡΙ,.,. ΑΡΡΝ) intended to run on the computer system, the method control including: — une étape d'association, à chaque application logicielle, d'un ensemble dédié de jetons (ΤΒΙ,.,.,ΤΒΝ), chaque jeton représentant une période de temps prédéterminée d'accès à ladite ressource ;A step of association, with each software application, of a dedicated set of tokens (ΤΒΙ,.,., ΤΒΝ), each token representing a predetermined period of time of access to said resource; — sur réception (E10) d'un paquet de données (PKT) destiné à être traité par une dite application logicielle :- on reception (E10) of a data packet (PKT) intended to be processed by a said software application: o si l'ensemble de jetons associé à cette application logicielle comprend au moins un jeton (E30) :o if the set of tokens associated with this software application includes at least one token (E30): une étape de traitement (E50) du paquet de données par ladite application logicielle en utilisant ladite ressource ;a step of processing (E50) the data packet by said software application using said resource; une étape de décrémentation (E60) de l'ensemble de jetons associé à l'application logicielle d'un nombre de jetons correspondant à une durée d'accès à ladite ressource par l'application logicielle lors de l'étape de traitement dudit paquet ;a step of decrementing (E60) the set of tokens associated with the software application by a number of tokens corresponding to a duration of access to said resource by the software application during the step of processing said packet; o sinon, une étape de rejet (E40) du paquet de données ; et — sur détection d'au moins un événement de mise à jour relatif à au moins un sous-ensemble d'applications logicielles de la pluralité d'applications logicielles (F10), une étape de mise à jour (PROC2) comprenant :o otherwise, a rejection step (E40) of the data packet; and - upon detection of at least one update event relating to at least one subset of software applications from the plurality of software applications (F10), an update step (PROC2) comprising: o pour chaque application logicielle dudit sous-ensemble :o for each software application of said subset: une étape de détermination (F20) d'un nombre de jetons destiné à cette application logicielle ; et une étape d'ajout (F40) du nombre de jetons déterminé à l'ensemble de jetons dédié associé à cette application logicielle dans la limite d'un nombre maximum de jetons fixé pour cette application logicielle ; et o si (F50), pour au moins une application logicielle du sous-ensemble, le nombre de jetons déterminé est supérieur au nombre de jetons ajouté, et s'il existe au moins une autre application logicielle de la pluralité d'applications logicielles qui est associée à un ensemble de jetons ayant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette autre application logicielle, une étape de réattribution (F60-F110) du nombre de jetons résiduels à ladite au moins une autre application.a step of determining (F20) a number of tokens intended for this software application; and a step of adding (F40) the number of tokens determined to the set of dedicated tokens associated with this software application within the limit of a maximum number of tokens fixed for this software application; and o if (F50), for at least one software application of the subset, the number of tokens determined is greater than the number of tokens added, and if there exists at least one other software application of the plurality of software applications which is associated with a set of tokens having a number of tokens lower than the maximum number of tokens set for this other software application, a step of reassigning (F60-F110) the number of residual tokens to said at least one other application. 2. Procédé de contrôle selon la revendication 1 dans lequel l'événement de mise à jour détecté (F10) est un instant de mise à jour pour ledit sous-ensemble parmi une pluralité d'instants de mise à jour espacés de façon régulière dans le temps.2. Control method according to claim 1, in which the detected update event (F10) is an update instant for said subset among a plurality of update instants spaced regularly in the time. 3. Procédé de contrôle selon la revendication 1 dans lequel l'événement de mise à jour détecté (F10) est la réception (E10) d'un paquet de données destiné à être traité par une dite application logicielle.3. The control method according to claim 1, in which the detected update event (F10) is the reception (E10) of a data packet intended to be processed by a said software application. 4. Procédé de contrôle selon la revendication 3 dans lequel l'étape de mise à jour (PROC2) est mise en œuvre avant le traitement dudit paquet de données reçu.4. The control method according to claim 3, in which the updating step (PROC2) is implemented before the processing of said received data packet. 5. Procédé de contrôle selon l'une quelconque des revendications 1 à 4 dans lequel deux étapes de mises à jour successives des ensembles de jetons sont espacées d'au moins un intervalle de temps prédéterminé (G10).5. Control method according to any one of claims 1 to 4 wherein two steps of successive updates of the token sets are spaced by at least a predetermined time interval (G10). 6. Procédé de contrôle selon l'une quelconque des revendications 1 à 5 dans lequel lors de l'étape de détermination (F20), le nombre de jetons destiné à l'application logicielle est déterminé à partir d'une vitesse de génération de jetons fixée pour cette application logicielle.6. Control method according to any one of claims 1 to 5 wherein during the determination step (F20), the number of tokens intended for the software application is determined from a token generation speed set for this software application. 7. Procédé de contrôle selon la revendication 6 dans lequel une même vitesse de génération de jetons est fixée pour chacune des applications logicielles de ladite pluralité d'applications logicielles.7. The control method as claimed in claim 6, in which the same token generation speed is fixed for each of the software applications of said plurality of software applications. 8. Procédé de contrôle selon l'une quelconque des revendications 1 à 7 comprenant, lors de l'étape de mise à jour :8. Control method according to any one of claims 1 to 7 comprising, during the updating step: — une étape d'évaluation (F30) d'un nombre global de jetons résiduels pour le sous-ensemble d'applications logicielles ;- an evaluation step (F30) of a global number of residual tokens for the subset of software applications; — une étape d'identification (F60), parmi ladite pluralité d'applications logicielles, des applications logicielles associées à des ensembles dédiés de jetons qui après l'étape d'ajout comprennent des nombres de jetons inférieurs aux nombres maximaux de jetons fixés pour ces applications logicielles ; et — une étape de répartition (F90) entre les applications logicielles identifiées de tout ou partie du nombre global de jetons résiduels dans la limite des nombres maximums de jetons fixés pour les applications logicielles identifiées.A step of identifying (F60), among said plurality of software applications, software applications associated with dedicated sets of tokens which after the adding step comprise numbers of tokens lower than the maximum numbers of tokens set for these software applications; and - a distribution step (F90) between the identified software applications of all or part of the overall number of residual tokens within the limit of the maximum number of tokens set for the identified software applications. 9. Procédé de contrôle selon la revendication 8 dans lequel tant qu'à l'issue de l'étape de répartition, il reste des jetons résiduels et qu'au moins une application logicielle associée à un ensemble de jetons comprenant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette application logicielle peut être identifiée, lesdits jetons résiduels sont répartis entre ladite au moins une application logicielle pouvant être identifiée.9. A control method according to claim 8 in which as long as at the end of the distribution step, there remain residual tokens and at least one software application associated with a set of tokens comprising a lower number of tokens at the maximum number of tokens fixed for this software application can be identified, said residual tokens are distributed between said at least one software application that can be identified. 10. Procédé de contrôle selon l'une quelconque des revendications 1 à 9 dans lequel un même nombre maximum de jetons est fixé pour chacune des applications logicielles de ladite pluralité d'applications logicielles.10. Control method according to any one of claims 1 to 9 wherein the same maximum number of tokens is fixed for each of the software applications of said plurality of software applications. 11. Procédé de contrôle selon l'une quelconque des revendications 1 à 10 dans lequel lors de l'étape de traitement, ladite application logicielle peut accéder à la ressource jusqu'à l'achèvement du traitement sur ledit paquet de données.11. Control method according to any one of claims 1 to 10 wherein during the processing step, said software application can access the resource until the completion of processing on said data packet. 12. Procédé de contrôle selon l'une quelconque des revendications 1 à 11 dans lequel ladite ressource est une ressource d'une unité de traitement centrale du système informatique.12. Control method according to any one of claims 1 to 11 wherein said resource is a resource of a central processing unit of the computer system. 13. Programme d'ordinateur comportant des instructions pour l'exécution des étapes du procédé de contrôle selon l'une quelconque des revendications 1 à 12 lorsque ledit programme est exécuté par un ordinateur.13. Computer program comprising instructions for the execution of the steps of the control method according to any one of claims 1 to 12 when said program is executed by a computer. 14. Support d'enregistrement lisible par un ordinateur sur lequel est enregistré un programme d'ordinateur comprenant des instructions pour l'exécution des étapes du procédé de contrôle selon l'une quelconque des revendications 1 à 12.14. Recording medium readable by a computer on which a computer program is recorded comprising instructions for the execution of the steps of the control method according to any one of claims 1 to 12. 15. Dispositif de contrôle (3) d'un accès à une ressource d'un système informatique par une pluralité d'applications logicielles destinées à s'exécuter sur le système informatique, ledit dispositif de contrôle comprenant :15. Control device (3) for access to a resource of a computer system by a plurality of software applications intended to run on the computer system, said control device comprising: — un module d'association (3A), configuré pour associer à chaque application logicielle un ensemble dédié de jetons, chaque jeton représentant une période de temps prédéterminée d'accès à ladite ressource ;- an association module (3A), configured to associate with each software application a dedicated set of tokens, each token representing a predetermined period of time of access to said resource; — des modules, activés sur réception d'un paquet de données destiné à être traité par une dite application logicielle, et comprenant :- modules, activated on receipt of a data packet intended to be processed by a said software application, and comprising: o un module de traitement (3B) et un module de décrémentation (3C), activés si l'ensemble de jetons associé à ladite application logicielle comprend au moins un jeton, le module de traitement étant configuré pour déclencher le traitement du paquet de données par ladite application logicielle en utilisant ladite ressource, et le module de décrémentation étant configuré pour décrémenter l'ensemble de jetons associé à l'application logicielle d'un nombre de jetons correspondant à une durée d'accès à ladite ressource par l'application logicielle lors du traitement du paquet de données ; o un module de rejet (3D) activé sinon et configuré pour rejeter le paquet de données ; et — un module de mise à jour (3F) activé sur détection d'au moins un événement de mise à jour prédéterminé relatif à au moins un sous-ensemble d'applications logicielles de ladite pluralité d'applications logicielles, ce module de mise à jour comprenant :a processing module (3B) and a decrementation module (3C), activated if the set of tokens associated with said software application comprises at least one token, the processing module being configured to trigger the processing of the data packet by said software application using said resource, and the decrement module being configured to decrement the set of tokens associated with the software application by a number of tokens corresponding to a duration of access to said resource by the software application during processing the data packet; o a rejection module (3D) activated otherwise and configured to reject the data packet; and - an update module (3F) activated on detection of at least one predetermined update event relating to at least one subset of software applications of said plurality of software applications, this update module day including: o un module de détermination et un module d'ajout, activés pour chaque application logicielle du sous-ensemble, le module de détermination étant configuré pour déterminer un nombre de jetons destiné à cette application logicielle, et le module d'ajout étant configuré pour ajouter le nombre de jetons déterminé à l'ensemble de jetons associé à l'application logicielle dans la limite d'un nombre maximum de jetons fixé pour cette application logicielle ; et o un module de réattribution, activé si pour au moins une application logicielle du sousensemble d'applications logicielles, le nombre de jetons déterminé est supérieur au nombre de jetons ajouté, et s'il existe au moins une autre application logicielle de la pluralité d'applications logicielles qui est associée à un ensemble de jetons ayant un nombre de jetons inférieur au nombre maximum de jetons fixé pour cette autre application logicielle, ce module de réattribution étant configuré pour réattribuer les jetons résiduels à ladite au moins une autre application.o a determination module and an addition module, activated for each software application of the subset, the determination module being configured to determine a number of tokens intended for this software application, and the addition module being configured to add the number of tokens determined for the set of tokens associated with the software application within the limit of a maximum number of tokens fixed for this software application; and o a reassignment module, activated if for at least one software application of the subset of software applications, the number of tokens determined is greater than the number of tokens added, and if there is at least one other software application of the plurality of software applications which is associated with a set of tokens having a number of tokens lower than the maximum number of tokens set for this other software application, this reassignment module being configured to reassign the residual tokens to said at least one other application. 16. Système informatique (1) comprenant :16. Computer system (1) comprising: — une pluralité d'applications logicielles (APP1,...,APPN) de traitement de données destinées à s'exécuter sur le système informatique et à accéder à au moins une ressource du système informatique lors de leurs exécutions ; et — un dispositif de contrôle (3) d'un accès à ladite au moins une ressource par la pluralité d'applications logicielles conforme à la revendication 15.- A plurality of software applications (APP1, ..., APPN) for processing data intended to run on the computer system and to access at least one resource of the computer system during their execution; and - a device (3) for controlling access to said at least one resource by the plurality of software applications according to claim 15.
FR1851581A 2018-02-23 2018-02-23 METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS Active FR3078462B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR1851581A FR3078462B1 (en) 2018-02-23 2018-02-23 METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR1851581A FR3078462B1 (en) 2018-02-23 2018-02-23 METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS
FR1851581 2018-02-23

Publications (2)

Publication Number Publication Date
FR3078462A1 true FR3078462A1 (en) 2019-08-30
FR3078462B1 FR3078462B1 (en) 2020-02-28

Family

ID=62597631

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1851581A Active FR3078462B1 (en) 2018-02-23 2018-02-23 METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS

Country Status (1)

Country Link
FR (1) FR3078462B1 (en)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113472681A (en) * 2020-03-30 2021-10-01 阿里巴巴集团控股有限公司 Flow rate limiting method and device
CN114969670A (en) * 2022-04-19 2022-08-30 北京月新时代科技股份有限公司 Method and system for managing software license resources and computer equipment

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998029805A1 (en) * 1996-12-30 1998-07-09 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US20080112313A1 (en) * 2006-11-15 2008-05-15 Sony Computer Entertainment Inc. Methods And Apparatus For Dynamic Redistribution Of Tokens In A Multi-Processor System

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1998029805A1 (en) * 1996-12-30 1998-07-09 Northern Telecom Limited Shared memory control algorithm for mutual exclusion and rollback
US20080112313A1 (en) * 2006-11-15 2008-05-15 Sony Computer Entertainment Inc. Methods And Apparatus For Dynamic Redistribution Of Tokens In A Multi-Processor System

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113472681A (en) * 2020-03-30 2021-10-01 阿里巴巴集团控股有限公司 Flow rate limiting method and device
CN114969670A (en) * 2022-04-19 2022-08-30 北京月新时代科技股份有限公司 Method and system for managing software license resources and computer equipment

Also Published As

Publication number Publication date
FR3078462B1 (en) 2020-02-28

Similar Documents

Publication Publication Date Title
EP1043658B1 (en) Method for improving the performance of a multiprocessor system including a tasks waiting list and system architecture thereof
EP2901279B1 (en) Device and method for managing access to a set of network resources made available in a cloud system
US11182206B2 (en) Event proxies for functions-as-a-service (FAAS) infrastructures
EP3931694A1 (en) Method for evaluating the devices of a network infrastructure for deploying a virtualised function
FR3078462A1 (en) METHOD AND DEVICE FOR CONTROLLING ACCESS TO A RESOURCE OF A COMPUTER SYSTEM BY SOFTWARE APPLICATIONS
WO2014072628A1 (en) Method, device and computer programme for the placement of tasks in a multi-core system
FR2881308A1 (en) METHOD OF ACCELERATING THE TRANSMISSION OF JOURNALIZATION DATA IN A MULTI-COMPUTER ENVIRONMENT AND SYSTEM USING THE SAME
EP3519958B1 (en) Method for auditing a virtualised resource deployed in a cloud computing network
EP3599552A1 (en) Electronic device and method for installing avionics software applications on a platform comprising a multicore processor, associated computer program and electronic system
WO2021260312A1 (en) Method for scheduling tasks in a processing system, associated scheduling device
FR3037417A1 (en) METHOD AND SYSTEM FOR DETERMINING TARGET SERVER CONFIGURATION FOR DEPLOYING SOFTWARE APPLICATION
EP2726985B1 (en) Device and method for synchronizing tasks executed in parallel on a platform comprising several calculation units
WO2012038000A1 (en) Method for managing tasks in a microprocessor or in a microprocessor assembly
WO2013110816A2 (en) Method of using a shared memory
EP1330711A1 (en) Method for propagating invocation contexts across a distributed object system
FR2865291A1 (en) METHOD OF TRANSFERRING DATA IN A MULTIPROCESSOR SYSTEM, MULTIPROCESSOR SYSTEM AND PROCESSOR EMPLOYING SAID METHOD
EP1162799B1 (en) Control method for a telecommunications network and control unit for implementing the method
FR3060791A1 (en) METHOD AND DEVICE FOR UPDATING
EP4113297A1 (en) Method for managing work in a computer system and associated system
EP3850486A1 (en) Time-division multiplexing method and circuit for concurrent access to a computer resource
FR3120458A3 (en) METHOD AND SYSTEM FOR ASSIGNING A RESOURCE, MEDIA, COMPUTER PROGRAM PRODUCT
WO2021156308A2 (en) Method for managing sampled data shared between a plurality of processing units
FR2792086A1 (en) Memory content transferring for image inputting applications; permits transfer by copying into at least part of unused space number of pages of physical mapping
FR3141301A1 (en) Method for processing a request for execution of a service in a communications network, method for validating the request, intermediate entity, validation entity, corresponding system and computer program
FR3070778A1 (en) SYSTEM AND METHOD FOR AUTHENTICATING COMPUTER RESOURCE MANAGEMENT INSTRUCTIONS FROM A VIRTUALIZATION SERVER

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20190830

PLFP Fee payment

Year of fee payment: 3

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7