We think the Python 2.7 runtime for App Engine is a great step forward for our developers. First, it allows applications to take advantage of concurrent requests, allowing you to build more performant and efficient applications. If your application wasn't fully utilizing the CPU, chances are that you'll be able to use concurrent requests to reduce the total number of instances and serve more with less.
I’m on 2.7 it made a huge difference. Likely if your app is Data Store Heavy you will see Massive improvements. If you are computation heavy you will not.
Look at your dashboard the CPU Seconds Use/Second will tell you the ratio of Instance CPU Cycles to API CPU cycles. On 2.5 I ran at 1/10 the CPU as the API. On 2.7 I’m at closer to 1/3
That didn’t equate to 1/3 fewer instances but it did equate to half as many.
2.7 seems to be hit harder by the random “everything is taking 3 times as long” bug. And 2.7 instance spin up seems to be a bit slower than 2.5 instances.
Also because you can have more than one request per instance you have to be more aware of your memory usage because if you have an app that uses 50 megs of memory and it is serving 3 requests, you will see your instance killed more often for hitting the soft memory limit.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-a...@googlegroups.com.
To unsubscribe from this group, send email to google-appengi...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
On Tue, Feb 28, 2012 at 6:06 AM, pdknsk <pdk...@googlemail.com> wrote:
> To be honest, it seems a bit early to declare it stable. It still has
> many minor bugs, and performance problems.
Not to be flip but all software has bugs and the Python 2.7 runtime
(and the Python 2.5 runtime and the Java runtime and the Go
runtime...) are no exceptions. We aren't aware of any unfixed bugs
that would prevent someone from using the runtime but, if you
encounter a bug, please file it on the issue tracker and we will fix
it as soon as possible.
Now onto performance :-) There are definitely instances where the
Python 2.5 runtime outperforms the Python 2.7 runtime. The reverse is
also true.
It is not feasible for us to outperform the Python 2.5 runtime in
every case. To pick a trivial example, Python 2.7 supports
user-created threads and concurrent requests so some APIs now use
locks when mutating global state and copy some data structures when
previously that wasn't necessary. There is obviously some cost
associated with doing this but it is hard to avoid paying it. We think
that the benefits outweigh the costs.
Brandon mentioned a 50% reduction in billed instances when moving to
the Python 2.7 runtime and enabling threadsafe. We have seen a similar
reduction in other applications. But, as Cayden said in another
message, applications will benefit from concurrent requests to varying
degrees. This is not only an App Engine property - any Python
application modified to use threads may become more or (usually
slightly) less performant. Given the way that App Engine is normally
used, we expect concurrent requests to provide a cost benefit for most
(but not all) non-trivial-volume [1] applications.
Some of our larger customers have already migrated to reduce their
instance costs, to use features not available in Python 2.5, or to
gain access to higher-performance modules like cPickle and json. But,
if you think that the Python 2.7 runtime is too risky to use right now
due to bugs or performance problems, you can always wait a few months
and re-evaluate.
Now I'm going to reactivate my reality-distortion-field and eat some
more cake :-)
Oh, and thanks for starting the discussion!
Cheers,
Brian
[1] An application serving one request per minute doesn't have any
concurrent requests so it can't benefit.
-Brandon
The App Engine team have made many recent changes which have fixed bugs and improved performance. We will continue to make improvements and add new libraries as time goes on.We have seen many applications which have seen significant reductions in the number of instances when using concurrent requests, however concurrent requests will offer the greatest reduction in instance usage when applications are not CPU bound.
I encourage you to try Python 2.7 with your own applications and look forward to hearing your questions, comments and suggestions for new libraries.Cayden Meyer
Product Manager, Google App Engine
On 28 February 2012 06:20, Brandon Wirtz <dra...@digerat.com> wrote:
I’m on 2.7 it made a huge difference. Likely if your app is Data Store Heavy you will see Massive improvements. If you are computation heavy you will not.
Look at your dashboard the CPU Seconds Use/Second will tell you the ratio of Instance CPU Cycles to API CPU cycles. On 2.5 I ran at 1/10 the CPU as the API. On 2.7 I’m at closer to 1/3
That didn’t equate to 1/3 fewer instances but it did equate to half as many.
2.7 seems to be hit harder by the random “everything is taking 3 times as long” bug. And 2.7 instance spin up seems to be a bit slower than 2.5 instances.
Also because you can have more than one request per instance you have to be more aware of your memory usage because if you have an app that uses 50 megs of memory and it is serving 3 requests, you will see your instance killed more often for hitting the soft memory limit.
From: google-appengine@googlegroups.com [mailto:google-appengine@googlegroups.com] On Behalf Of Joshua Smith
Sent: Monday, February 27, 2012 11:57 AM
To: google-appengine@googlegroups.com
Subject: [google-appengine] Py2.7
In today's blog:
We think the Python 2.7 runtime for App Engine is a great step forward for our developers. First, it allows applications to take advantage of concurrent requests, allowing you to build more performant and efficient applications. If your application wasn't fully utilizing the CPU, chances are that you'll be able to use concurrent requests to reduce the total number of instances and serve more with less.
That doesn't at all gibe with the stats people have been posting.
From what I've read on these lists, 2.7 is slow at RPCs. But RPCs are the main way to not fully utilize the CPU. So for most apps, what you gain in concurrency, you lose in performance per thread.
Is google announcing some performance breakthrough, or is this just reality-distortion-field stuff?
-Joshua
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscribe@googlegroups.com.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/google-appengine?hl=en.
--
You received this message because you are subscribed to the Google Groups "Google App Engine" group.
To post to this group, send email to google-appengine@googlegroups.com.
To unsubscribe from this group, send email to google-appengine+unsubscribe@googlegroups.com.
Now I'm going to reactivate my reality-distortion-field and eat some
more cake :-)
But of course:
http://www.googlestore.com/Fun/App+Engine+Squishable.axd
Cheers,
Brian
