Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

buffer or not buffer

99 réponses
Avatar
Herve Autret
Bonjour,

Nous avons deux disques USB "My Passport" d'un To (modèles WDBACX0010BBL
et WDBACX0010BRD). J'ai une question sur le fonctionnement des buffers
disques.

Avec l'un ou l'autre disque, monté en ntfs-g3, je lance plusieurs fois la
commande suivante :
# time tar -C $repertoire_disque -c ./ > /dev/null

La 1ère fois, elle met environ 1'10" à se terminer

Un coup d'oeil sur le site de WDt me dit que le taux de transfert peut
atteindre 480Mo/s en USB-2, ce qui est le cas de mon système.
Déjà là, on dépasse la vitesse théorique de 50% !

Mais la 2ème fois, la commande prend 12", à la 3ème 5,2", puis 4.7", etc.

La comande du se comporte de la même manière ; 1'8" puis 3.7" en
enchaînant les appels avec un disque; mais 53" puis 13" avec l'autre.

Je n'ai que 2Go de RAM, il est impossible que les données des disques
soient bufferisées là. Quelqu'un pourrait me dire si cette évolution des
temps de transfert est normale et à quoi elle est dûe dans ce cas ?

à +
--
Hervé

10 réponses

Avatar
NiKo
Le 23/11/2011 20:49, Nicolas George a écrit :
NiKo , dans le message <4ecd4c08$0$24216$, a
écrit :
Pas besoin, il suffit de lire le code, et voila ce qu'elle fait :
177 fd = open (fname, oflag | O_NOFOLLOW, mode);
Ah ben zut, en fait shm_open ferait en fait un vulgaire "open" ...



Je n'ai pas prétendu le contraire. Tu noteras cependant qu'elle ne cherche
absolument pas à se prémunir contre l'existence de fichiers de même nom (je
te laisse le soin de chercher dans la doc d'open comment elle aurait dû
faire).




Même pas besoin !

Soit open le fait, et dans ce cas ce serait redondant de le faire aussi
dans shm_open. Soit open ne le fait pas et c'est au développeur de
l'application de le faire. Bref, rien qui abonde dans ton sens en fait.

1) Tu ne sais rien de mon niveau.



Ça fait quelques années que je lis des messages de toi ici et sur fcold.




Et vice-versa.

2) Excepté que la GLIBC utilise de préférence le répertoire /dev/shm
pour ses objets mémoire partagés, je ne vois pas dans le code le moindre
avertissement signalant qu'il ne faut absolument pas qu'un utilisateur
place des fichiers dans /dev/shm !



Parce que tu t'attends à trouver des avertissements destinés aux
utilisateurs dans le code source d'une bibliothèque ?




Non, je m'attendais simplement à ce que tu me pointes une DOC qui
stipulerais qu'il est idiot qu'un utilisateur crée des fichiers dans
/dev/shm !

3) Sont vraiment nuls les développeurs du noyau et les développeurs
GNU/Linux en général ! Laisser un accès en écriture sur un répertoire à
un utilisateur standard du système alors que Monsieur Nicolas George
SAIT qu'il ne faut absolument rien mettre dans ce répertoire ...



Je n'ai pas dit ça, apprends à lire.




Si tu n'arrives pas a comprendre ce que tu écris, je ne peux vraiment
rien pour toi.

4) Et comment fait un utilisateur pour se créer une 'instance' de tmpfs
? Comment ? J'entends au fond de la salle qu'il faut qu'il soit root ?



Il ne fait pas. L'utilisateur qui veut créer des fichiers et répertoires
temporaires les met dans /tmp, c'est fait pour ça. S'il est attentif, il
peut éventuellement remarquer que /tmp est une instance de tmpfs et se
réjouir d'avoir un administrateur compétent, mais ça s'arrête là.




Dans ce cas, pourquoi parles tu de 'créer ta propre instance dans un
répertoire différent', si je ne peux pas créer ma propre instance ?

Et comme on peut voir dans le code, si tmpfs n'est pas monté sur
/dev/shm, la glibc utilise le premier point de montage de tmpfs qu'elle
trouve. Si ce premier point de montage est /tmp, tu préconises alors de
faire quoi dans le cas d'un utilisateur qui voudrait alors créer des
fichiers dans /tmp ? Du coups, ton affirmation deviens bidon, puisque
comme on ne sait pas affirmer avec certitude quel tmpfs utilisera la
glibc dans le cas ou ce n'est pas /dev/shm, il serait alors
_complétement idiot_ de créer un fichier dans /tmp ou dans /var/tmp ?

5) Il serait temps que tu comprennes la philosophie Unix ...



