{ "info": { "author": "Jarn AS", "author_email": "info@jarn.com", "bugtrack_url": null, "classifiers": [ "Framework :: Plone", "Framework :: Zope2", "Programming Language :: Python" ], "description": "==================\njarn.checkinterval\n==================\n---------------------------------------------------\nCompute optimal interpreter check interval for Zope\n---------------------------------------------------\n\nComputes the optimal interpreter check interval for the machine it is run on.\nThe formula is as follows::\n\n / 50\n\nInstallation and use\n====================\n\nThe checkinterval script must be installed into the Python interpreter used to\nrun Zope. This is most easily achieved by adding a part to your buildout.cfg::\n\n [buildout]\n parts = checkinterval\n\n [checkinterval]\n recipe = zc.recipe.egg\n eggs = jarn.checkinterval\n\nAfter re-running buildout, type::\n\n $ ./bin/checkinterval\n 1305\n\nThe number you see is the recommended check interval for this machine; put it\ninto your zope.conf file::\n\n python-check-interval 1305\n\nNow restart Zope and bask in the glow.\n\nWhy care?\n=========\n\nThe Python Library Reference on the topic of `check interval`_:\n`\"This integer value determines how often the interpreter checks for periodic\nthings such as thread switches and signal handlers. The default is 100,\nmeaning the check is performed every 100 Python virtual instructions.\nSetting it to a larger value may increase performance for programs using\nthreads.\"`\n\nNow, the Zope application server is such a program, and it benefits **greatly**\nfrom setting the right check interval. If the value is too low, Zope\nthreads are interrupted unnecessarily, causing a noticable performance hit on\ntoday's multi-cpu hardware.\n\nWhere's the 50 coming from?\n===========================\n\nThe constant 50 in the formula was determined by benchmarks performed at Zope\nCorporation and has become part of the \"Zope lore\" (See e.g. this post by\n`Matt Kromer`_). Going beyond pystone/50 produced no further benefits.\n\nThe value may well be meaningless for applications other than Zope and\nplatforms other than Intel.\n\nBackground\n==========\n\nMore on check intervals and the GIL from `David Beazly`_.\n\nFor those back from the Beazly talk: Zope uses long running threads and\n`asyncore`_, making it (more) independent from OS scheduling issues. Still,\nthe interruption argument holds.\n\n.. _`check interval`: http://docs.python.org/library/sys.html#sys.setcheckinterval\n.. _`Matt Kromer`: http://mail.zope.org/pipermail/zope/2002-June/116598.html\n.. _`David Beazly`: http://www.dabeaz.com/python/GIL.pdf\n.. _`asyncore`: http://docs.python.org/library/asyncore.html\n\n\nChangelog\n=========\n\n1.0 - 2009-06-13\n----------------\n\n- Initial release", "description_content_type": null, "docs_url": null, "download_url": "UNKNOWN", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "http://www.jarn.com/", "keywords": "python zope interpreter check interval", "license": "BSD", "maintainer": null, "maintainer_email": null, "name": "jarn.checkinterval", "package_url": "https://pypi.org/project/jarn.checkinterval/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/jarn.checkinterval/", "project_urls": { "Download": "UNKNOWN", "Homepage": "http://www.jarn.com/" }, "release_url": "https://pypi.org/project/jarn.checkinterval/1.0/", "requires_dist": null, "requires_python": null, "summary": "Compute optimal interpreter check interval for Zope", "version": "1.0" }, "last_serial": 793573, "releases": { "1.0": [ { "comment_text": "", "digests": { "md5": "4bdea81782e6b5671becf73bff7b6c26", "sha256": "d57eca8d4f437f63eb547e6533a66a1b5d96a65348b20a874d1debb1c49d37dc" }, "downloads": -1, "filename": "jarn.checkinterval-1.0.zip", "has_sig": false, "md5_digest": "4bdea81782e6b5671becf73bff7b6c26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8091, "upload_time": "2009-06-13T20:12:27", "url": "https://files.pythonhosted.org/packages/92/a1/ac38929f530affa48023f049ca1f4da2d6bd2150deb1c92f833c5dd328de/jarn.checkinterval-1.0.zip" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "4bdea81782e6b5671becf73bff7b6c26", "sha256": "d57eca8d4f437f63eb547e6533a66a1b5d96a65348b20a874d1debb1c49d37dc" }, "downloads": -1, "filename": "jarn.checkinterval-1.0.zip", "has_sig": false, "md5_digest": "4bdea81782e6b5671becf73bff7b6c26", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 8091, "upload_time": "2009-06-13T20:12:27", "url": "https://files.pythonhosted.org/packages/92/a1/ac38929f530affa48023f049ca1f4da2d6bd2150deb1c92f833c5dd328de/jarn.checkinterval-1.0.zip" } ] }