Bonjour à tous,
Je travaille actuellement sur un projet qui écrit beaucoup de données directement sur le disque dur, dans des fichiers d'environ 30 Ko. Or, initialement, les fichiers ne font que 10 Ko, voire moins, et c'est au fur et à mesure du temps qu'ils atteignent la taille de 30 Ko.
Un benchmarking portant sur la vitesse de lecture, écriture et accès nous a fait choisir ReiserFS comme système de fichiers.
Afin d'accélérer la lecture de ces fichiers, je souhaiterais dire au filesystem de pré-réserver 30 Ko pour chaque fichier, au moment de leur création. Ceci afin d'éviter la fragmentation et d'accélérer la lecture des données.
J'ai lu pas mal de doc sur les extents et autres et je pense être sur la bonne voie. Cependant, je ne vois pas comment dire au filesystem de me pré-réserver de l'espace. Tout d'abord, est-ce possible ? Que dois-je appeler comme fonction ?
Le développement est fait en Perl, cependant si je trouve une solution en C, je serai preneur. Il y a des bindings et j'ai le droit de faire du "sale".
Merci d'avance pour vos lumières.
# Idée simpliste
Posté par ✅ ffx . Évalué à 4.
[^] # Re: Idée simpliste
Posté par GeneralZod . Évalué à 2.
[^] # Re: Idée simpliste
Posté par leoboy . Évalué à 1.
Existe-t-il des fonctions du même ordre permettant de s'assurer que les blocs sur le disque sont consécutifs (pas de fragmentation) ?
[^] # Re: Idée simpliste
Posté par GeneralZod . Évalué à 3.
Dans ce cas, pas besoin de ftruncate, mais il vaut mieux prévoir large dés le départ et ensuite redimensionner son fichier.
Le commentaire d'eMerzh me semble pertinent pour ce problème
http://linuxfr.org/comments/1085943.html#1085943
[^] # ext4 et xfs et btrfs
Posté par solsTiCe (site web personnel) . Évalué à 4.
# Comment font..
Posté par Grunt . Évalué à 3.
Par exemple, avec aMule, quand tu télécharges "Internet libre ou Minitel 2.0.avi", de taille 99Mo, il crée un fichier vide "xxx.part" de 99 Mo dès l'instant où il connait la taille, et il remplit ensuite. Ceci afin de réserver l'espace disque.
T'as plus qu'à tipiaker leur recette ;+)
THIS IS JUST A PLACEHOLDER. YOU SHOULD NEVER SEE THIS STRING.
[^] # Re: Comment font..
Posté par leoboy . Évalué à 0.
Moi je veux bien utiliser un FS qui aie des fonctions spécifiques pour pré-réserver de l'espace continu, pas de souci. La question, c'est comment le faire...
Léo.
[^] # Re: Comment font..
Posté par yellowiscool . Évalué à 2.
Envoyé depuis mon lapin.
[^] # Re: Comment font..
Posté par Bruno Muller . Évalué à 1.
$ dd if=/dev/zero of=plop bs=1 count=1 seek=1048575
$ stat -c '%b*%Bo alloués sur disque (vs taille %so)' plop
8*512o alloués sur disque (vs taille 1048576o)
$
ou
$ mkdir plop
$ cd plop/
$ dd if=/dev/zero of=plop bs=1 count=1 seek=1048575
$ du .
8,0K .
$ ls -al .
total 16K
drwxr-xr-x 2 bruno bruno 4,0K nov. 28 10:35 .
drwxr-xr-x 111 bruno bruno 4,0K nov. 28 10:35 ..
-rw-r--r-- 1 bruno bruno 1M nov. 28 10:35 plop
# la ram
Posté par lem__mel . Évalué à 3.
[^] # Re: la ram
Posté par leoboy . Évalué à 1.
Condamné à mettre tout en disque ! Evidemment on fait ça sur du Raid1 pour lire plus vite, etc....
Léo.
[^] # Re: la ram
Posté par NeoX . Évalué à 1.
je ne sais pas ce que c'est cette appli, mais ca semble coder avec les pieds (enfin je dis ca, je suis pas codeur... et on est encore vendredi)
[^] # Re: la ram
Posté par lem__mel . Évalué à 7.
Vous seriez pas en train de faire le boulot d'une base de données ? Si c'est le cas, cela me paraît être une mauvaise idée car même si de façon générale un modèle géré à la mano est plus rapide, dans le cas où on atteint des volumes pareils, il vaut mieux avoir des gens expérimentés au clavier. Alors qu'avec une BD bien réglé (choix judicieux des clefs, de leur taille, etc), il est difficilement de faire mieux, du moins pour le commun des mortels.
Par curiosité, tu pourrais nous dire qui en a besoin et pour quel usage ? Aller, je fais le pari que c'est un travail universitaire !
[^] # Re: la ram
Posté par leoboy . Évalué à 3.
Déjà faudrait-t-il préciser de quel "type" de base de données a-t-on besoin. Objet, relationnel....
-On a pas besoin du côté "relationnel" des bases de données que tout le monde connaît. Notre base est plutôt "arborescente".
-On pourrait se baser sur une bdd arborescente type LDAP, mais semble-t-il qu'il supporte très mal les millions d'entrées... et LDAP est optimisé pour la lecture, nous faisons environ 5 fois plus d'écritures que de lectures.
-MySQL commence à pêcher quand on arrive à 80-100M d'entrées dans une table, même avec des indexes bien 'pensés', surtout lorsque l'on ajoute/supprime fréquemment des entrées. Les DELETE ou INSERT prennent beaucoup, beaucoup de temps. Même avec une grosse machine. Et on n'a pas de sous pour acheter du Oracle.
-On développe super bien, on est des kadors. Si, si, je te jure !
-En fait... c'en est une, de base de données, mais sous forme de fichiers. Dans la 'définition', ça colle. Ca nous suffit, en fait. Nous sommes partisans du principe KISS (Keep It Simple & Stupid).
Et ... non, ce n'est pas universitaire. Raté.
[^] # bsd DB
Posté par solsTiCe (site web personnel) . Évalué à 1.
et pourquoi pas compressé les données dans la base avec un algo rapide comme lzo1.
c'est ce que j'ai essayé pour trouver une autre bd pour pacman.
pacman utilise pour l'instant des fichiers aussi. KISS ! ça marche bien et c'est rapide. sauf que c'est lent la 1ère fois qu'il faut parser tous les fichiers. mais bon, on s'y fait. c'est toujours plus rapide que d'autres gestionnaire de paquet ;-)
[^] # Re: bsd DB
Posté par Sytoka Modon (site web personnel) . Évalué à 3.
[^] # Re: bsd DB
Posté par leoboy . Évalué à 2.
On pense à compresser les données "à la volée" dans le futur pour gagner un peu d'espace, je regarderai lzo1 que je ne connaissais pas (merci!).
[^] # Re: bsd DB
Posté par solsTiCe (site web personnel) . Évalué à 1.
et d'autres compressions sur le site
sinon y'a zlib tout simplement
# pas grand chose...
Posté par eMerzh (site web personnel) . Évalué à 5.
[^] # Re: pas grand chose...
Posté par leoboy . Évalué à 3.
Mais en fait, Ext3 et ReiserFS ne permettent respectivement que des tailles de 4096 et 8192 o au maximum (damned!). Et ce sont les deux seuls FS dont on a la maîtrise.
Merci en tout cas pour ton commentaire.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.