OVH Cloud OVH Cloud

'nice' generalise

6 réponses
Avatar
Remi Moyen
Bonjour,

Depuis quelques temps (et un exemple bien particulier), je me demande si
il existe un équivalent de nice pour les accès disque et pour la bande
passante. C'est plus de la curiosité qu'un besoin réel, donc je m'en fiche
si ça n'existe pas.

J'explique, sur un exemple : j'ai un processus qui accède assez
intensivement à un disque (pour écrire dessus, disons un gros 'cp'). D'un
coup, je voudrais, le plus rapidement possible, écrire plein de choses sur
le disque (un autre 'cp'). Est-ce qu'il est possible de "renicer" ce
second processus pour qu'il ait la priorité d'écriture sur le disque ?

Comme ce sont des processus qui ne consomment presque pas de CPU, un coup
de "nice" ne changera bien sûr rien à la vitesse des accès disque (ou
alors j'ai rien compris au fonctionnement de "nice"...).

Autre exemple, j'ai un processus (genre un gros 'scp', disons) qui envoie
plein de données sur ma carte réseau (ou disons sur mon modem, histoire
que la bande passante soit plus faible :-) ), et j'en ai un deuxième que
je voudrais qu'il passe en priorité. Là encore, est-ce possible et comment
faire ?
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."

6 réponses

Avatar
Nicolas George
Remi Moyen wrote in message
:
J'explique, sur un exemple : j'ai un processus qui accède assez
intensivement à un disque (pour écrire dessus, disons un gros 'cp'). D'un
coup, je voudrais, le plus rapidement possible, écrire plein de choses sur
le disque (un autre 'cp'). Est-ce qu'il est possible de "renicer" ce
second processus pour qu'il ait la priorité d'écriture sur le disque ?


Hélas, rien de disponible pour ça. Le scheduling des I/O est un des gros
points faibles de Linux.

Autre exemple, j'ai un processus (genre un gros 'scp', disons) qui envoie
plein de données sur ma carte réseau (ou disons sur mon modem, histoire
que la bande passante soit plus faible :-) ), et j'en ai un deuxième que
je voudrais qu'il passe en priorité. Là encore, est-ce possible et comment
faire ?


Là, c'est possible en caractérisant le flux (port, adresse destination,
taille des paquets). C'est QoS qu'il faut utiliser. Gros problème : la
documentation est assez... hum... Tu peux essayer de regarder le script
wondershaper (disponible sur le Google le plus proche), qui donne quelques
exemples commentés en situation.

Avatar
Patrik Billon
Nicolas George wrote:

Remi Moyen wrote in message
:
J'explique, sur un exemple : j'ai un processus qui accède assez
intensivement à un disque (pour écrire dessus, disons un gros 'cp'). D'un
coup, je voudrais, le plus rapidement possible, écrire plein de choses
sur le disque (un autre 'cp'). Est-ce qu'il est possible de "renicer" ce
second processus pour qu'il ait la priorité d'écriture sur le disque ?


Hélas, rien de disponible pour ça. Le scheduling des I/O est un des gros
points faibles de Linux.

Autre exemple, j'ai un processus (genre un gros 'scp', disons) qui envoie
plein de données sur ma carte réseau (ou disons sur mon modem, histoire
que la bande passante soit plus faible :-) ), et j'en ai un deuxième que
je voudrais qu'il passe en priorité. Là encore, est-ce possible et
comment faire ?


Là, c'est possible en caractérisant le flux (port, adresse destination,
taille des paquets). C'est QoS qu'il faut utiliser. Gros problème : la
documentation est assez... hum... Tu peux essayer de regarder le script
wondershaper (disponible sur le Google le plus proche), qui donne quelques
exemples commentés en situation.


Essayes avec le monitor-système-gnome ... tu peux si tu sais quel est le
processus exact lancé, modifier à la volée les valeurs de nice ... donc,
dans ton cas, baisser la valeur nice (pour augmenter la priorité de ton
'cp' à augmenter) et augmenter pour le deuxième 'cp'...


Avatar
Remi Moyen
On Tue, 26 Oct 2004, Patrik Billon wrote:

