[Zope] ZSERVER, THREADS, PERFORMANCE & FUTURE PERFORMANCE

Christopher Petrilli petrilli@digicool.com
Wed, 10 Nov 1999 21:15:08 -0500


On 11/10/99 10:03 AM, Theodore Patrick at tpatrick@IndigoNetworks.com wrote:

> In the ZOPE Documentation there are several tuning features for ZOPE ODB and
> ZSERVER. I was wondering about current Zope Performance and where it is
> heading. In certain areas we are looking at JAVA Servlets for performance
> reasons, where ZOPE falls short of expectations. Here are some questions
> that we have come up with in regards to Zope Performance in an Enterprise
> Production Environment.
> 
> CURRENT ZOPE PERFORMANCE:
> 
> Q: Is there a performance improvement in raising the number of threads on
> the ZOPE ODB?

Sometimes. :-) How's that for definate?  Basically, as you identify below,
it's mostly beneficial when you're blocked because of the global-interpreter
lock.  DAs are a great place for this.

> Q: Does increasing the # of threads cause any problems? With Threaded DA's?
> With the ODB?

Nope, but after a certain point, your performance will go down.  This is
always true.

> Q: Is ZOPE performance with threads hardware restrictive? (ie. More threads
> on a strong box=good, Default on a Strong box = bottleneck, More on a weak
> box=worse performance)

Well, we've seen some odd issues with multi-threading on Linux kernels that
don't show up on FreeBSD, but we've not really dug into this a lot yet.

> Q: How does ZEO improve ZOPE performance?

By replicating the object database, so it increases read performance,
decreasing write performance slightly in exchange.

> Q: Is there hidden ZEN out there on Performance Tuning Zope for a production
> environment?

Nope, though there should be perhaps.  There's just 10,000 variables, so to
be useful, you'd have to dig into the core concepts more.

> Q: Is ZOPE limited/Dependent on the associated Python Performance? Can ZOPE
> run on separate instances of Python(Multiple JVM's in the JAVA World)?

Of course, though it can be somewhat increased by moving to C, or more
importantly, changing algorithms.  A rule of thumb is that "tweeks" never
get more than 2-3x increase, whereas algorithm changes can cause orders of
magnitude performance benefits.

As for multiple instances, that would be ZEO (there's LOTS of object
replication issues).

> Q: Is there hidden ZEN out there on Performance Tuning Zope for a Heavy
> Production Environment(besides ZEO)? (HPE = up to 150 Requests/sec)

Well, without knowing ANYTHING about your "heavy production environment",
not a little bit.  It's dependent on applications.

> Can you run Zope as a precompiled application(not-interpreted
> python)?

Nope, Python is interpreted by its nature, you can't get a lot of things
working otherwise.  I'd hazard Acquisition would be 100x harder.

> Q: Is there a roadmap in the Zope Development to get to these performance
> levels? What are the options?

Yes, it's driven by customer requirements.  People pay us to deliver
results, and we focus on that.  We don't have the resources to focus right
now on "general" things unless they're driven by customer issues.

Chris
-- 
| Christopher Petrilli        Python Powered        Digital Creations, Inc.
| petrilli@digicool.com                             http://www.digicool.com