From e6457cdd3ef8fef8b1e417790ec4b95abe8ce7aa Mon Sep 17 00:00:00 2001 From: "A. Jesse Jiryu Davis" Date: Thu, 15 Oct 2015 00:37:39 -0400 Subject: [PATCH] PYTHON-983 Update docs for new executor design. --- doc/changelog.rst | 1 + doc/developer/periodic_executor.rst | 86 +++++++++++++++++++------- doc/static/periodic-executor-refs.dot | 1 + doc/static/periodic-executor-refs.png | Bin 35654 -> 39586 bytes pymongo/periodic_executor.py | 2 + 5 files changed, 69 insertions(+), 21 deletions(-) diff --git a/doc/changelog.rst b/doc/changelog.rst index 8c4d5801e..b55fae212 100644 --- a/doc/changelog.rst +++ b/doc/changelog.rst @@ -17,6 +17,7 @@ Highlights include: `tzinfo` option of :class:`~bson.codec_options.CodecOptions`. - An implementation of :class:`~gridfs.GridFSBucket` from the new GridFS spec. - Compliance with the new Connection String spec. +- Reduced idle CPU usage in Python 2. Changes in internal classes ........................... diff --git a/doc/developer/periodic_executor.rst b/doc/developer/periodic_executor.rst index b794ad80a..6327cfd83 100644 --- a/doc/developer/periodic_executor.rst +++ b/doc/developer/periodic_executor.rst @@ -7,22 +7,6 @@ PyMongo implements a :class:`~periodic_executor.PeriodicExecutor` for two purposes: as the background thread for :class:`~monitor.Monitor`, and to regularly check if there are `OP_KILL_CURSORS` messages that must be sent to the server. -Monitoring ----------- - -For each server in the topology, :class:`~topology.Topology` launches a -monitor thread. This thread must not prevent the topology from being freed, -so it weakrefs the topology. Furthermore, it uses a weakref callback to close -itself promptly when the topology is freed. - -Solid lines represent strong references, dashed lines weak ones: - -.. generated with graphviz from periodic-executor-refs.dot - -.. image:: ../static/periodic-executor-refs.png - -See `Stopping Executors`_ below for an explanation of ``_EXECUTORS``. - Killing Cursors --------------- @@ -35,16 +19,17 @@ the cursor before finishing iteration:: We try to send an `OP_KILL_CURSORS` to the server to tell it to clean up the server-side cursor. But we must not take any locks directly from the cursor's -destructor (see `PYTHON-799 `_), -so we cannot safely use the PyMongo data structures required to send a message. -The solution is to add the cursor's id to an array on the -:class:`~mongo_client.MongoClient` without taking any locks. +destructor (see `PYTHON-799`_), so we cannot safely use the PyMongo data +structures required to send a message. The solution is to add the cursor's id +to an array on the :class:`~mongo_client.MongoClient` without taking any locks. Each client has a :class:`~periodic_executor.PeriodicExecutor` devoted to checking the array for cursor ids. Any it sees are the result of cursors that were freed while the server-side cursor was still open. The executor can safely take the locks it needs in order to send the `OP_KILL_CURSORS` message. +.. _PYTHON-799: https://jira.mongodb.org/browse/PYTHON-799 + Stopping Executors ------------------ @@ -55,7 +40,7 @@ the topology calls :meth:`close` on all its monitor threads, the :meth:`close` method cannot actually call :meth:`wake` on the executor, since :meth:`wake` takes a lock. -Instead, executors wake very frequently to check if ``self.close`` is set, +Instead, executors wake periodically to check if ``self.close`` is set, and if so they exit. A thread can log spurious errors if it wakes late in the Python interpreter's @@ -67,3 +52,62 @@ An `exit handler`_ runs on shutdown and tells all executors to stop, then tries (with a short timeout) to join all executor threads. .. _exit handler: https://docs.python.org/2/library/atexit.html + +Monitoring +---------- + +For each server in the topology, :class:`~topology.Topology` uses a periodic +executor to launch a monitor thread. This thread must not prevent the topology +from being freed, so it weakrefs the topology. Furthermore, it uses a weakref +callback to terminate itself soon after the topology is freed. + +Solid lines represent strong references, dashed lines weak ones: + +.. generated with graphviz: "dot -Tpng periodic-executor-refs.dot > periodic-executor-refs.png" + +.. image:: ../static/periodic-executor-refs.png + +See `Stopping Executors`_ above for an explanation of the ``_EXECUTORS`` set. + +It is a requirement of the `Server Discovery And Monitoring Spec`_ that a +sleeping monitor can be awakened early. Aside from infrequent wakeups to do +their appointed chores, and occasional interruptions, periodic executors also +wake periodically to check if they should terminate. + +Our first implementation of this idea was the obvious one: use the Python +standard library's threading.Condition.wait with a timeout. Another thread +wakes the executor early by signaling the condition variable. + +A topology cannot signal the condition variable to tell the executor to +terminate, because it would risk a deadlock in the garbage collector: no +destructor or weakref callback can take a lock to signal the condition variable +(see `PYTHON-863`_); thus the only way for a dying object to terminate a +periodic executor is to set its "stopped" flag and let the executor see the +flag next time it wakes. + +We erred on the side of prompt cleanup, and set the check interval at 100ms. We +assumed that checking a flag and going back to sleep 10 times a second was +cheap on modern machines. + +Starting in Python 3.2, the builtin C implementation of lock.acquire takes a +timeout parameter, so Python 3.2+ Condition variables sleep simply by calling +lock.acquire; they are implemented as efficiently as expected. + +But in Python 2, lock.acquire has no timeout. To wait with a timeout, a Python +2 condition variable sleeps a millisecond, tries to acquire the lock, sleeps +twice as long, and tries again. This exponential backoff reaches a maximum +sleep time of 50ms. + +If PyMongo calls the condition variable's "wait" method with a short timeout, +the exponential backoff is restarted frequently. Overall, the condition variable +is not waking a few times a second, but hundreds of times. (See `PYTHON-983`_.) + +Thus the current design of periodic executors is surprisingly simple: they +do a simple `time.sleep` for a half-second, check if it is time to wake or +terminate, and sleep again. + +.. _Server Discovery And Monitoring Spec: https://github.com/mongodb/specifications/blob/master/source/server-discovery-and-monitoring/server-discovery-and-monitoring.rst#requesting-an-immediate-check + +.. _PYTHON-863: https://jira.mongodb.org/browse/PYTHON-863 + +.. _PYTHON-983: https://jira.mongodb.org/browse/PYTHON-983 diff --git a/doc/static/periodic-executor-refs.dot b/doc/static/periodic-executor-refs.dot index 003af9f57..39632cfa7 100644 --- a/doc/static/periodic-executor-refs.dot +++ b/doc/static/periodic-executor-refs.dot @@ -5,6 +5,7 @@ digraph "Monitor and PeriodicExecutor" { monitor -> executor executor -> "target()" "target()" -> self_ref + thread -> "target()" // Weak references edge [style="dashed"]; diff --git a/doc/static/periodic-executor-refs.png b/doc/static/periodic-executor-refs.png index 9530a566978335ff005c98c4ce550b367c50bcb7..3224b3d1d9f606ed9363d185933756c5b15c73d0 100644 GIT binary patch literal 39586 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 diff --git a/pymongo/periodic_executor.py b/pymongo/periodic_executor.py index 384b6063e..8b7015b3f 100644 --- a/pymongo/periodic_executor.py +++ b/pymongo/periodic_executor.py @@ -37,6 +37,8 @@ class PeriodicExecutor(object): """ # threading.Event and its internal condition variable are expensive # in Python 2, see PYTHON-983. Use a boolean to know when to wake. + # The executor's design is constrained by several Python issues, see + # "periodic_executor.rst" in this repository. self._event = False self._interval = interval self._min_interval = min_interval