{ "info": { "author": "Alec Hothan", "author_email": "ahothan@cisco.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Developers", "Intended Audience :: Information Technology", "Intended Audience :: System Administrators", "License :: OSI Approved :: Apache Software License", "Operating System :: MacOS", "Operating System :: POSIX :: Linux", "Programming Language :: Python", "Programming Language :: Python :: 2", "Programming Language :: Python :: 2.7" ], "description": "========\nOverview\n========\n\nThis repository contains a set of python scripts for helping tune any Linux\nsystem for performance and scale by leveraging the Linux *perf* tool and\ngenerating from the perf traces 2 HTML dashboards that represent Linux scheduler context switches\nand KVM events.\n\nThe basic dashboard illustrates general scheduler and KVM events for all tasks selected at capture time:\n\n- CPU Usage vs. context switches chart\n- KVM exit types distribution stacked bar charts (exit type distribution per task)\n- Summary CoreMap showing task scheduler core assignment and context switch count heat maps (run time % and context switch count on each core per task - including total time per core and per task)\n\nThe detailed dashboard illustrates detailed scheduler and KVM events at the task level:\n\n- context switch heat maps (temporal distribution of context switch events)\n- KVM exit heat maps (temporal distribution of kvm entry and exit events)\n- Temporal Coremaps (on which core does any given task run over time)\n\nThe task annotation feature further allows the generation of cross-run charts (diffs) that can help\ndetect more easily differences of behavior across multiple captures/runs.\n\nThe capture script wraps around the Linux perf tool to capture events of\ninterest (such as context switches and kvm events) and generates a much more\ncompact binary file to be used for analysis offline.\n\nComplete documentation including installation and usage instructions:\n\n http://perfwhiz.readthedocs.org/\n\n\nperfwhiz Workflow\n-----------------\n\nThe following diagram illustrates the 2 phases for getting the dashboards: capture phase (perfcap.py) and dashboard generation phase (perfmap.py).\n\n.. image:: images/perfwhiz.png\n\nCapture is performed on the system under test, by invoking the perfcap.py script and specify which tasks to capture events from and for how long.\nThe result of each capture is a binary file (with the cdict extension, cdict stands for compressed dictionary).\n\nThe binary files can then later be provided to the dashboard generation tool (perfmap.py) to generate the corresponding dashboards.\nThis dashboard generation phase is typically done offline on a workstation where perfmap is installed (laptop, macbook...).\nThe generated dashboards are HTML files that can be viewed using any browser.\n\nDependencies\n------------\nDependencies are automatically installed when perfwhiz is being installed (refer to the Installation section).\n\nThe capture tool perfcap.py depends on:\n\n- the Linux perf tool (compiled with the python extension)\n- pbr python package\n- msgpack python package\n\nThe dashboard generation tool perfmap.py depends on:\n\n- pandas/numpy python package\n\nThe generated HTML dashboards contain Javascript code that will pull some Javascript libraries from CDN servers\nwhen loaded in the browser (CDN is a public network of servers that contain libraries that are downloaded by browsers).\nTherefore, viewing those dashboards require access to the Internet.\nThe following Javascript libraries are required by the dashboards:\n\n- jquery\n- datatables\n- d3\n- angular\n- angular-ui-bootstrap\n- pako (zlib inflate)\n\n\nLicensing\n---------\n\nperfwhiz is licensed under the Apache License, Version 2.0 (the \"License\").\nYou may not use this tool except in compliance with the License.\nYou may obtain a copy of the License at\n``_\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\nSee the License for the specific language governing permissions and\nlimitations under the License.\n\nPerfwhiz includes a copy of umsgpack.py (MIT License) in its distribution\n(https://github.com/vsergeev/u-msgpack-python, many thanks to vsergeev)\n\nLinks\n-----\n\n* Documentation: http://perfwhiz.readthedocs.org/en/latest/\n* Source: https://github.com/cisco-oss-eng/perfwhiz\n* Supports/Bugs: https://github.com/cisco-oss-eng/perfwhiz\n* Gitter Room: https://gitter.im/cisco-oss-eng/perfwhiz\n\n.. image:: https://badges.gitter.im/Join%20Chat.svg\n :alt: Join the chat at https://gitter.im/cisco-oss-eng/perfwhiz\n :target: https://gitter.im/cisco-oss-eng/perfwhiz?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge", "description_content_type": null, "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/cisco-oss-eng/perfwhiz", "keywords": "Linux perf tools", "license": "", "maintainer": "", "maintainer_email": "", "name": "perfwhiz", "package_url": "https://pypi.org/project/perfwhiz/", "platform": "UNKNOWN", "project_url": "https://pypi.org/project/perfwhiz/", "project_urls": { "Homepage": "https://github.com/cisco-oss-eng/perfwhiz" }, "release_url": "https://pypi.org/project/perfwhiz/0.3.1/", "requires_dist": [ "pbr (>=1.8)", "msgpack-python (>=0.4.6)", "pandas (>=0.17); extra == 'analyzer'", "numpy (>=1.10.1); extra == 'analyzer'", "Jinja2 (>=2.8); extra == 'analyzer'" ], "requires_python": "", "summary": "Tools for Linux perf", "version": "0.3.1" }, "last_serial": 2335192, "releases": { "0.0.1": [ { "comment_text": "", "digests": { "md5": "7ec11eae75746b9a853e203676f85eb0", "sha256": "0144023cca094b4a8c950798d3b059f63f82b1c4a186a6c3ce05455a15a5e18f" }, "downloads": -1, "filename": "perfwhiz-0.0.1.tar.gz", "has_sig": false, "md5_digest": "7ec11eae75746b9a853e203676f85eb0", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 269278, "upload_time": "2015-12-01T00:21:22", "url": "https://files.pythonhosted.org/packages/9e/77/ffcb3f1677986005a4344611dd8e12063e3478848397c08796feed7e4478/perfwhiz-0.0.1.tar.gz" } ], "0.0.2": [ { "comment_text": "", "digests": { "md5": "353763cfcf55684a2deba589d97d54d8", "sha256": "0ce4d5294cdc0c927bda12fd49d7e1a88c2e6557df26778b7b1b6945363e408c" }, "downloads": -1, "filename": "perfwhiz-0.0.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "353763cfcf55684a2deba589d97d54d8", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 33275, "upload_time": "2015-12-01T01:20:28", "url": "https://files.pythonhosted.org/packages/86/80/c83afc19eb02da5c8313cb3a388d008eec4b1e173ed6ebd5b726c4fd5ae9/perfwhiz-0.0.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "03e7c9a41fb2b5ebef7d827ff1f197ad", "sha256": "60f35a9c29ddf04f432ecbf6cd6524d44c7ade37c3ee709f0b804d9f72d8c750" }, "downloads": -1, "filename": "perfwhiz-0.0.2.tar.gz", "has_sig": false, "md5_digest": "03e7c9a41fb2b5ebef7d827ff1f197ad", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 269311, "upload_time": "2015-12-01T01:20:34", "url": "https://files.pythonhosted.org/packages/53/bd/4aa15abd1404697623cdf1e930270306d9b6c754d50919c3c2cf9708b026/perfwhiz-0.0.2.tar.gz" } ], "0.1.0": [ { "comment_text": "", "digests": { "md5": "d9f173e91fd929b971a6021f6d061874", "sha256": "fdea67526b9c69472cd4a6520182f87cb25624e4b5ab2b98ae53a24dc729195d" }, "downloads": -1, "filename": "perfwhiz-0.1.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d9f173e91fd929b971a6021f6d061874", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 41257, "upload_time": "2016-02-01T08:44:11", "url": "https://files.pythonhosted.org/packages/6b/03/58e27944fac806776350cf83d00d738988f30888f9586b998c04b7708f06/perfwhiz-0.1.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "7610f272b5f9a90af3ea781c28b83481", "sha256": "11b74c2f7120756563f7a98606f0c9c4fe2917cb93f652dd6fc760bdbeb3ac1d" }, "downloads": -1, "filename": "perfwhiz-0.1.0.tar.gz", "has_sig": false, "md5_digest": "7610f272b5f9a90af3ea781c28b83481", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 279833, "upload_time": "2016-02-01T08:44:20", "url": "https://files.pythonhosted.org/packages/73/23/fd9055e47e0889ed11d39841d50f559ad2448a4ae71be2f8841bd63fc273/perfwhiz-0.1.0.tar.gz" } ], "0.2.0": [ { "comment_text": "", "digests": { "md5": "c6f557ed0c0eba168c41488a92a50623", "sha256": "c28c1e339a18ef5aa6475ee55685e1a44389359e5ff6e9e9e9a48a086ba1942f" }, "downloads": -1, "filename": "perfwhiz-0.2.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "c6f557ed0c0eba168c41488a92a50623", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46220, "upload_time": "2016-02-10T06:48:19", "url": "https://files.pythonhosted.org/packages/e0/ff/95e134248176d5c9b1a7ffedd26091b3e59940f07fada04a22c5e324f96b/perfwhiz-0.2.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "efd637f5b83beec94346a3c1ea42526f", "sha256": "dadac9dd3c66146d1f7dbc999d3aa7f831de0e05bb79d2a81eca83a955f57aae" }, "downloads": -1, "filename": "perfwhiz-0.2.0.tar.gz", "has_sig": false, "md5_digest": "efd637f5b83beec94346a3c1ea42526f", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 437442, "upload_time": "2016-02-10T06:48:25", "url": "https://files.pythonhosted.org/packages/19/38/47989b9bc27e4c0e6e498432159ebb55e5481477f92bbb0aa1e5ef95d9b5/perfwhiz-0.2.0.tar.gz" } ], "0.2.1": [ { "comment_text": "", "digests": { "md5": "4a21cf90b980cf251cb674a064cf4094", "sha256": "27270346f373c6826487ba09f28a25167be0ccb7444c100548e349cb5031fc22" }, "downloads": -1, "filename": "perfwhiz-0.2.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "4a21cf90b980cf251cb674a064cf4094", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46207, "upload_time": "2016-02-11T17:10:31", "url": "https://files.pythonhosted.org/packages/f0/45/f482353639bfecc58a1dd40ceb130593d0f4327fe4a5f38ddd3ce0283f5b/perfwhiz-0.2.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b6dfa9bca523a8f27af2146fc726aedc", "sha256": "e284e1fcc3bc512178b2e68aaae25aeba4eb60730f00dfd5efb81870e092d7dc" }, "downloads": -1, "filename": "perfwhiz-0.2.1.tar.gz", "has_sig": false, "md5_digest": "b6dfa9bca523a8f27af2146fc726aedc", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 437483, "upload_time": "2016-02-11T17:10:39", "url": "https://files.pythonhosted.org/packages/01/34/ea90d7de1d530e64cde5e1d3b06889d30aa49a397d9f458ab267d6c877cc/perfwhiz-0.2.1.tar.gz" } ], "0.2.2": [ { "comment_text": "", "digests": { "md5": "de68f4d30e937847a5800af853dc9544", "sha256": "c5f8abbbb1f6590826c0d70c2737b9d34193df2e15dbc257f757e51f764b6483" }, "downloads": -1, "filename": "perfwhiz-0.2.2-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "de68f4d30e937847a5800af853dc9544", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46262, "upload_time": "2016-02-18T00:09:28", "url": "https://files.pythonhosted.org/packages/25/69/91f7c478394fdf4ad985a75c3146cd0c35abb79d3ef9907799925350de70/perfwhiz-0.2.2-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "b23012733cba6f8ee9676ecd68c426c6", "sha256": "a96e19d0c8c06c518a8768daa5e65c2d8e1bd43d6f3a49ffa96827578eefb5f7" }, "downloads": -1, "filename": "perfwhiz-0.2.2.tar.gz", "has_sig": false, "md5_digest": "b23012733cba6f8ee9676ecd68c426c6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 438106, "upload_time": "2016-02-18T00:09:33", "url": "https://files.pythonhosted.org/packages/1c/4d/92072170f6d2120c1bce03514431c28930936618657bfb668c995c82ce40/perfwhiz-0.2.2.tar.gz" } ], "0.2.3": [ { "comment_text": "", "digests": { "md5": "07b92f936bd27f9b759af94d013ebdda", "sha256": "2c0ff28ccf1e5265ebaa8f8d35e19b84a70b54de3f0763f17785ab3a221eee3e" }, "downloads": -1, "filename": "perfwhiz-0.2.3-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "07b92f936bd27f9b759af94d013ebdda", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46350, "upload_time": "2016-03-11T18:33:42", "url": "https://files.pythonhosted.org/packages/fe/4a/5ca23dac9d2b3f0658f5d32bd2f8a2144a1a06d89a567694c810e8db0212/perfwhiz-0.2.3-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "f24efc27fc2b1367e93cdde31b131aa3", "sha256": "f03bf8ebc0af66e583b6ffc46c3d2619d4f74171170dfc2c676023d7d6551271" }, "downloads": -1, "filename": "perfwhiz-0.2.3.tar.gz", "has_sig": false, "md5_digest": "f24efc27fc2b1367e93cdde31b131aa3", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 438241, "upload_time": "2016-03-11T18:33:47", "url": "https://files.pythonhosted.org/packages/cf/8d/d5c09292ececad211eed0101c9793587c6eda55b0d04a1b22c9b01182be6/perfwhiz-0.2.3.tar.gz" } ], "0.2.4": [ { "comment_text": "", "digests": { "md5": "dc81dc4c9cebda336fff0776043ab205", "sha256": "ec633ee677bcfe76e79ddd17f7ab0395c9dcb8af3480ef2e304b103bb8b8f45b" }, "downloads": -1, "filename": "perfwhiz-0.2.4-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "dc81dc4c9cebda336fff0776043ab205", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46054, "upload_time": "2016-06-01T09:15:49", "url": "https://files.pythonhosted.org/packages/8a/8f/cffc9763bb51ef5bb27030f3788bc6b3a4b5f1cac910161b910160e66277/perfwhiz-0.2.4-py2.py3-none-any.whl" } ], "0.3.0": [ { "comment_text": "", "digests": { "md5": "90beb17dd0b3fd50f745c7fdfc9fa0e3", "sha256": "8d30590083da2708f6b0f3c32b0bee316ec71e29302eb2ffcf33644688603951" }, "downloads": -1, "filename": "perfwhiz-0.3.0-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "90beb17dd0b3fd50f745c7fdfc9fa0e3", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 46161, "upload_time": "2016-06-07T08:14:34", "url": "https://files.pythonhosted.org/packages/2f/fc/c45e7661431a3ab83eec3ac78aa2916291673a764b21cfea7600de3cda3d/perfwhiz-0.3.0-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "749f4cda9ddf85acd3d2149892c417e6", "sha256": "1b0f89bc9ed3933e3a6e71366541efe0bf1d477d201b52e44118f3d7da871559" }, "downloads": -1, "filename": "perfwhiz-0.3.0.tar.gz", "has_sig": false, "md5_digest": "749f4cda9ddf85acd3d2149892c417e6", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 438082, "upload_time": "2016-06-07T08:14:54", "url": "https://files.pythonhosted.org/packages/10/a2/b410bfad2d5a451200a750a66306783ffc35e7868b31e4b9ae15235ec945/perfwhiz-0.3.0.tar.gz" } ], "0.3.1": [ { "comment_text": "", "digests": { "md5": "d026ef153e6177ae3deed1205b5c2733", "sha256": "95f1250d1cfa757e34bc5ba2244b875b0321e7e99ee20256f0671651f9b6dc89" }, "downloads": -1, "filename": "perfwhiz-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d026ef153e6177ae3deed1205b5c2733", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 51898, "upload_time": "2016-09-10T15:29:44", "url": "https://files.pythonhosted.org/packages/14/04/45705bf2a8bfd4d396ba381dc31b2f364ff3499190fd408f753b3088c1db/perfwhiz-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "586b0e42c1dd7831516cc302f34d983b", "sha256": "9910d144f7d1b1090b3dd65dc43fa5161dd5c9208acfa87c0269d0eca04fa2c4" }, "downloads": -1, "filename": "perfwhiz-0.3.1.tar.gz", "has_sig": false, "md5_digest": "586b0e42c1dd7831516cc302f34d983b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 444002, "upload_time": "2016-09-10T15:29:47", "url": "https://files.pythonhosted.org/packages/60/27/b91757881cbbdcd0f93e0cdc7be334b7e5f06ae11a9ae316fde45c043603/perfwhiz-0.3.1.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "d026ef153e6177ae3deed1205b5c2733", "sha256": "95f1250d1cfa757e34bc5ba2244b875b0321e7e99ee20256f0671651f9b6dc89" }, "downloads": -1, "filename": "perfwhiz-0.3.1-py2.py3-none-any.whl", "has_sig": false, "md5_digest": "d026ef153e6177ae3deed1205b5c2733", "packagetype": "bdist_wheel", "python_version": "py2.py3", "requires_python": null, "size": 51898, "upload_time": "2016-09-10T15:29:44", "url": "https://files.pythonhosted.org/packages/14/04/45705bf2a8bfd4d396ba381dc31b2f364ff3499190fd408f753b3088c1db/perfwhiz-0.3.1-py2.py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "586b0e42c1dd7831516cc302f34d983b", "sha256": "9910d144f7d1b1090b3dd65dc43fa5161dd5c9208acfa87c0269d0eca04fa2c4" }, "downloads": -1, "filename": "perfwhiz-0.3.1.tar.gz", "has_sig": false, "md5_digest": "586b0e42c1dd7831516cc302f34d983b", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 444002, "upload_time": "2016-09-10T15:29:47", "url": "https://files.pythonhosted.org/packages/60/27/b91757881cbbdcd0f93e0cdc7be334b7e5f06ae11a9ae316fde45c043603/perfwhiz-0.3.1.tar.gz" } ] }