busyobj caching

Poul-Henning Kamp phk at phk.freebsd.dk
Thu Dec 8 08:53:05 CET 2011

As you've noticed if you are reading commit mails, Martin and I are
busy moving all the backend fetch related stuff into a the busyobj

Right now we offer to $param selectable options for memory management
of the busyobj, and I would like to get your input & experience with
this detail.

In one more, we cache a busyobj per worker thread, this is for all
practical purposes the same thing we had before this change.

The other option is to use a single slot global cache, which saves
a bunch of memory in worker threads at the cost of malloc-trafic,
locking and lock contention.

For a site with high hitrates, it may be an advantage to switch to
the single slot global cache by setting busyobj_worker_cache=false
as this will reduce the memory footprint.

The question in my mind, is what every everybody else needs.  On
one hand, a single malloc/free per backend fetch is not a really
big deal performance wise, on the other hand, having a slightly
larger cache than a single entry might be beneficial.

Before I pour any more time into this, I'd like to get some real-world
feedback, so if anybody can measure any difference by changing the
busyobj_worker_cache param, I'd like to hear about it.

This is not a high-priority project, but if you have the chance...

Poul-Henning Kamp       | UNIX since Zilog Zeus 3.20
phk at FreeBSD.ORG         | TCP/IP since RFC 956
FreeBSD committer       | BSD since 4.3-tahoe
Never attribute to malice what can adequately be explained by incompetence.

More information about the varnish-dev mailing list