← Back to team overview

openstack team mailing list archive

Re: Caching strategies in Nova ...


On Mar 22, 2012, at 8:06 AM, Sandy Walsh wrote:

> o/
> Vek and myself are looking into caching strategies in and around Nova.
> There are essentially two approaches: in-process and external (proxy).
> The in-process schemes sit in with the python code while the external
> ones basically proxy the the HTTP requests.

We may need http caches as well in some cases, but we already use memcached in a few places, so I think we need internal caching as well.

> There are some obvious pro's and con's to each approach. The external is
> easier for operations to manage, but in-process allows us greater
> control over the caching (for things like caching db calls and not just
> HTTP calls). But, in-memory also means more code, more memory usage on
> the servers, monolithic services, limited to python based solutions,
> etc. In-process also gives us access to tools like Tach
> https://github.com/ohthree/tach for profiling performance.
> I see Jesse recently landed a branch that touches on the in-process
> approach:
> https://github.com/openstack/nova/commit/1bcf5f5431d3c9620596f5329d7654872235c7ee#nova/common/memorycache.py
> I don't know if people think putting caching code inside nova is a good
> or bad idea. If we do continue down this road, it would be nice to make
> it a little more modular/plug-in-based (YAPI .. yet another plug-in).
> Perhaps a hybrid solution is required?

openstack-common is where jesse was planning on putting memorycache

> We're looking at tools like memcache, beaker, varnish, etc.

I kind of like keeping our caching simple, just talking to something that is replicating the python-memcached api so that we can change out an in memory cache or actual memcached or db cache or etc...

This has a bit of promise: