De: "Basile Starynkevitch" <bas...@starynkevitch.net> 
À: "Liste Debian" <debian-user-french@lists.debian.org> 
Envoyé: Jeudi 12 Janvier 2023 20:59:25 
Objet: Re: Détecter un changement dans un répertoire 




On 12/01/2023 20:16, RogerT wrote: 



Pourquoi : pour prendre des décisions de traitement sur évènement « fichier 
créé/modifié/supprimé/etc. ». 

FS : ext4 ou btrfs ou nfs. 




NFS va poser problème. Il est connu et documenté que inotify ne fonctionne pas 
avec NFS, mais avec des systèmes de fichiers locaux et natifs à Linux (dont 
ext4 et btrfs). 

Ok. il suffit de ne pas utiliser NFS. 
Merci. 




BQ_BEGIN


Qté de fichiers : il y a différents cas ; 
1/ surveiller un répertoire où sont déposés des fichiers régulièrement, qui 
vont en être enlevés après traitement ; ici, le nombre de fichiers présents à 
chaque instant sera de l’ordre d’une centaine, voire d’un millier pour 
constituer une file d’attente si le traitement est long et que le flux de dépôt 
de fichiers augmente. 
Là, je crois que inotify et ses dérivés devraient faire l’affaire sans 
atteindre ses limites qui serait de 5E5 fichiers à surveiller. 

BQ_END


A mon avis, c'est faisable programmatiquement (en C++ ou Rust ou C ou Ocaml) 
sur une machine Linux suffisamment puissante (disons 32Go de RAM au moins, et 8 
cœurs). Il faut lire [ https://man7.org/linux/man-pages/man7/inotify.7.html | 
https://man7.org/linux/man-pages/man7/inotify.7.html ] où on peut lire les 
limitations: 



BQ_BEGIN

The inotify API does not report file accesses and modifications
       that may occur because of [ 
https://man7.org/linux/man-pages/man2/mmap.2.html | mmap(2) ] , [ 
https://man7.org/linux/man-pages/man2/msync.2.html | msync(2) ] , and [ 
https://man7.org/linux/man-pages/man2/munmap.2.html | munmap(2) ] . 

BQ_END
Pour 100-1.000 fichiers, aucun souci. 
32 Go/8 coeurs pour 500.000 fichiers ? Tant que ça ? 
L'article que j'ai cité aujoud'hui parle de 1 ko/fichier soit 500 Mo pour 
traiter 5E5 fichiers, ce qui est considérable pour de nombreuses applications. 
Citation : 
Cet article de janvier 2022 apporte des réponses sur la limite et la 
récursivité : 
[ https://www.baeldung.com/linux/inotify-upper-limit-reached | 
https://www.baeldung.com/linux/inotify-upper-limit-reached ] 
« Here, the system allows 524288 (2^19) watches. » 
« Because each watch is a structure, available memory is also a bottleneck for 
using inotify . 
In fact, a watch can take up to 1KB of space. This means a million watches 
could result in 1GB of extra RAM usage. » 


BQ_BEGIN


2/ multiplier les surveillances pour différentes applications ; là je dirais de 
l’ordre de 10E4-10E6 fichiers maximum. Je ne vois pas des milliards de fichiers 
à surveiller. 
Là, inotify devrait encore pouvoir servir si on ne dépasse pas sa fameuse 
limite. 

BQ_END


Mais dix millions de fichiers à surveiller, ça me parait beaucoup. Oui bien 
alors, faire une programmation fine (multi-thread, mulit-processus) qui prendra 
du temps (des mois de travail) et nécessiterait un ordinateur coûteux (serveur 
ou desktop à 10k€, pas un NAS à 500€). 

Erreur de formulation, je voulais dire E4-E6 ou 10^4-10^6 (10.000- 1.000.000). 
Maximum. 
On peut et on doit s'imposer la limite de inotify annoncée de 5E5 (500.000). 





Je ne crois pas à une solution simple, rapide (basée sur inotify ) et 100% 
fiable pour dix millions de fichiers, ou bien alors il faut développer un gros 
logiciel .... Le diable est dans les détails. 


Et 100.000-500.000 ? 
Bonne soirée 




Pour ma part, je cherche des partenaires intéressés par le projet logiciel 
libre RefPerSys en [ http://refpersys.org/ | http://refpersys.org/ ] - 
contactez moi alors par courriel (peut-être même au bureau [ 
https://list.cea.fr/ | CEA LIST ] en [ mailto:basile.starynkevi...@cea.fr | 
basile.starynkevi...@cea.fr ] ) 


Bonne soirée. 


-- 
Basile Starynkevitch [ mailto:bas...@starynkevitch.net | 
<bas...@starynkevitch.net> ] (only mine opinions / les opinions sont miennes 
uniquement)
92340 Bourg-la-Reine, France
web page: starynkevitch.net/Basile/ 

Répondre à