Portál AbcLinuxu, 12. května 2025 15:21

Dotaz: Nedá se nějak urychlit "slocate"?

25.9.2010 23:32 JF | skóre: 23
Nedá se nějak urychlit "slocate"?
Přečteno: 364×
Odpovědět | Admin
Dobrý den,

zjistil jsem, že "updatedb" běží každý den jednu hodinu a vyžírá výkon CPU na 100%
#!/bin/sh
/usr/bin/updatedb -c
Vzhledem k tomu, že se mi na 700GB disku skoro nic nemění, tak mě zajímá, jestli má smysl spouštět denně takovýhle kanón na vrabce.

Nezdá se mi, že by program měl nějaku volbu, aby otevíral jen změněné soubory: http://unixhelp.ed.ac.uk/CGI/man-cgi?updatedb+1 Vypadá to, že to vyrábí celou databázi úplně znovu.

Řešíte spouštění updatedb jinak?

děkuji za náměty.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Řešení 1× (JF (tazatel))
26.9.2010 00:27 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Odpovědět | | Sbalit | Link | Blokovat | Admin

Zdravim, co tak pouzit mlocate ? Vid nasledujuce :

 

pato@debian:~$ aptitude show  mlocate
Package: mlocate                         
State: installed
Automatically installed: no
Version: 0.22.2-1
Priority: standard
Section: utils
Maintainer: Tollef Fog Heen <tfheen@debian.org>
Uncompressed Size: 582k
Depends: libc6 (>= 2.4), adduser
Conflicts: findutils (<= 4.2.31-1), slocate (<= 3.1-1.1)
Description: quickly find files on the filesystem based on their name
mlocate is a new implementation of locate, a tool to find files anywhere in the filesystem based on their name, using a fixed pattern or a regular expression. Unlike other tools like find(1), locate uses a previously created database to
perform the search, allowing queries to execute much faster. This database is updated periodically from cron.

Several implementations of locate exist: the original implementation from GNU's findutils, slocate, and mlocate. The advantages of mlocate are:

* it indexes all the filesystem, but results of a search will only include files that the user running locate has access to. It does this by updating the database as root, but making it unreadable for normal users, who can only access it
via the locate binary. slocate does this as well, but not the original locate.

* instead of re-reading all the contents of all directories each time the database is updated, mlocate keeps timestamp information in its database and can know if the contents of a directory changed without reading them again. This makes
updates much faster and less demanding on the hard drive. This feature is only found in mlocate.


Installing mlocate will change the /usr/bin/locate binary to point to mlocate via the alternatives mechanism. After installation, you may wish to run /etc/cron.daily/mlocate by hand to create the database, otherwise mlocate won't work
until that script is run from cron itself (since mlocate does not use the same database file as standard locate). Also, you may wish to remove the "locate" package in order not to have two different database files updated regularly on
your system.

 

Vsimni si hlavne to tucnym kurzivom zvyraznene. Presne to, co pozadujes od slocate, dokaze len mlocate. :)

24.10.2010 18:00 JF | skóre: 23
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Dik za radu. root@dvouramenna:/etc/cron.daily# time /usr/bin/updatedb
real 7m36.371s
user 0m3.196s
sys 0m10.996s
Mlocate běží jen 7,5 minut.
25.10.2010 10:29 Patrik Uhrak | skóre: 31 | blog: pato
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?

Som rad, ze pomohlo. To bolo po prvykrat spustene? Lebo u mna to je takto:

root@debian:/tmp# time /usr/bin/updatedb

real    0m0.214s
user    0m0.084s
sys     0m0.072s

A to bude prave ta vyhoda mlocate, ze neindexuje kazdy adresar a jeho obsah pri kazdom update. A ja nemam vobec ani ponatia, ze tu nieco taketo bezi, co je skvele samozrejme. ;)

26.10.2010 10:26 JF | skóre: 23
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Ne, tech 6 min bylo napodruhe.

Slocate bezi neco přes 1 hodinu, mlocate bezelo napoprve 30min. Už jsem jednou napsal, že se mi na disku vali spousta souboru - např. 11000 souboru od Graphics Magicku a take nekolik set fotek.

Ještě jsem objevil blocate. To je ovšem shit. Napsáno je to v C# a vyžaduje k běhu mono a nějaký patch do kernelu. Nepotřebuji zasrat paměť nějakým managovaným trvale běžícím kódem.
25.10.2010 10:50 finn | skóre: 43 | blog: finnlandia | 49° 44´/13° 22´
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Od té doby, co jsem pro updatedb nastavil nejnižší možnou prioritu (nice, ionice), o něm nevím. V konfiguráku je navíc možné nastavit proměnnou PRUNEPATHS tak, aby se některé adresáře neprohledávaly (např. /usr/portage u Gentoo) – to taky může pomoci.
Užívej dne – možná je tvůj poslední.
David Watzke avatar 25.10.2010 11:29 David Watzke | skóre: 74 | blog: Blog... | Praha
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Souhlasím, mlocate je podstatně lepší než slocate. Dříve jsem ještě používal rlocate, které spoléhalo na cosi v jádře a bylo to ještě rychlejší, ale pak to snad nějak z jádra odstranili a já sem na rychlo přešel na mlocate.
“Being honest may not get you a lot of friends but it’ll always get you the right ones” ―John Lennon
25.10.2010 10:58 Semo | skóre: 45 | blog: Semo
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Odpovědět | | Sbalit | Link | Blokovat | Admin
Na disku, kde sa toho vela nemeni, by urcite nevadilo to spustat raz tyzdenne. Takze pravdepodobne presunut patricny skript z /etc/cron.daily do /etc/cron.weekly. (a po kazdom update baliku zmazat z cron.daily).
If you hold a Unix shell up to your ear, you can you hear the C.
26.10.2010 10:30 JF | skóre: 23
Rozbalit Rozbalit vše Re: Nedá se nějak urychlit "slocate"?
Pokud to běží ve 4:00 v noci pouze 6min, tak o něm ani nevím a je to v pohodě. Když to chrochtá po disku přes hodinu, tak je to zbytečná zátěž na disk. Ale souhlasím, že stačí reindexovat jednou týdně.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.