Là, tu es franchement ridicule.



Parce que tu te crois supérieur avec tes attaques ad-hominem ?

--
Le mode sans échec de Windows est la preuve que son
mode normal est un échec !

SONY : It only does everything ... until we remove !
PS3 Firmware update 3.21 :
The first software update which downgrade !
Avatar
Nicolas George
NiKo , dans le message <4ecd5e61$0$24228$, a
écrit :
Soit open le fait, et dans ce cas ce serait redondant de le faire aussi
dans shm_open. Soit open ne le fait pas et c'est au développeur de
l'application de le faire. Bref, rien qui abonde dans ton sens en fait.



Du pur n'importe quoi, il n'y a rien à sauver dans ce paragraphe.

Non, je m'attendais simplement à ce que tu me pointes une DOC qui
stipulerais qu'il est idiot qu'un utilisateur crée des fichiers dans
/dev/shm !



Tu n'en trouveras pas plus que de doc qui t'explique qu'il est idiot de
modifier ~/.mozilla/firefox/*/places.sqlite avec un éditeur de texte ou de
créer n'importe quel fichier dans ~/.fontconfig ou /var/lock : parce que
justement, c'est tellement idiot qu'on ne s'imagine pas que quelqu'un
pourrait en avoir l'idée.

Dans ce cas, pourquoi parles tu de 'créer ta propre instance dans un
répertoire différent', si je ne peux pas créer ma propre instance ?



Tu peux le faire en demandant à l'administrateur s'il ne l'a pas déjà fait.
On tourne en rond, encore une fois.

Et comme on peut voir dans le code, si tmpfs n'est pas monté sur
/dev/shm, la glibc utilise le premier point de montage de tmpfs qu'elle
trouve. Si ce premier point de montage est /tmp, tu préconises alors de
faire quoi dans le cas d'un utilisateur qui voudrait alors créer des
fichiers dans /tmp ?



Le fonctionnement normal du système est d'avoir /dev/shm pour la libc et
/tmp pour les utilisateurs. Si /dev/shm n'existe pas ou n'est pas monté, on
est déjà dans une situation anormale. Le comportement d'un logiciel ou une
bibliothèque dans une situation anormale ne peut pas servir à justifier
quelque chose en situation normale.
Avatar
NiKo
Le 23/11/2011 22:13, Nicolas George a écrit :
NiKo , dans le message <4ecd5e61$0$24228$, a
écrit :
Soit open le fait, et dans ce cas ce serait redondant de le faire aussi
dans shm_open. Soit open ne le fait pas et c'est au développeur de
l'application de le faire. Bref, rien qui abonde dans ton sens en fait.



Du pur n'importe quoi, il n'y a rien à sauver dans ce paragraphe.




Simple exclamation sans aucune explication ! Comme c'est facile !

Non, je m'attendais simplement à ce que tu me pointes une DOC qui
stipulerais qu'il est idiot qu'un utilisateur crée des fichiers dans
/dev/shm !



Tu n'en trouveras pas plus que de doc qui t'explique qu'il est idiot de
modifier ~/.mozilla/firefox/*/places.sqlite avec un éditeur de texte ou de
créer n'importe quel fichier dans ~/.fontconfig ou /var/lock : parce que
justement, c'est tellement idiot qu'on ne s'imagine pas que quelqu'un
pourrait en avoir l'idée.




Quelle bande de bras cassés tous ces gars qui se servent de /dev/shm !

<https://wiki.archlinux.org/index.php/dev/shm>
<http://projects.gentoo-fr.org/projects/gentoo-fr/wiki/Tmpfs>

[... On en trouve à la pelle des choses qui utilisent /dev/shm ...]

Tu devrais les contacter en urgence ! C'est dingue le nombre d'idiots
qui utilisent les fonctionnalités que l'OS mets à leur disposition !

Dans ce cas, pourquoi parles tu de 'créer ta propre instance dans un
répertoire différent', si je ne peux pas créer ma propre instance ?



Tu peux le faire en demandant à l'administrateur s'il ne l'a pas déjà fait.
On tourne en rond, encore une fois.




Non, on parlait d'utiliser tmpfs en tant qu'utilisateur. Tu nous a alors
affirmé qu'il ne fallait surtout pas créer des fichier dans /dev/shm,
mais qu'il fallait 'créer sa propre instance' de tmpfs. Et là, tu nous
dit qu'on ne peut créer sa propre instance, qu'il faut demander à
l'administrateur.

Et comme on peut voir dans le code, si tmpfs n'est pas monté sur
/dev/shm, la glibc utilise le premier point de montage de tmpfs qu'elle
trouve. Si ce premier point de montage est /tmp, tu préconises alors de
faire quoi dans le cas d'un utilisateur qui voudrait alors créer des
fichiers dans /tmp ?



