Writes naar filesystem inzien

Pagina: 1
Acties:

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:53

chem

Reist de wereld rond

Topicstarter
Wij hebben een externe, niet aanpasbare, applicatie onder linux die naar een honderdtal files van vele gb's per stuk data in hoog tempo aanpast.

Op dit moment maken wij periodiek (dagelijks) dumps van deze files, diffen de boel en verwerken die diff naar een database. We willen dat echter realtime(-ish) gaan doen.

We zijn bezig met een experiment om FUSE te gebruiken zodat elke write() doorgelust wordt naar het oorspronkelijke FS, maar de pad-offset-length-data naar een externe daemon wordt gestuurd via (bv.) sockets. Daarna zou een extern systeem/daemon die data kunnen gebruiken om de database bij te werken.

Als ik rond zoek naar potentiële performance problemen dan lijkt FUSE al snel een probleemgeval te zijn (geweest?).

Wie heeft er ervaring met FUSE en kan me vertellen welke performance hit we kunnen verwachten, en hoe we die het beste kunnen vermijden? Welke andere opties zijn er om near real-time te weten wat er waar in welke file is aangepast?

Klaar voor een nieuwe uitdaging.


  • Spider.007
  • Registratie: December 2000
  • Niet online

Spider.007

* Tetragrammaton

fUSe is per definitie in user-space; dat is wat deze oplossing traag zou maken. Heb je al eens gekeken naar de performance van strace? Als je de applicatie binnen strace zou draaien kun je alle syscalls die write's doen monitoren (inclusief offset+inhoud). Of dit haalbaar is voor dergelijk grote aantallen is een beetje de vraag; maar het is iig een leuke optie om te bekijken.

Daarnaast zou je kunnen kijken naar inotify (https://github.com/rvoicilas/inotify-tools bijv.) maar ik weet niet of deze op hetzelfde niveau kan rapporteren.

Nog een alternatief als je niet bang bent voor een beetje C is de syscall zelf afvangen (zie http://stackoverflow.com/...t-is-the-ld-preload-trick). Hier kun je dan ook meteen de data voor je externe systeem formatteren

[ Voor 18% gewijzigd door Spider.007 op 17-12-2014 15:24 ]

---
Prozium - The great nepenthe. Opiate of our masses. Glue of our great society. Salve and salvation, it has delivered us from pathos, from sorrow, the deepest chasms of melancholy and hate


  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:53

chem

Reist de wereld rond

Topicstarter
Mijn eerste benchmarks tussen native (virtualbox centos) en fusexmp_fh is niet lullig qua verschil - 20-40% langzamer. Daar valt vast nog aan te sleutelen, maar ik zie het niet naar bv 1% afnemen.

inotify is helaas geen optie want we willen weten *wat* er waar is weggeschreven (het is een fixed-length formaat dus we kunnen uitzoeken welk record er is aangepast met een exacte read).

De strace/LD_PRELOAD opties wil ik nog wel gaan bespreken/uitzoeken.

Klaar voor een nieuwe uitdaging.