GNU/Linux >> Znalost Linux >  >> Linux

Efektivita spousty hodinek Inotify nebo volání statistik?

Vyvíjím software, který bude využívat inotify ke sledování změn na velkém množství souborů (desítky až stovky tisíc souborů). Přišel jsem s těmito nápady:

  • jedno zhlédnutí na soubor
  • jedno sledování na nadřazený adresář
  • vyhněte se inotify a pravidelně kontrolujte fs kvůli změnám (není preferováno)

Budu mít databázi všech souborů, které sleduji, a některé základní statistické informace (jako mtime a velikost), ale musel bych v tomto adresáři uvést každý soubor, dokud nenajdu ten, který se změnil.

Co by bylo rychlejší, tuny (100 000+) hodinek inotify nebo tuny volání statistik?

Myslím si, že snížení počtu statistických volání by bylo lepší, ale o inotify toho nevím dost.

Poznámka:

Toto bude běžet na pracovní stanici, ne na serveru. Jeho hlavním účelem je synchronizovat změny (potenciálně v celém souborovém systému) mezi klientem a vzdáleným serverem.

Přijatá odpověď:

Když read() inotify fd, name pole vrácené struktury vám říká, který soubor byl změněn vzhledem ke sledovanému adresáři, takže byste po události neměli uvádět každý soubor v adresáři.

Viz http://linux.die.net/man/7/inotify

Konkrétně:

struct inotify_event {
    int      wd;       /* Watch descriptor */
    uint32_t mask;     /* Mask of events */
    uint32_t cookie;   /* Unique cookie associating related
                          events (for rename(2)) */
    uint32_t len;      /* Size of 'name' field */
    char     name[];   /* Optional null-terminated name */
};

Pole názvu je přítomno pouze tehdy, když je vrácena událost pro soubor
ve sledovaném adresáři; identifikuje cestu k souboru relativní
ke sledovanému adresáři. Tato cesta je zakončena nulou a může
obsahovat další nulové bajty k zarovnání následných čtení k vhodné
hranici adresy.


Linux
  1. Rozdíl ve výpočtu velikosti adresáře?

  2. Linux – účel adresáře /net?

  3. Cheat sheet pro oprávnění k souborům/adresáři pro Linux

  1. Získejte nejnovější soubor v adresáři v systému Linux

  2. Vyloučení adresáře při vytváření souboru .tar.gz

  3. mkdir -p selže, když adresář existuje

  1. Jediný souborový svazek připojený jako adresář v Dockeru

  2. Bash:Žádný takový soubor nebo adresář?

  3. sys/types.h:Žádný takový soubor nebo adresář