logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).


L'icône rouge permet de télécharger chaque page du wiki visitée au format PDF et la grise au format ODT → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
doc:programmation:shell:pipe [26/09/2017 12:51]
smolski [Introduction]
doc:programmation:shell:pipe [22/08/2018 14:41] (Version actuelle)
e-miel Ajout de la conclusion
Ligne 240: Ligne 240:
 <​note>​La majorité des données a été perdue, alors que le scénario est identique au premier, au type d'​écriture près.</​note>​ <​note>​La majorité des données a été perdue, alors que le scénario est identique au premier, au type d'​écriture près.</​note>​
  
-=== WRITE > READ non-blocant ​===+=== WRITE > READ non-bloquant ​===
  
 <code user>wr 1s10k300k7k 2s5k 4s200k | rd -n 0s2k 3s5000k 5s6k</​code>​ <code user>wr 1s10k300k7k 2s5k 4s200k | rd -n 0s2k 3s5000k 5s6k</​code>​
Ligne 256: Ligne 256:
 <​note>​Comme précédemment,​ on voit que **wr** a été tué durant son sommeil.</​note>​ <​note>​Comme précédemment,​ on voit que **wr** a été tué durant son sommeil.</​note>​
  
-=== WRITE non-blocant ​> READ non-bloquant ===+=== WRITE non-bloquant ​> READ non-bloquant ===
  
 <code user>wr -n 1s10k300k7k 2s5k 4s200k | rd -n 0s2k 3s5000k 5s6k</​code>​ <code user>wr -n 1s10k300k7k 2s5k 4s200k | rd -n 0s2k 3s5000k 5s6k</​code>​
Ligne 272: Ligne 272:
  
 <​note>​Quasiment toutes les données ont été perdues.</​note>​ <​note>​Quasiment toutes les données ont été perdues.</​note>​
 +
 +
 +===== Conclusion =====
 +
 +<note tip>
 +  * **Pipe bloquant** = comportement par défaut = aucune consommation CPU quand le processus dort = se réveille toujours au bon moment :-)
 +  * **Pipe non bloquant** = problèmes de données perdues et consommation CPU :-(
 +</​note>​
 +
 +L'​immense majorité des programmes ne personnalisent pas le comportement de leurs descripteurs,​ donc si vous utilisez des pipes dans vos scripts, ils seront bloquants :
 +
 +  * Les échanges de //petite taille// : texte brut échangé entre **awk**, **sed**, **bash**, **latex**, et en général tout traitement de script par **python** (choisi pour son efficacité à traiter les expressions régulières) se font implicitement au travers du tampon de 64ko, c'est la solution la plus rapide : chacun des processus participants enchaîne ses nombreux petits traitements internes sans s'​arrêter puis se termine indépendamment de l'​autre processus.
 +
 +  * Les échanges de //grande taille// : vidéo brute échangée entre **ffmpeg**, **x264**, et en général toute compression de grande taille par **gzip**, **xz**, se fait implicitement sans tampon, copie directe de processus à processus durant leur sommeil, c'est la solution la plus rapide : le tampon n'est jamais utilisé même partiellement.
 +
 +<​note>​La quantité de données échangées déterminera si le comportement est **tampon** ou **sommeil**,​ mais dans les deux cas, les pipes sont bloquants.</​note>​
 +
doc/programmation/shell/pipe.1506423083.txt.gz · Dernière modification: 26/09/2017 12:51 par smolski

Pied de page des forums

Propulsé par FluxBB