J'explique, sur un exemple : j'ai un processus qui accède assez
intensivement à un disque (pour écrire dessus, disons un gros 'cp'). D'un
coup, je voudrais, le plus rapidement possible, écrire plein de choses
sur le disque (un autre 'cp'). Est-ce qu'il est possible de "renicer" ce
second processus pour qu'il ait la priorité d'écriture sur le disque ?
[...]



Essayes avec le monitor-système-gnome ... tu peux si tu sais quel est le
processus exact lancé, modifier à la volée les valeurs de nice ... donc,
dans ton cas, baisser la valeur nice (pour augmenter la priorité de ton
'cp' à augmenter) et augmenter pour le deuxième 'cp'...


Justement, jouer sur nice ne va à priori rien changer à l'affaire. Je
donnerais certes la priorité dans l'utilisation du processeur, mais dans
le cas d'un cp, la consommation CPU n'est pas le point faible, c'est les
accès disque qui contrôlent la rapidité de la tâche.

D'où ma question à propos d'un équivalent de nice pour contrôler les
entrées disque (et la bande passante), et non pas seulement le CPU.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."



Avatar
Remi Moyen
On Tue, 26 Oct 2004, Nicolas George wrote:

J'explique, sur un exemple : j'ai un processus qui accède assez
intensivement à un disque (pour écrire dessus, disons un gros 'cp'). D'un
coup, je voudrais, le plus rapidement possible, écrire plein de choses sur
le disque (un autre 'cp'). Est-ce qu'il est possible de "renicer" ce
second processus pour qu'il ait la priorité d'écriture sur le disque ?


Hélas, rien de disponible pour ça. Le scheduling des I/O est un des gros
points faibles de Linux.


Dommage.

Si j'avais eu une réponse positive, j'aurais étendu ensuite ma question en
demandant si ça pouvait aussi contrôler un disque sur une autre machine
(par exemple le premier cp est lancé en local, le deuxième est lancé sur
une autre machine qui monte le disque en NFS), mais je soupçonne aussi que
ce soit justement ce genre de problèmes qui fasse que ça n'existe pas sous
Linux, non ?

Autre exemple, j'ai un processus (genre un gros 'scp', disons) qui envoie
plein de données sur ma carte réseau (ou disons sur mon modem, histoire
que la bande passante soit plus faible :-) ), et j'en ai un deuxième que
je voudrais qu'il passe en priorité. Là encore, est-ce possible et comment
faire ?


Là, c'est possible en caractérisant le flux (port, adresse destination,
taille des paquets). C'est QoS qu'il faut utiliser. Gros problème : la
documentation est assez... hum... Tu peux essayer de regarder le script
wondershaper (disponible sur le Google le plus proche), qui donne quelques
exemples commentés en situation.


Ah bon, merci. J'irais jeter un coup d'½il quand j'aurais rien à faire.
--
Rémi Moyen
"Malgré les apparences, le temps est très varié à Nancy :
pluie, nuages, neige, brouillard, grêle, ..."


Avatar
Nicolas George
Patrik Billon wrote in message
<417e2d9d$0$29495$:
Essayes avec le monitor-système-gnome ... tu peux si tu sais quel est le
processus exact lancé, modifier à la volée les valeurs de nice ... donc,
dans ton cas, baisser la valeur nice (pour augmenter la priorité de ton
'cp' à augmenter) et augmenter pour le deuxième 'cp'...


Il n'y a pas besoin du « monitor-système-gnome » pour faire ce genre de
choses, et ce sera d'une utilité totalement nulle : comme l'a indiqué le
posteur initial, ce que je confirme, le nice n'a aucune influence sur le
scheduling des I/O.

Avatar
Rakotomandimby Mihamina
On Tue, 26 Oct 2004 11:46:57 +0200, Remi Moyen wrote:

Bonjour,


Bonjour

Autre exemple, j'ai un processus (genre un gros 'scp', disons) qui envoie
plein de données sur ma carte réseau (ou disons sur mon modem, histoire
que la bande passante soit plus faible :-) ), et j'en ai un deuxième que
je voudrais qu'il passe en priorité. Là encore, est-ce possible et comment
faire ?


http://lartc.org/
--
ASPO Infogérance - http://aspo.rktmb.org/activites/infogerance
Unofficial FAQ fcolc - http://faq.fcolc.eu.org/
Linux User Group sur Orléans et alentours.
Tél: + 33 2 38 76 43 65 (France)