Le fonctionnement normal du système est d'avoir /dev/shm pour la libc et
/tmp pour les utilisateurs. Si /dev/shm n'existe pas ou n'est pas monté, on
est déjà dans une situation anormale. Le comportement d'un logiciel ou une
bibliothèque dans une situation anormale ne peut pas servir à justifier
quelque chose en situation normale.



Le fonctionnement normal d'une application qui détecte un truc anormal
n'est pas de faire une bidouille pour aller bosser dans un autre
répertoire. Donc, le fait que /dev/shm puisse ne pas exister et/où ne
pas être monté, et que ce cas de figure est parfaitement géré dans
shm_open, n'est en aucun cas (excepté pour toi) anormal.

--
Le mode sans échec de Windows est la preuve que son
mode normal est un échec !

SONY : It only does everything ... until we remove !
PS3 Firmware update 3.21 :
The first software update which downgrade !
Avatar
Nicolas George
NiKo , dans le message <4ecd6966$0$27879$, a
écrit :
Quelle bande de bras cassés tous ces gars qui se servent de /dev/shm !

<https://wiki.archlinux.org/index.php/dev/shm>



« There is currently no text in this page. »

Super, ta référence !

<http://projects.gentoo-fr.org/projects/gentoo-fr/wiki/Tmpfs>



Là, clairement bras cassé. Allez, les plus flagrantes.

* « Je ne saurais trop vous conseillez », « tmpfs est trés simple à utliser
et peux »... no comment.

* Monter /tmp en noexec : merci pour les ./configure qui y font des tests de
compilation et d'exécution.

[... On en trouve à la pelle des choses qui utilisent /dev/shm ...]



On trouve énormément d'idioties sur le web, en effet.

Tu devrais les contacter en urgence !



Je l'ai déjà dit, je ne vais pas prendre mon temps à chaque fois que
quelqu'un a tort sur Internet. Je perds déjà trop mon temps avec toi.

Non



Si, on tourne en rond, j'ai déjà répondu deux fois à ce paragraphe.

Le fonctionnement normal d'une application qui détecte un truc anormal
n'est pas de faire une bidouille pour aller bosser dans un autre
répertoire.



Il n'y a pas de « fonctionnement normal d'une application qui détecte un
truc anormal » : par définition, si elle détecte un truc anormal, ce n'est
pas son fonctionnement normal, gros malin.

D'autre part, il y a énormément de gens qui, quand ils détectent une
situation anormale, préfèrent la ramener de force à la normale pour pouvoir
continuer à tourner encore un peu plutôt que de signaler immédiatement le
problème. On appelle ça de la programmation défensive.

Je trouve personnellement que c'est _en général_ une mauvaise idée, mais
c'est de fait une mauvaise idée très répandue, et c'est manifestement le
choix qui a été fait pour shm_open dans la glibc.
Avatar
NiKo
Le 23/11/2011 23:23, Nicolas George a écrit :
NiKo , dans le message <4ecd6966$0$27879$, a
écrit :
Quelle bande de bras cassés tous ces gars qui se servent de /dev/shm !

<https://wiki.archlinux.org/index.php/dev/shm>



« There is currently no text in this page. »

Super, ta référence !



<https://wiki.archlinux.org/index.php//dev/shm>


<http://projects.gentoo-fr.org/projects/gentoo-fr/wiki/Tmpfs>



Là, clairement bras cassé. Allez, les plus flagrantes.

* « Je ne saurais trop vous conseillez », « tmpfs est trés simple à utliser
et peux »... no comment.

* Monter /tmp en noexec : merci pour les ./configure qui y font des tests de
compilation et d'exécution.




Quel est le rapport avec /dev/shm ? Parce qu'il y a des fautes
d'orthographe ? Surement que les gens qui sont derrière Arch ou Gentoo
sont des bras cassés à coté de Monsieur George !

Quant au noexec,nodev,nosuid sur /tmp, c'est la base de l’administration
des systèmes unix que de ne pas permettre l'exécution dans les
répertoires qui ne sont pas censés contenir des exécutables. Et surtout
dans des répertoires accessibles en écriture à tout le monde tel /tmp.
Mais peut être auraient-ils du, il y a 40 ans, consulter Monsieur George
qui leur aurait expliqué que c'était une aberration !

[... On en trouve à la pelle des choses qui utilisent /dev/shm ...]



On trouve énormément d'idioties sur le web, en effet.




