1

J'ai une application qui écrit pas mal de données sur le disque SSD (EXT4) en continue à partir d'une acquisition temps réel.
Le problème est que périodiquement, les I/O sur le SSD se réveillent et "flush" tout d'un coup, faisant un très gros débit de données ponctuel, bloquant les I/O disques et me faisant perdre les fps.
Normalement le SSD est capable d'encaisser le débit demandé en continue.

Quelqu'un a une idée sur comment faire ?

2

Dans les paramètres du mount, y'a pas une option qui permettrait de désactiver le cache en écriture (ou du moins de le réduire) ?

Sinon, faire un petit prog/script qui lance une commande sync régulièrement (l'idée étant qu'il y aurait des écritures plus souvent mais plus petites - mais c'est à tester, ça peut peut-être faire pire que mieux).
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

3

désactiver le cache me semble un peu violent quand même :/

quelle est la fréquence de ces réveils ?
avatar
<<< Kernel Extremis©®™ >>> et Inventeur de la différence administratif/judiciaire ! (©Yoshi Noir)

<Vertyos> un poil plus mais elle suce bien quand même la mienne ^^
<Sabrina`> tinkiete flan c juste qu'ils sont jaloux que je te trouve aussi appétissant

4

./2: Faire du sync toutes les secondes améliore un peu. Mais ça bloque les I/O pendant le flush, d'où une perte (constante) de fps.
./3: Environ toutes les 10s.

5

Tu peux monter le système de fichiers avec l'option sync, mais c'est déconseillé pour les SSDs:
All I/O to the filesystem should be done synchronously. In the case of media with a limited number of write cycles (e.g. some flash drives), sync
may cause life-cycle shortening.
Sinon, tu peux aussi descendre l'intervalle de commits avec l'option commit=nrsec, mais apparemment pas en dessous d'1s. (La valeur par défaut est 5s.)
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

6

J'ai essayé l'option commit=1, mais sans succès (A noter que j'ai accès aux sources de l'app, et peux donc la modifier).

J'ai trouvé le flag O_DIRECT de open et posix_fadvise et madvice
Quelqu'un a essayé ?
(J'ai aussi trouvé http://insights.oetiker.ch/linux/fadvise.html qui a l'air intéressant).

Je me demande aussi si linux-rt ferrait pas l'affaire ou l'option journal_data_writeback de ext4 ou carrément un autre système de fichier ! sad

7

Tu as regardé si l'appli avait son propre système de buffering ? Le souci vient peut-être de là.
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

8

O_DIRECT permet de bypasser certains caches, mais ca reviens quasiment a monter un disque avec l'option SYNC
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

9

./7: Non. Il n'y a que du open/write/close (très basique).

Le SSD permet théoriquement de faire 500MB/s en écriture et je veux écrire à 100MB/s

10

11

Évidement ca n'a pas marché grin
Quelqu'un aurait un lien vers une description de l'empilement des couches sous Linux pour écrire sur un SSD ?
Quelque chose comme :
Appli -> Libc -> opsix -> kernel vm -> kernel ext4 -> kernel I/O

12

13

Sinon, tu peux aussi abandonner Linux et passer à un vrai OS embarrassed

dehors
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

14

Lequel ?

15

PedroM, quelle question !
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

16

VraiOS ou TrueOS
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

17

PedroM a déjà sa libc en C, plus grand chose à faire pour le porter sur PC !!!

18

Godzil (./16) :
VraiOS ou TrueOS

https://github.com/trueos/trueos
Peace Unity Love et Having Fun!!!

19

Mince, ca existe VraiMENT grin
avatar
Proud to be CAKE©®™


GCC4TI importe qui a problème en Autriche, pour l'UE plus et une encore de correspours nucléaire, ce n'est pas ytre d'instérier. L'état très même contraire, toujours reconstruire un pouvoir une choyer d'aucrée de compris le plus mite de genre, ce n'est pas moins)
Stalin est l'élection de la langie.

20

PpHd > Tu ne peux pas écrire ton propre système de fichier pour une partition dédiée ? Un truc ultra basique, qui se contente d'écrire le flux que tu lui envoies de manière linéaire ?
À une époque j'avais envisagé ça sur un windows pour enregistrer un flux d'images mais le Win DDK que j'avais trouvé était un peu léger niveau documentation grin
Je pense que c'est sans doute plus facile à faire (documenté) sur un système Linux.
Cela dit, on n'a pas toujours que ça à faire grin

21

Oh, même pas besoin : suffit d'ouvrir directement le /dev/sdxy correspondant à la partition comme un fichier, et ça roule ^^
avatar
Zeroblog

« Tout homme porte sur l'épaule gauche un singe et, sur l'épaule droite, un perroquet. » — Jean Cocteau
« Moi je cherche plus de logique non plus. C'est surement pour cela que j'apprécie les Ataris, ils sont aussi logiques que moi ! » — GT Turbo

22

Pen^2 (./20) :
PpHd > Tu ne peux pas écrire ton propre système de fichier pour une partition dédiée ? Un truc ultra basique, qui se contente d'écrire le flux que tu lui envoie de manière linéaire ?

Règle numéro 1 quand tu veux faire un filesystem : Ne le fait pas.

Tu va refaire un fat16 like moins bien.
Godzil (./19) :
Mince, ca existe VraiMENT grin

Ouais c'est la "distro" de base de TrueNas et FreeNAS (un FreeBSD quoi).
Peace Unity Love et Having Fun!!!

23

C'est sûr que le problème ne vient pas de la gestion matérielle du SSD qui nécessiterait des commandes très bas niveau pour être éventuellement désactivée ? Ou d'un bug dans le firmware ?
avatar

24

Zerosquare > OK merci, je me doutais que ce serait plus simple, mais pas à ce point grin

25

Nil (./23) :
C'est sûr que le problème ne vient pas de la gestion matérielle du SSD qui nécessiterait des commandes très bas niveau pour être éventuellement désactivée ? Ou d'un bug dans le firmware ?
Comment le vérifier ?
(Je vais sûrement partir sur un ramfs + un autre process de transfert du ramfs vers le ssd).

26

PpHd (./25) :
Comment le vérifier ?
Voir comment ça réagit sous Windows ?
avatar

27

[supprimé]
avatar
Mes news pour calculatrices TI: Ti-Gen
Mes projets PC pour calculatrices TI: TIGCC, CalcForge (CalcForgeLP, Emu-TIGCC)
Mes chans IRC: #tigcc et #inspired sur irc.freequest.net (UTF-8)

Liberté, Égalité, Fraternité

28

[tsss]

29

Nil (./26) :
Voir comment ça réagit sous Windows ?
confus Tu as des exemples ?

30

Je sais pas comment se comporte l'IOsched de linux mais pour obtenir toute la puissance d'un SSD il faut écrire via toute les commandes queues.
Donc si tu écrit un gros fichier d'un coup ca va pas aller très vite, mais si tu écrit le meme flux en parallele dans plusieurs chunk ca va speeder.
Peace Unity Love et Having Fun!!!