|
Description
|
bustos 2005-11-16
On the first boot after initial install, the manifest-import service
imports the approximately 120 manifests on the system. It's pretty
slow, and it would be nice if we could speed it up.
(Moved from comments.)
bustos 2005-11-16
One hypothesis is that svccfg is spending most of its time creating
services, instances, snapshots, property groups, and populating the
property groups with properties. My observation (if I recall
correctly) that adding the last-import snapshot (which requires
svccfg to import everything twice) doubled the manifest-import time
supports this. Bulk property import, which allows svccfg to
submit all of the property values for a service or instance at once
would fix this. It would require a nontrivial amount of work to
add a new svc.configd request and implement property parsing for it.
Another solution, which should require less code, would be to allow
svccfg to instruct svc.configd to accumulate changes rather than
sync'ing them immmediately, and commit them all at the end. It's
not clear what should be done if another client tries to read or
write an entity which is being modified, though.
Another hypothesis is that manifest-import time is being dominated
by the reinitialization of the svccfg binary and its libraries
and the reparsing of the DTD. This could
be solved by making a single svccfg process import all of the
manifests. This functionality exists today (just pipe all of the
"import <file>" commands into svccfg in script mode), but
maintaining correct error semantics and the progress bar may take
some work. So this would be easy to prototype.
Choosing between the hypotheses should be a simple matter of
prototyping the script-mode solution or collecting timing data
with DTrace.
*** (#1 of 1): 2005-11-16 17:30:08 PST xxxxx@xxxxx.com
As part of a desire to allow manifest-import to run earlier in boot,
we'll be changing manifest-import to make all of its updates to
the non-persistent repository, then do a bulk sync of non-
persistent changes to the persistent repository once / is mounted
r/w. It's expected this will have some effect, as it approximates
the 'bulk property import' solution proposed above.
Additionally, the enhanced profiles project is expected to do
away with the 2-pass import required by last-import, giving
an almost guaranteed performance boost.
|
|
Work Around
|
For large deployments, customers can pre-create a repository for their
system configuration, and put it in place during postinstall. A repository
pre-populated with the services in /var/svc/manifest will avoid the
initial import cost during first boot. (Provided the patch which resolves
6251841 has been applied.)
*** (#1 of 1): [ UNSAVED ] xxxxx@xxxxx.com
|