Malheureusement, on ne trouve d'autre idiotie qui dirait de ne pas
utiliser /dev/shm que celle de Monsieur George ... C'est étrangement
étrange non ?

Tu devrais les contacter en urgence !



Je l'ai déjà dit, je ne vais pas prendre mon temps à chaque fois que
quelqu'un a tort sur Internet. Je perds déjà trop mon temps avec toi.




Quelqu'un qui ne marche pas dans ton sens n'a pas forcément tort tu sais !

Non



Si, on tourne en rond, j'ai déjà répondu deux fois à ce paragraphe.




Non, tu n'as pas répondu. Tu m'as seulement dit ce que toi tu crois et
prétends savoir, mais tu es le seul ! Eh oui, pas une seule référence
sur une quelconque défiance à placer des fichiers dans /dev/shm trouvée
par google !

Le fonctionnement normal d'une application qui détecte un truc anormal
n'est pas de faire une bidouille pour aller bosser dans un autre
répertoire.



Il n'y a pas de « fonctionnement normal d'une application qui détecte un
truc anormal » : par définition, si elle détecte un truc anormal, ce n'est
pas son fonctionnement normal, gros malin.




Donc, selon toi, une application qui à besoin d'écrire dans /dev/shm et
qui stoppe sur un message d'erreur <</dev/shm n'existe pas>> ne
fonctionne pas normalement !

Et tu te fais juge de mes compétences ...

D'autre part, il y a énormément de gens qui, quand ils détectent une
situation anormale, préfèrent la ramener de force à la normale pour pouvoir
continuer à tourner encore un peu plutôt que de signaler immédiatement le
problème. On appelle ça de la programmation défensive.

Je trouve personnellement que c'est _en général_ une mauvaise idée, mais
c'est de fait une mauvaise idée très répandue, et c'est manifestement le
choix qui a été fait pour shm_open dans la glibc.



Sauf que tu zappes un truc : /dev/shm n'est qu'une option de compilation
du noyau. Ce qui veut dire que rien ne te garantis que le système sur
lequel tu tenteras d'exécuter ton programme tournera sur un noyau gérant
/dev/shm. On comprend alors que la 'mauvaise idée' des développeurs de
shm_open ne soit en fait que le fonctionnement normal, prévu et géré,
puisque rien ne leur garanti que le noyau sur lequel le programme va
tourner gère /dev/shm.

--
Le mode sans échec de Windows est la preuve que son
mode normal est un échec !

SONY : It only does everything ... until we remove !
PS3 Firmware update 3.21 :
The first software update which downgrade !
Avatar
Nicolas George
NiKo , dans le message <4ecd7b3b$0$18838$, a
écrit :
<snip>

Écoute, mon gros, au début de cette conversation, tu ne savais pas à quoi
est censé servir /dev/shm, ni que tmpfs pouvait être monté en plusieurs
instances indépendantes. C'est, en fait, moi qui te l'ai appris. La moindre
des choses dans ce genre de situation, c'est de faire preuve d'un peu
d'humilité.

J'ai trop perdu de temps sur ce thread, tu es bouché, ça ne sert à rien de
continuer à te répondre.

En revanche, si d'autres intervenants souhaitent des précisions techniques
que je suis à même d'apporter, ce sera avec plaisir.
Avatar
NiKo
Le 24/11/2011 00:12, Nicolas George a écrit :
NiKo , dans le message <4ecd7b3b$0$18838$, a
écrit :
<snip>

Écoute, mon gros, au début de cette conversation, tu ne savais pas à quoi
est censé servir /dev/shm, ni que tmpfs pouvait être monté en plusieurs
instances indépendantes. C'est, en fait, moi qui te l'ai appris. La moindre
des choses dans ce genre de situation, c'est de faire preuve d'un peu
d'humilité.




Tiens, le monsieur est vexé ?

J'ai trop perdu de temps sur ce thread, tu es bouché, ça ne sert à rien de
continuer à te répondre.




Méoui !

En revanche, si d'autres intervenants souhaitent des précisions techniques
que je suis à même d'apporter, ce sera avec plaisir.



Tu éviteras de leur apprendre ce que tu crois savoir hein ! Parce qu'en
tant que professeur, tu te poses là !

Allez, salut mon con !

--
Le mode sans échec de Windows est la preuve que son
mode normal est un échec !

SONY : It only does everything ... until we remove !
PS3 Firmware update 3.21 :
The first software update which downgrade !
Avatar
YBM
Le 24.11.2011 00:12, Nicolas George a écrit :
NiKo , dans le message<4ecd7b3b$0$18838$, a
écrit :
<snip>

