← Back to team overview

openstack team mailing list archive

Caching strategies in Nova ...

 

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.

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?

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

Has anyone already started down this road already? Any insights to
share? Opinions? (summit talk?)

What are Glance, Swift, Keystone (lite?) doing?

-S


Follow ups