I'm an engineer on the App Engine team, and work as the TL for
the scheduler, appserver, and other serving infrastructure. I am
also closely involved with production and reliability issues. I
can offer some perspective here.
Jeff Schnitzer:
} "Degraded service == more profitable" is a perverse
} incentive, and will eventually produce undesirable development
} priorities and turn happy customers into angry customers.
This captures the issue well. It may seem at first like we've got
an incentive, but in truth the second-order effects are a much
stronger incentive for us. We care very much about predictable
reliable performance and continually work to improve here.
stevep:
} Forgone Scheduler improvements == more profitable also...
} Engineering: "If we make this Scheduler change, we can halve the
total number of instances without any hardware investment!!!!!!!!"
} Finance: "Remember you work for the shareholders, not the developers."
I've personally been involved in five projects over the last year
in which we shipped scheduler improvements which reduced the
number of instances needed by an app to run a workload. As with
the above point, it may seem at first like we've got a bad
incentive, but in truth the second-order effects override it. We
want App Engine and the scheduler to get more efficient over
time, and prioritize several projects internally to that effect.
It's in our best interest to see predictable and reliable
behaviors, greater efficiency, and higher performance. It's sort
of a never-ending project for us, as we have to keep up with
infrastructure changes, correctly adapt to new features, keep
complexity down, support new runtimes and computational models,
and the whole time try to make things look effortless (i.e.
automatic, with little-to-no feedback needed from the developer).
It's very important to us.
Jeff Schnitzer:
} Is there still a hard limit of 10 threads?
Yes, but probably not for the reason you expect. The primary
issue we run into is memory management. If we raised the default
to 100, many apps would then see out-of-memory deaths (more than
they do now), and these deaths show up differently for
python/java/go. The right path forward is more intelligent
algorithms wrt memory, providing configurability, and so on. This
is an example of the kinds of projects we work on for the
scheduler, but as with any team we have to prioritize our
projects. I'd recommend filing this (or any other desired
scheduler enhancements) on the public issue tracker so they can
get feedback/data/votes.
> --
> You received this message because you are subscribed to the Google Groups
> "Google App Engine" group.
> To view this discussion on the web visit
>
https://groups.google.com/d/msg/google-appengine/-/Oixl790VrV0J.