{ "info": { "author": "Cl\u00e9ment Pinard", "author_email": "clempinard@gmail.com", "bugtrack_url": null, "classifiers": [ "Intended Audience :: Science/Research", "License :: OSI Approved :: MIT License", "Programming Language :: Python :: 3" ], "description": "# Multiple smi\n\n### Look up GPU/CPU/RAM usage on multiple machines at the same time !\nintended to work with python 3+\n\nBased on [pyNVML](https://pypi.python.org/pypi/nvidia-ml-py3), and `psutil`.\n\n### Features\n- Allows you to get `nvidia-smi` output and `pustil`information for multiple connected computers at once, and display it on a a selected GUI.\n - Availables frontends :\n - Ubuntu Appindicator\n - works best on Unity, partially supported on Gnome-shell\n - [Argos](https://github.com/p-e-w/argos)\n - works on Gnome shell, but also on MacOS thanks to [BitBar](https://getbitbar.com/) compatibility\n\n\n![status](https://github.com/ClementPinard/nvidia-multiple-smi/blob/master/images/status%20bar.png)\n\n- Allows you to get a notification every time a new process is launched or finished. A default minimum of 1GB memory use is needed for the notification to appear.\n - Available notification backends :\n - [gnome libnotify](https://developer.gnome.org/libnotify/)\n - [ntfy](https://ntfy.readthedocs.io/en/latest/)\n\n![notif](https://github.com/ClementPinard/nvidia-multiple-smi/blob/master/images/Sans%20titre.png)\n\n- This tool is aimed at small research teams, with multiple GPU-equipped computers, which you can manually ssh to. At a glance you can see every usage of your computer stock, and where you can launch your computation. It also provides some basis if you want to develop a tool to automatically launch your computation on the least busy computer of your network.\n\n\n### installation:\n\n```[sudo] python3 setup.py install```\n```[sudo] pip3 install multiple-smi```\n\nIf using `appindicator` frontend or `gnome` notifier, it is advised to install it with system python, with which the `gi` package can be imported.\n\nFor `server_smi` it is also advised to install it with system python because then it will be available in `sudo` mode, needed to install the systemctl service.\n\n#### Optional note for Ubuntu 18+ users\n\nIf you want to use the appindicator fronted, as unity is replaced by Gnome-shell, you need to enable appindicators on gnome-shell with `gnome-tweak-tool`, and you need to install python bindings for Appindicator3 :\n\n```bash\nsudo apt install gir1.2-appindicator3-0.1\n```\n\n#### Server side services installation\n\nTo allow clients to access your computer's smi stats, simply run\n`server_smi`\n\nBut you can also enable it as a service that will be launched at boot.\n\n---------------------------\n\n- **Ubuntu 16+** : A script is provided to automatically create the service file, whih will allow the server_smi to run automatically during boot (some options are available)\n```\nsudo install_server_service\n```\nto uninstall: \n```\nsudo install_server_service -u\n```\n(make the `systemd` folder specified is the same as during installation)\n\n- **Ubuntu 14** : you have to daemonize the script and put it in init.d, you can do it with the provided script `server_smi_daemon.sh`\n```\nsudo cp server_smi_daemon.sh /etc/init.d/.\nsudo chmod 0755 /etc/init.d/server_smi_daemon.sh\nsudo update-rc.d server_smi_daemon.sh defaults\n```\nto uninstall:\n```\nsudo update-rc.d -f service_smi_daemon.sh remove\n```\n\n### to run the appindicator\n\n`client_smi --frontend {argos,appindicator} --notify-backend {gnome,ntfy}`\n\n### to run the client_smi as only a CLI tool with no gui or notificaion:\n\n`client_smi`\n\n\n### Configuration:\n\nTo know which servers have a running `server_smi` in your local network, you can use the `discover_hosts` script, it will automatically populate a json file in `~/.client_smi/hosts_to_smi.json` with found machines.\n\n```\ndiscover_hosts\n```\n\nTo add your own hosts manually, simply run a `client_smi` or `discover_hosts` once and add your entries in the json file that should be created here:\n`~/.client_smi/hosts_to_smi.json`\n\n### Tunnel Connexion\n\nThanks to `pyzmq` backend for netork, a tunnel connexion is available, when you are outside your usual local network and have to go through a bastion.\n\nSimply launch `client_smi` with `--tunnel` option set to your bastion address\n\n```\nclient_smi --tunnel user@bastion_ip\n```\n\n### Gpu usage stats:\n\nServer-side, gpu usage history is stored in `~/.server_smi/{date}.csv` if launched from CLI, `/etc/server_smi/{date}.csv` if launched from systemctl/init.d. Usage is written on it every ~60 sec, feel free to make some data science with it.\n\nTo enable it, you can use option `-s` in `install_server_service` or add it in `server_smi_daemon.sh` (line 6) before installing\n\n", "description_content_type": "text/markdown", "docs_url": null, "download_url": "", "downloads": { "last_day": -1, "last_month": -1, "last_week": -1 }, "home_page": "https://github.com/ClementPinard/multiple-smi", "keywords": "", "license": "MIT", "maintainer": "", "maintainer_email": "", "name": "Multiple-smi", "package_url": "https://pypi.org/project/Multiple-smi/", "platform": "", "project_url": "https://pypi.org/project/Multiple-smi/", "project_urls": { "Homepage": "https://github.com/ClementPinard/multiple-smi" }, "release_url": "https://pypi.org/project/Multiple-smi/2.0.3/", "requires_dist": [ "numpy", "python-nmap", "colorspacious", "py-cpuinfo", "pycairo", "nvidia-ml-py3", "pyzmq", "psutil" ], "requires_python": "", "summary": "Look up GPU/CPU/RAM usage on multiple servers at the same time", "version": "2.0.3" }, "last_serial": 5557522, "releases": { "2.0.0": [ { "comment_text": "", "digests": { "md5": "d64f66d37491695284cb87f3a7aa65cc", "sha256": "8c7b0601366a66034601e28303ac70cbc01a851b1da75e72ea38e8c4a3856efb" }, "downloads": -1, "filename": "Multiple_smi-2.0.0-py3-none-any.whl", "has_sig": false, "md5_digest": "d64f66d37491695284cb87f3a7aa65cc", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24864, "upload_time": "2019-07-19T15:14:03", "url": "https://files.pythonhosted.org/packages/a2/67/54b0659abf90e7924de0d9f5d8afb4f667ac6521ce8ed470110aa3cd0b7a/Multiple_smi-2.0.0-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "8396d9ad1e693a4d78097bc816e9d728", "sha256": "3cc63c4d08c8f4caf0fa385e45b974a55a8eebdcbeaca8406fb16c46f0519427" }, "downloads": -1, "filename": "Multiple smi-2.0.0.tar.gz", "has_sig": false, "md5_digest": "8396d9ad1e693a4d78097bc816e9d728", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15117, "upload_time": "2019-07-19T15:14:05", "url": "https://files.pythonhosted.org/packages/80/df/3645ff8c5ac8078aac2c556e45edfa8764eaf198ecfe042857a48e99c664/Multiple%20smi-2.0.0.tar.gz" } ], "2.0.1": [ { "comment_text": "", "digests": { "md5": "ae4b60f54231534bfde8c495618dc33e", "sha256": "8082b2bf21cbf8d61ba28d70a6f405564edcfbb42989d6f5b75b35fe45d92a00" }, "downloads": -1, "filename": "Multiple_smi-2.0.1-py3-none-any.whl", "has_sig": false, "md5_digest": "ae4b60f54231534bfde8c495618dc33e", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24955, "upload_time": "2019-07-19T16:14:34", "url": "https://files.pythonhosted.org/packages/e9/51/0faadddc22ba299fdb783aa19fc1fddaced0b62ce60919022348187d6943/Multiple_smi-2.0.1-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "23911695ab41a516233a6501ea9eb7cf", "sha256": "d36b6e0056a5a108f443a02502a48aea3f024abe427783609e53fdf19e514d31" }, "downloads": -1, "filename": "Multiple smi-2.0.1.tar.gz", "has_sig": false, "md5_digest": "23911695ab41a516233a6501ea9eb7cf", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15122, "upload_time": "2019-07-19T16:14:35", "url": "https://files.pythonhosted.org/packages/23/7f/24f6368a52a0d1742ebdbf1f8649d247b856e19d75ceb4bc4c5a3cce6f33/Multiple%20smi-2.0.1.tar.gz" } ], "2.0.2": [ { "comment_text": "", "digests": { "md5": "9667ae55ea4a01fd2f9dd8d44821bb89", "sha256": "905530d759684faa3d461671062dde223be707351c836f41b2105cb84eeee6fa" }, "downloads": -1, "filename": "Multiple_smi-2.0.2-py3-none-any.whl", "has_sig": false, "md5_digest": "9667ae55ea4a01fd2f9dd8d44821bb89", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 24960, "upload_time": "2019-07-19T16:17:11", "url": "https://files.pythonhosted.org/packages/29/c5/6bd1ef29b01ad50632ed85da51be2fa038b6283282d7eb55bd50646aca89/Multiple_smi-2.0.2-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "1f9b0c0787481308b20f1641daed683e", "sha256": "3f566c1abcf60291e11a707f8f3444bd4b6704ff3307d4427a150030b53ad276" }, "downloads": -1, "filename": "Multiple smi-2.0.2.tar.gz", "has_sig": false, "md5_digest": "1f9b0c0787481308b20f1641daed683e", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15131, "upload_time": "2019-07-19T16:17:12", "url": "https://files.pythonhosted.org/packages/27/5d/25de5b6344fc26f48c08883b20990f16b5632bd675639c48c39574be4b84/Multiple%20smi-2.0.2.tar.gz" } ], "2.0.3": [ { "comment_text": "", "digests": { "md5": "bdd409c567b47c291e63f1a763d5b1d2", "sha256": "17186d69713a7eaa655c61b73106764324f347168a5e586dca7226a8fd744e14" }, "downloads": -1, "filename": "Multiple_smi-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bdd409c567b47c291e63f1a763d5b1d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25092, "upload_time": "2019-07-19T16:44:16", "url": "https://files.pythonhosted.org/packages/b0/06/c2dc662cb8826b7ec15bcf546d6ac673b39e2bb6e0dee80f59d4d8c3dc96/Multiple_smi-2.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a57021177530fbe04323fc915aeb778", "sha256": "e61cb0fefda1ab4a7448f3475dfe9eb3e17807d823bb9a6bb2c4ea32235793b8" }, "downloads": -1, "filename": "Multiple smi-2.0.3.tar.gz", "has_sig": false, "md5_digest": "9a57021177530fbe04323fc915aeb778", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15250, "upload_time": "2019-07-19T16:44:18", "url": "https://files.pythonhosted.org/packages/7c/a1/0bb0435482a523b1e161ba3f907d304a30314505668688015a3a10af2452/Multiple%20smi-2.0.3.tar.gz" } ] }, "urls": [ { "comment_text": "", "digests": { "md5": "bdd409c567b47c291e63f1a763d5b1d2", "sha256": "17186d69713a7eaa655c61b73106764324f347168a5e586dca7226a8fd744e14" }, "downloads": -1, "filename": "Multiple_smi-2.0.3-py3-none-any.whl", "has_sig": false, "md5_digest": "bdd409c567b47c291e63f1a763d5b1d2", "packagetype": "bdist_wheel", "python_version": "py3", "requires_python": null, "size": 25092, "upload_time": "2019-07-19T16:44:16", "url": "https://files.pythonhosted.org/packages/b0/06/c2dc662cb8826b7ec15bcf546d6ac673b39e2bb6e0dee80f59d4d8c3dc96/Multiple_smi-2.0.3-py3-none-any.whl" }, { "comment_text": "", "digests": { "md5": "9a57021177530fbe04323fc915aeb778", "sha256": "e61cb0fefda1ab4a7448f3475dfe9eb3e17807d823bb9a6bb2c4ea32235793b8" }, "downloads": -1, "filename": "Multiple smi-2.0.3.tar.gz", "has_sig": false, "md5_digest": "9a57021177530fbe04323fc915aeb778", "packagetype": "sdist", "python_version": "source", "requires_python": null, "size": 15250, "upload_time": "2019-07-19T16:44:18", "url": "https://files.pythonhosted.org/packages/7c/a1/0bb0435482a523b1e161ba3f907d304a30314505668688015a3a10af2452/Multiple%20smi-2.0.3.tar.gz" } ] }