Écoute, mon gros, au début de cette conversation, tu ne savais pas à quoi
est censé servir /dev/shm, ni que tmpfs pouvait être monté en plusieurs
instances indépendantes. C'est, en fait, moi qui te l'ai appris. La moindre
des choses dans ce genre de situation, c'est de faire preuve d'un peu
d'humilité.

J'ai trop perdu de temps sur ce thread, tu es bouché, ça ne sert à rien de
continuer à te répondre.



Bah, c'est pas nouveau...

En revanche, si d'autres intervenants souhaitent des précisions techniques
que je suis à même d'apporter, ce sera avec plaisir.



Oui, que "noexec" est en réalité sans intérêt au niveau sécurité. NiKo
la grande gueule saura-t-il dire pourquoi ?
Avatar
NiKo
Le 24/11/2011 04:37, YBM a écrit :

Oui, que "noexec" est en réalité sans intérêt au niveau sécurité. NiKo
la grande gueule saura-t-il dire pourquoi ?



Parce que rien ne t'empêche de lancer ton script en passant par exemple
: /bin/sh /tmp/le_script.

Parce que, tu pourra _peut être_ lancer un exécutable à l'aide de
/lib/ld.so /tmp/ton_executable. _Peut être_ car tu n'es pas certain que
ld.so soit une version qui ne vérifie pas si l'exécutable que tu lui
passe se trouve sur un système de fichiers en noexec.

Maintenant, si pour toi faire de la sécurité reviens à mettre en place
uniquement ce qui est infaillible, je pense que tu ne mets simplement
rien en place sur les machines que tu gères.

--
Le mode sans échec de Windows est la preuve que son
mode normal est un échec !

SONY : It only does everything ... until we remove !
PS3 Firmware update 3.21 :
The first software update which downgrade !
Avatar
Nicolas George
YBM , dans le message <4ecdbc00$0$613$, a écrit :
Oui, que "noexec" est en réalité sans intérêt au niveau sécurité.



Je suis content que quelqu'un soulève la question, parce que c'est un point
sans rapport avec la discussion présente qu'il m'embêtait de laisser en
suspens, pour la pollution dans les esprits qu'il propage.

Cette manie de coller du noexec,nodev,nosuid partout est typique des gens
qui appliquent la sécurité comme un dogme, sans comprendre les mécanismes en
jeu. N'importe qui qui a un tant soit peu étudié la question sait que ça
conduit invariablement, comme le « plan vigipirate », à des mesures qui
incommodent les usagers légitimes mais ne freinent pas du tout les
attaquants.

Dans le cas de noexec, il existe de nombreuses méthodes : invoquer le
chargeur dynamique directement, utiliser un langage interprété (NiKo en a
parlé), on peut aussi produire une bibliothèque partagée et forcer un
binaire normal du système à la charger.

Il peut y avoir un sens à mettre les partitions en noexec sur un système
ultra-sécurisé, où on a pris soin de n'installer que le strict minimum, de
mettre tous les binaires en statique, de n'autoriser l'exécution absolument
nulle part, etc. Mais sur une machine d'usage régulier, mettre /tmp en
noexec, c'est comme donner deux tours de verrou à une porte posée sans
chambranle en bordure d'un champ.

Et c'est même pire, parce que beaucoup de programmes légitimes s'attendent à
ce que /tmp permette d'exécuter des programmes : ça ne freine pas les
pirates, ça gène les utilisateurs.

Dans la même série, il y avait nosuid : si on est en position de poser un
binaire SUID, c'est qu'on a déjà les droits du compte incriminé, le piratage
a déjà eu lieu. Poser un binaire SUID, ça permet juste de garder ces droits
au chaud pour plus tard, et ce n'est qu'une manière parmi beaucoup d'autres
de le faire.

Et le nodev, encore pire : si on peut créer des devices, c'est qu'on est
root, et si on est root, ce ne sont pas les options sur un filesystem qui
vont nous gêner.

Pour autant, le nodev,nosuid ont un usage légitime pour la sécurité, juste
pas celui que NiKo et ses semblables croient : ces options sont prévues pour
les cas où on importe un filesystem entier auquel on ne peut pas faire
confiance, en général par réseau ou sur un support amovible. Il est très
facile de graver un CD avec un équivalent de /dev/mem en écriture publique
ou un shell SUID root, donc si le système permet à n'importe quel
utilisateur de monter un CD, il doit le faire avec ces options nodev,nosuid.

D'ailleurs, le man de mount indique que les différentes options qui
permettent à un simple utilisateur de monter un filesystem (user, group,
owner) impliquent par défaut ces deux options (mais pas noexec). Eux,
heureusement, comprennent les problèmes en jeu.