.\" Copyright (c) International Business Machines orp., 2006
.\"
.\" %%%LICENSE_START(GPLv2+_SW_3_PARA)
.\" This program is free software; you can redistribute it and/or
.\" modify it under the terms of the GNU General Public License as
.\" published by the Free Software Foundation; either version 2 of
.\" the License, or (at your option) any later version.
.\"
.\" This program is distributed in the hope that it will be useful,
.\" but WITHOUT ANY WARRANTY; without even the implied warranty of
.\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
.\" the GNU General Public License for more details.
.\"
.\" You should have received a copy of the GNU General Public
.\" License along with this manual; if not, see
.\" .
.\" %%%LICENSE_END
.\"
.\" HISTORY:
.\" 2006-04-27, created by Eduardo M. Fleury
.\" with various additions by Michael Kerrisk
.\"
.\"
.\"*******************************************************************
.\"
.\" This file was generated with po4a. Translate the source file.
.\"
.\"*******************************************************************
.TH IOPRIO_SET 2 "12 février 2013" Linux "Manuel du programmeur Linux"
.SH NOM
ioprio_get, ioprio_set \- Lire et écrire la classe et la priorité
d'ordonnancement des E/S
.SH SYNOPSIS
.nf
\fBint ioprio_get(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB);\fP
\fBint ioprio_set(int \fP\fIwhich\fP\fB, int \fP\fIwho\fP\fB, int \fP\fIioprio\fP\fB);\fP
.fi
\fINote\fP\ : il n'y a pas de fonctions d'enrobage pour ces appels
système. Consultez les NOTES.
.SH DESCRIPTION
Les appels système \fBioprio_get\fP() et \fBioprio_set\fP() respectivement lisent
et écrivent la classe et la priorité d'ordonnancement des entrées et sorties
pour un ou plusieurs processus.
Les arguments \fIwhich\fP et \fIwho\fP identifient le(s) thread(s) sur lesquels
les appels système agissent. L'argument \fIwhich\fP détermine comment \fIwho\fP
est interprété, et prend l'une des valeurs suivantes\ :
.TP
\fBIOPRIO_WHO_PROCESS\fP
\fIwho\fP est l'identifiant d'un processus ou d'un thread. Si \fIwho\fP vaut 0,
alors l'action s'applique au thread appelant.
.TP
\fBIOPRIO_WHO_PGRP\fP
\fIwho\fP est l'identifiant d'un groupe de processus et se réfère à tous les
membres de ce groupe. Si \fIwho\fP vaut 0, alors l'action s'applique au groupe
de processus auquel l'appelant appartient.
.TP
\fBIOPRIO_WHO_USER\fP
.\" FIXME who==0 needs to be documented,
.\" See http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=652443
\fIwho\fP est un UID identifiant tous les processus dont l'UID réel correspond.
.PP
Si \fIwhich\fP vaut \fBIOPRIO_WHO_PGRP\fP ou \fBIOPRIO_WHO_USER\fP à l'appel de
\fBioprio_get\fP(), et si plus d'un processus correspond à \fIwho\fP, la priorité
renvoyée sera la plus grande des priorités des processus correspondants. Une
priorité est dite plus grande qu'une autre si elle appartient à une classe
de priorité supérieure (\fBIOPRIO_CLASS_RT\fP est la classe la plus haute\ ;
\fBIOPRIO_CLASS_IDLE\fP est la plus basse) ou si elle appartient à la même
classe mais a un niveau de priorité plus élevé (donc un numéro de priorité
plus faible).
L'argument \fIioprio\fP donné à \fBioprio_set\fP() est un masque de bits indiquant
la classe et la priorité à donner au(x) processus cible(s). Les macros
suivantes servent à créer et à tester les valeurs \fIioprio\fP\ :
.TP
\fBIOPRIO_PRIO_VALUE(\fP\fIclass\fP\fB, \fP\fIdata\fP\fB)\fP
Étant données une classe d'ordonnancement (\fIclass\fP) et une priorité
(\fIdata\fP), cette macro combine les deux valeurs pour créer une valeur
\fIioprio\fP, qui est renvoyée comme résultat.
.TP
\fBIOPRIO_PRIO_CLASS(\fP\fImask\fP\fB)\fP
À partir de \fImask\fP (une valeur \fIioprio\fP) cette macro renvoie sa classe
d'E/S, c'est\-à\-dire une valeur parmi \fBIOPRIO_CLASS_RT\fP, \fBIOPRIO_CLASS_BE\fP
et \fBIOPRIO_CLASS_IDLE\fP.
.TP
\fBIOPRIO_PRIO_DATA(\fP\fImask\fP\fB)\fP
Étant donné \fImask\fP (une valeur \fIioprio\fP), renvoie la priorité (\fIdata\fP)
correspondante.
.PP
Consultez la section NOTES pour plus d'informations sur les classes et
priorités d'ordonnancement.
Les priorités d'E/S sont gérées pour les lectures et pour les écritures
synchrones (\fBO_DIRECT\fP, \fBO_SYNC\fP). Les priorités d'E/S ne sont pas gérées
pour les écritures asynchrones parce qu'elles sont lancées hors du contexte
du programme touchant la mémoire, ce qui fait que les priorités spécifiques
à chaque programme ne s'appliquent pas.
.SH "VALEUR RENVOYÉE"
Lorsqu'il réussit, \fBioprio_get\fP() renvoie la valeur \fIioprio\fP du processus
dont la priorité d'E/S est la plus grande parmi les processus correspondant
aux critères indiqués par \fIwhich\fP et \fIwho\fP. En cas d'erreur, \-1 est
renvoyé, et \fIerrno\fP contient le code d'erreur.
.PP
S'il réussit, \fBioprio_set\fP() renvoie zéro. En cas d'erreur, il renvoie \-1
et remplit \fIerrno\fP avec la valeur d'erreur.
.SH ERREURS
.TP
\fBEINVAL\fP
\fIwhich\fP ou \fIioprio\fP est invalide. Consultez la section NOTES pour les
classes et priorités d'ordonnancement disponibles pour \fIioprio\fP.
.TP
\fBEPERM\fP
Le processus appelant n'a pas les privilèges nécessaires pour attribuer
cette priorité \fIioprio\fP au(x) processus indiqué(s). Consultez la section
NOTES pour plus d'informations sur les privilèges nécessaires pour
\fBioprio_set\fP().
.TP
\fBESRCH\fP
Aucun processus ne correspond aux critères indiqués par \fIwhich\fP et \fIwho\fP.
.SH VERSIONS
Ces appels système sont disponibles sous Linux depuis le noyau 2.6.13.
.SH CONFORMITÉ
Ces appels système sont spécifiques à Linux.
.SH NOTES
La glibc ne fournit pas de fonction d'enrobage autour de ces appels système\ ; appelez\-les avec \fBsyscall\fP(2).
Plusieurs processus ou threads peuvent partager un contexte
d'entrées\-sorties. Cela est le cas lorsque \fBclone\fP(2) a été appelé avec
l'attribut \fBCLONE_IO\fP. Cependant, par défaut, les threads distincts d'un
processus \fBne\fP partagent \fBpas\fP le même contexte d'entrées\-sorties. Cela
signifie que si vous voulez changer la priorité d'entrées\-sortie de tous les
threads d'un processus, il peut être nécessaire d'appeler \fBioprio_set\fP()
sur chacun de ces threads. L'identifiant du thread nécessaire pour cette
opération est renvoyé par \fBgettid\fP(2) ou \fBclone\fP(2).
Ces appels système n'ont d'effet que lorsqu'ils sont utilisés avec un
ordonnanceur d'E/S qui gère les priorités d'E/S. Sous Linux 2.6.17,
l'ordonnanceur «\ Completely Fair Queuing\ » (CFQ) est le seul ordonnanceur
d'E/S de ce type.
.SS "Choisir un ordonnanceur d'E/S"
Les ordonnanceurs d'E/S sont sélectionnés pour chaque périphérique par le
fichier spécial \fI/sys/block//queue/scheduler\fP.
On peut voir quel ordonnanceur d'E/S est actuellement sélectionné via le
système de fichiers \fI/sys\fP. Par exemple, la commande suivante affiche la
liste des ordonnanceurs chargés dans le noyau\ :
.sp
.RS
.nf
$\fB cat /sys/block/hda/queue/scheduler\fP
noop anticipatory deadline [cfq]
.fi
.RE
.sp
L'ordonnanceur entre crochets est celui qui est utilisé pour le périphérique
(\fIhda\fP dans l'exemple). Pour choisir un autre ordonnanceur, on écrit son
nom dans ce fichier. Par exemple, la commande suivante définit
l'ordonnanceur pour le périphérique \fIhda\fP à \fIcfq\fP\ :
.sp
.RS
.nf
$\fB su\fP
Password:
#\fB echo cfq > /sys/block/hda/queue/scheduler\fP
.fi
.RE
.SS "L'ordonnanceur d'E/S «\ Completely Fair Queuing\ » (CFQ)"
Depuis la version 3 («\ CFQ Time Sliced\ »), CFQ implémente des niveaux de
politesse d'E/S similaires à ceux de l'ordonnancement CPU. Ces niveaux de
politesse sont groupés en trois classes d'ordonnancement, chacune de ces
classes contenant un ou plusieurs niveaux de priorité\ :
.TP
\fBIOPRIO_CLASS_RT\fP (1)
Il s'agit de la classe d'E/S temps réel. Cette classe d'ordonnancement a une
priorité plus grande que toutes les autres classes\ : les processus de cette
classe ont toujours accès au disque en premier. Cette classe d'E/S doit donc
être utilisée avec parcimonie\ : un seul processus avec des E/S temps réel
peut bloquer tout le système. Au sein de la classe temps réel, il y a 8
niveaux de priorité qui déterminent exactement pendant combien de temps ce
processus aura besoin du disque à chaque service. La plus haute priorité
temps réel est 0\ ; la plus basse est 7. Dans le futur, ceci pourra changer
afin d'être plus directement corrélé à la performance, en passant le débit
de données souhaité à la place de la priorité.
.TP
\fBIOPRIO_CLASS_BE\fP (2)
Classe d'ordonnancement «\ best\-effort\ », qui est utilisée par défaut pour
les processus qui n'ont pas indiqué de priorité d'E/S particulière. La
priorité de classe détermine combien de bande passante d'E/S le processus
obtiendra. Les niveaux de priorité best\-effort sont similaires aux valeurs
de politesse CPU (consultez \fBgetpriority\fP(2)). Le niveau de priorité
détermine une priorité par rapport aux autres processus dans la classe
d'ordonnancement best\-effort. Les niveaux de priorité vont de 0 (plus
prioritaire) à 7 (moins prioritaire).
.TP
\fBIOPRIO_CLASS_IDLE\fP (3)
Classe d'ordonnancement «\ idle\ ». Les processus s'exécutant à ce niveau
n'obtiennent du temps d'E/S que lorsque personne d'autre n'a besoin du
disque. La classe idle n'a pas de donnée (priorité) de classe. Il faut faire
attention lorsque l'on met un processus dans cette classe de priorité, car
il peut être bloqué si des processus de plus haute priorité accèdent
constamment au disque.
.PP
Consultez \fIDocumentation/block/ioprio.txt\fP pour plus d'informations sur
l'ordonnanceur d'E/S CFQ et un exemple de programme.
.SS "Permissions nécessaires pour définir les priorités d'E/S"
La permission de modifier la priorité d'un processus est accordée ou refusée
en fonction de deux critères\ :
.TP
\fBPropriétaire du processus\fP
Un processus non privilégié ne peut définir la priorité d'E/S que des
processus dont l'UID réel est égal à l'UID réel ou effectif du processus
appelant. Un processus ayant la capacité \fBCAP_SYS_NICE\fP peut modifier la
priorité de n'importe quel processus.
.TP
\fBPriorité désirée\fP
Pour pouvoir définir une priorité très haute ((\fBIOPRIO_CLASS_RT\fP), il faut
avoir la capacité \fBCAP_SYS_ADMIN\fP. Les noyaux antérieurs à 2.6.24 (compris)
nécessitent également \fBCAP_SYS_ADMIN\fP pour définir une priorité très faible
((\fBIOPRIO_CLASS_IDLE\fP), mais depuis 2.6.25, ce n'est plus le cas.
.PP
Un appel à \fBioprio_set\fP() doit suivre ces deux règles, sans quoi il échoue
avec l'erreur \fBEPERM\fP.
.SH BOGUES
.\" 6 May 07: Bug report raised:
.\" http://sources.redhat.com/bugzilla/show_bug.cgi?id=4464
.\" Ulrich Drepper replied that he wasn't going to add these
.\" to glibc.
Glibc ne fournit pas encore de fichier d'en\(hytête définissant les
prototypes de fonctions et les macros décrits dans cette page. Les
définitions se trouvent dans \fIlinux/ioprio.h\fP.
.SH "VOIR AUSSI"
\fBionice\fP(1), \fBgetpriority\fP(2), \fBopen\fP(2), \fBcapabilities\fP(7)
\fIDocumentation/block/ioprio.txt\fP dans les sources du noyau Linux
.SH COLOPHON
Cette page fait partie de la publication 3.65 du projet \fIman\-pages\fP
Linux. Une description du projet et des instructions pour signaler des
anomalies peuvent être trouvées à l'adresse
\%http://www.kernel.org/doc/man\-pages/.
.SH TRADUCTION
Depuis 2010, cette traduction est maintenue à l'aide de l'outil
po4a par l'équipe de
traduction francophone au sein du projet perkamon
.
.PP
Julien Cristau et l'équipe francophone de traduction de Debian\ (2006-2009).
.PP
Veuillez signaler toute erreur de traduction en écrivant à
ou par un rapport de bogue sur
le paquet \fBmanpages\-fr\fR.
.PP
Vous pouvez toujours avoir accès à la version anglaise de ce document en
utilisant la commande
«\ \fBman\ \-L C\fR \fI