Skip site navigation (1)Skip section navigation (2)
Date:      Sat, 29 Apr 2006 01:25:10 +0400
From:      "Michael Bushkov" <bushman@rsu.ru>
To:        <freebsd-current@freebsd.org>
Subject:   [HEADS UP] caching daemon imported into the source tree
Message-ID:  <002401c66b0a$44c230e0$01655050@jersey>

next in thread | raw e-mail | index | archive | help
Hello!
I'm pleased to say that several nsswitch extensions and the caching daemon 
(which I've been developing during the Summer Of Code 2005 and later) are 
now in the source tree. Thanks very much to Brooks Davis and Jacques 
Vidrine, who were my mentors on this project. And very special thanks to 
Hajimu Umemoto, who reviewed the code and actually committed it.

Extensions, which are now included into the libc and usr.sbin are:
- getservXXX() functions now work through nsdispatch(). "files", "nis" and 
"compat" nsswitch sources are implemeted. "sources" and "sources_compat" 
databases can now be specified in nsswitch.conf. The idea of 
"services_compat" database is the same as for "passwd_compat" and 
"group_compat": if we find "+" in /etc/services, we'll substitute it with 
information received from the "services_compat" database's source.
- getprotoXXX() functions now work through nsdispatch(). Only "files" source 
is implemented in libc. "protocols" database is now available in 
nsswitch.conf.
- getrpcXXX() functions now work through nsdispatch(). "files" source is 
implemented, "rpc" database is now available.
- caching daemon (cached) was implemented and caching support was added to 
all places, where nsdispatch() is used.
- you can exclude all the caching-related stuff during the buildworld by 
setting MK_NS_CACHING to "no".

Caching daemon is used to cache results of nsswitch queries (see cached(8) 
and cached.conf(5)). All you need to activate cached is:
1) Add "cached_enable=yes" to rc.conf
2) Specify "cache" source as the first source in all nsswitch databases, 
which queries you want to cache.

By default caching daemon will cache the results of queries, made by 
userland. The cache will be separated by each user's euid/egid to avoid 
cache poisioning. There is also "perform-actual-lookups" option in 
cached.conf, which can make caching daemon not only to cache the results, 
but to perform actual query to the nsswitch sources. I.e. with 
perform-actual-lookups turned on for specified database, caching daemon will 
behave almost like nscd for this database. Currently 
"perform-actual-lookups" option can only be used with "passwd", "groups" and 
"services" databases.

Caching daemon supports caching of getXXXent() functions' results (caching 
of sequences of data) - which can be very helpful - as getpwent() function, 
for example, is called during each login operation.

Caching daemon can greatly increase system performance when using LDAP or 
NIS nsswitch sources (especially the login speed). It also helps with 
caching huge /etc/services file - not every getservXXX() query now searches 
this whole file. Performance benchmarks results comparisons still have not 
been made - but they will surely be done.

I'm currently working further on the caching daemon and nsswitch-related 
stuff. Please, try it out and send me your comments and ideas. I'll be 
really glad to hear them.

With best regards,
Michael Bushkov 




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?002401c66b0a$44c230e0$01655050>