# `gcustat`
一个能够简洁的显示燧原GCU设备状态的命令行工具;
之前使用GPU时习惯了使用工具 [`gpustat`](https://github.com/wookayin/gpustat) 查看GPU状态,使用燧原的GCU设备之后发现并没有类似的工具,于是仿照 [`gpustat`](https://github.com/wookayin/gpustat) 自己写了一个;
显示效果如下图:
<img src="https://user-images.githubusercontent.com/50796589/147898619-79ada678-6709-48f2-bdb5-9366f0db2ee0.png" width="80%" height="80%" alt="gcustat png" align=center />
主要解决命令 `efsmi -- 和 efsmi --dmon` 的两个缺点:
* efsmi --,显示的信息总是特别长,笔记本单屏显示不下;
* efsmi --dmon,同一芯片每次展示不在屏幕的同一位置,观察该芯片的变化较困难;
## 依赖说明
python版本要求:`python>=3.6`;
基础软件方面依赖说明:
目前仅在配置了8张T20卡,及 EFSMI V1.20.0版本上进行了测试,功能正常;所以在其他设备上难免会有问题,欢迎反馈问题;有任何优化建议也欢迎反馈;
## 安装说明
从源码进行安装:
```
python3.6 setup.py install
```
或通过命令生产whl安装包,然后分发该whl包进行安装
```
python3.6 setup.py bdist_wheel
```
## 使用说明
使用如下命令单次获取当前GCU设备信息:
```shell
gcustat
```
使用如下命令动态刷新当前GCU设备信息,默认每5秒刷新一次:
```
gcustat --watch
```
可选参数如下:
```
usage: gcustat [-h] [--json] [-i [INTERVAL]] [--no-header] [--no-title]
[--no-cache] [--force-color] [--no-color]
[--show-busid] [--show-power] [--compact] [--debug] [-v]
optional arguments:
-h, --help show this help message and exit
--json 将所有结果输出为JSON格式;
-i [INTERVAL], --interval [INTERVAL], --watch [INTERVAL]
动态刷新模式;INTERVAL为刷新间隔,单位:秒;默认每2秒刷新一次;
--no-header 是否隐藏 header 信息;header 信息包含机器名称、当前时间、版本号;默认展示 header 信息,配置该参数后 header 信息不再展示;
--no-title 是否隐藏 title 信息;title 信息为对当前设备状态值各字段的说明;默认展示 title 信息,配置该参数后 title 信息不再展示;
--show-busid 是否展示加速卡的BUSID信息,默认不展示;
--show-power 是否展示加速卡的功率信息,默认不展示;
--compact 是否采用紧凑模式展示信息,默认为不采用;紧凑模式下会去掉空白行及其他无意义的行,适用于加速卡较多,显示器较小,屏幕显示不下的情况;
--no-cache 是否缓存第一次获取到的GCU静态信息,只更新GCU卡的动态信息,默认为采用;
--force-color, --color
强制带颜色方式显示GCU状态信息
--no-color 禁止带颜色方式显示GCU状态信息
--debug Debug模式时允许在程序出错的情况下打印更多的调试信息;
-v, --version show program's version number and exit
```
#### 常规模式与紧凑模式对比
| `gcustat --watch` | `gcustat --watch --compact` |
| :-: | :-: |
| ![](./docs/normal.png) | ![](./docs/compact.png) |
#### 另外:
比较遗憾的是,本项目也不具有显示每个设备上运行了哪些进程的功能;
## 显示内容说明
```
machine_name Sun Oct 8 14:16:24 2023
[ID] 名字 | 温度°C, 占用率 % | 已用内存 / 总内存 MB |
[0] [T20] |30.8°C, 0.0 % | 0 / 32768 MB |
[1] [T20] |30.7°C, 0.0 % | 0 / 32768 MB |
[2] [T20] |30.5°C, 0.0 % | 0 / 32768 MB |
[3] [T20] |30.2°C, 0.0 % | 0 / 32768 MB |
[4] [T20] |32.2°C, 0.0 % | 0 / 32768 MB |
[5] [T20] |32.0°C, 0.0 % | 0 / 32768 MB |
[6] [T20] |33.2°C, 0.0 % | 0 / 32768 MB |
[7] [T20] |32.2°C, 0.0 % | 0 / 32768 MB |
```
* header:第1行为header,可以使用参数 `--no-header` 不展示该信息;展示的信息从左到右依次为机器名称、当前时间、软件 `efsmi` 的版本;
* title:第2行为title,可以使用参数 `--no-title` 不展示该信息;title是对后面展示的信息的各字段的说明;
## Reference
[`gpustat`](https://github.com/wookayin/gpustat)
## License
[MIT License](./LICENSE)
Raw data
{
"_id": null,
"home_page": "https://www.enflame-tech.com/",
"name": "gcustat",
"maintainer": null,
"docs_url": null,
"requires_python": ">=3.6",
"maintainer_email": null,
"keywords": "enflame gcu monitoring gcustat",
"author": "xinmin.peng",
"author_email": "xinmin.peng@enflame-tech.com",
"download_url": null,
"platform": null,
"description": "# `gcustat`\n\n\u4e00\u4e2a\u80fd\u591f\u7b80\u6d01\u7684\u663e\u793a\u71e7\u539fGCU\u8bbe\u5907\u72b6\u6001\u7684\u547d\u4ee4\u884c\u5de5\u5177\uff1b\n\n\u4e4b\u524d\u4f7f\u7528GPU\u65f6\u4e60\u60ef\u4e86\u4f7f\u7528\u5de5\u5177 [`gpustat`](https://github.com/wookayin/gpustat) \u67e5\u770bGPU\u72b6\u6001\uff0c\u4f7f\u7528\u71e7\u539f\u7684GCU\u8bbe\u5907\u4e4b\u540e\u53d1\u73b0\u5e76\u6ca1\u6709\u7c7b\u4f3c\u7684\u5de5\u5177\uff0c\u4e8e\u662f\u4eff\u7167 [`gpustat`](https://github.com/wookayin/gpustat) \u81ea\u5df1\u5199\u4e86\u4e00\u4e2a\uff1b\n\u663e\u793a\u6548\u679c\u5982\u4e0b\u56fe\uff1a\n\n <img src=\"https://user-images.githubusercontent.com/50796589/147898619-79ada678-6709-48f2-bdb5-9366f0db2ee0.png\" width=\"80%\" height=\"80%\" alt=\"gcustat png\" align=center />\n\n\u4e3b\u8981\u89e3\u51b3\u547d\u4ee4 `efsmi -- \u548c efsmi --dmon` \u7684\u4e24\u4e2a\u7f3a\u70b9\uff1a\n\n* efsmi --\uff0c\u663e\u793a\u7684\u4fe1\u606f\u603b\u662f\u7279\u522b\u957f\uff0c\u7b14\u8bb0\u672c\u5355\u5c4f\u663e\u793a\u4e0d\u4e0b\uff1b\n* efsmi --dmon\uff0c\u540c\u4e00\u82af\u7247\u6bcf\u6b21\u5c55\u793a\u4e0d\u5728\u5c4f\u5e55\u7684\u540c\u4e00\u4f4d\u7f6e\uff0c\u89c2\u5bdf\u8be5\u82af\u7247\u7684\u53d8\u5316\u8f83\u56f0\u96be\uff1b\n\n## \u4f9d\u8d56\u8bf4\u660e\n\npython\u7248\u672c\u8981\u6c42\uff1a`python>=3.6`\uff1b\n\n\u57fa\u7840\u8f6f\u4ef6\u65b9\u9762\u4f9d\u8d56\u8bf4\u660e\uff1a\n\u76ee\u524d\u4ec5\u5728\u914d\u7f6e\u4e868\u5f20T20\u5361\uff0c\u53ca EFSMI V1.20.0\u7248\u672c\u4e0a\u8fdb\u884c\u4e86\u6d4b\u8bd5\uff0c\u529f\u80fd\u6b63\u5e38\uff1b\u6240\u4ee5\u5728\u5176\u4ed6\u8bbe\u5907\u4e0a\u96be\u514d\u4f1a\u6709\u95ee\u9898\uff0c\u6b22\u8fce\u53cd\u9988\u95ee\u9898\uff1b\u6709\u4efb\u4f55\u4f18\u5316\u5efa\u8bae\u4e5f\u6b22\u8fce\u53cd\u9988\uff1b\n\n## \u5b89\u88c5\u8bf4\u660e\n\n\u4ece\u6e90\u7801\u8fdb\u884c\u5b89\u88c5\uff1a\n\n```\npython3.6 setup.py install\n```\n\u6216\u901a\u8fc7\u547d\u4ee4\u751f\u4ea7whl\u5b89\u88c5\u5305\uff0c\u7136\u540e\u5206\u53d1\u8be5whl\u5305\u8fdb\u884c\u5b89\u88c5\n```\npython3.6 setup.py bdist_wheel\n```\n\n## \u4f7f\u7528\u8bf4\u660e\n\n\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u5355\u6b21\u83b7\u53d6\u5f53\u524dGCU\u8bbe\u5907\u4fe1\u606f\uff1a\n\n```shell\ngcustat\n```\n\n\u4f7f\u7528\u5982\u4e0b\u547d\u4ee4\u52a8\u6001\u5237\u65b0\u5f53\u524dGCU\u8bbe\u5907\u4fe1\u606f\uff0c\u9ed8\u8ba4\u6bcf5\u79d2\u5237\u65b0\u4e00\u6b21\uff1a\n\n```\ngcustat --watch\n```\n\n\u53ef\u9009\u53c2\u6570\u5982\u4e0b\uff1a\n\n```\nusage: gcustat [-h] [--json] [-i [INTERVAL]] [--no-header] [--no-title]\n [--no-cache] [--force-color] [--no-color]\n [--show-busid] [--show-power] [--compact] [--debug] [-v]\n\noptional arguments:\n -h, --help show this help message and exit\n\n --json \u5c06\u6240\u6709\u7ed3\u679c\u8f93\u51fa\u4e3aJSON\u683c\u5f0f\uff1b\n\n -i [INTERVAL], --interval [INTERVAL], --watch [INTERVAL]\n \u52a8\u6001\u5237\u65b0\u6a21\u5f0f\uff1bINTERVAL\u4e3a\u5237\u65b0\u95f4\u9694\uff0c\u5355\u4f4d\uff1a\u79d2\uff1b\u9ed8\u8ba4\u6bcf2\u79d2\u5237\u65b0\u4e00\u6b21\uff1b\n\n --no-header \u662f\u5426\u9690\u85cf header \u4fe1\u606f\uff1bheader \u4fe1\u606f\u5305\u542b\u673a\u5668\u540d\u79f0\u3001\u5f53\u524d\u65f6\u95f4\u3001\u7248\u672c\u53f7\uff1b\u9ed8\u8ba4\u5c55\u793a header \u4fe1\u606f\uff0c\u914d\u7f6e\u8be5\u53c2\u6570\u540e header \u4fe1\u606f\u4e0d\u518d\u5c55\u793a\uff1b\n\n --no-title \u662f\u5426\u9690\u85cf title \u4fe1\u606f\uff1btitle \u4fe1\u606f\u4e3a\u5bf9\u5f53\u524d\u8bbe\u5907\u72b6\u6001\u503c\u5404\u5b57\u6bb5\u7684\u8bf4\u660e\uff1b\u9ed8\u8ba4\u5c55\u793a title \u4fe1\u606f\uff0c\u914d\u7f6e\u8be5\u53c2\u6570\u540e title \u4fe1\u606f\u4e0d\u518d\u5c55\u793a\uff1b\n\n --show-busid \u662f\u5426\u5c55\u793a\u52a0\u901f\u5361\u7684BUSID\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e0d\u5c55\u793a\uff1b\n\n --show-power \u662f\u5426\u5c55\u793a\u52a0\u901f\u5361\u7684\u529f\u7387\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e0d\u5c55\u793a\uff1b\n\n --compact \u662f\u5426\u91c7\u7528\u7d27\u51d1\u6a21\u5f0f\u5c55\u793a\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e3a\u4e0d\u91c7\u7528\uff1b\u7d27\u51d1\u6a21\u5f0f\u4e0b\u4f1a\u53bb\u6389\u7a7a\u767d\u884c\u53ca\u5176\u4ed6\u65e0\u610f\u4e49\u7684\u884c\uff0c\u9002\u7528\u4e8e\u52a0\u901f\u5361\u8f83\u591a\uff0c\u663e\u793a\u5668\u8f83\u5c0f\uff0c\u5c4f\u5e55\u663e\u793a\u4e0d\u4e0b\u7684\u60c5\u51b5\uff1b\n\n --no-cache \u662f\u5426\u7f13\u5b58\u7b2c\u4e00\u6b21\u83b7\u53d6\u5230\u7684GCU\u9759\u6001\u4fe1\u606f\uff0c\u53ea\u66f4\u65b0GCU\u5361\u7684\u52a8\u6001\u4fe1\u606f\uff0c\u9ed8\u8ba4\u4e3a\u91c7\u7528\uff1b\n\n --force-color, --color\n \u5f3a\u5236\u5e26\u989c\u8272\u65b9\u5f0f\u663e\u793aGCU\u72b6\u6001\u4fe1\u606f\n\n --no-color \u7981\u6b62\u5e26\u989c\u8272\u65b9\u5f0f\u663e\u793aGCU\u72b6\u6001\u4fe1\u606f\n\n --debug Debug\u6a21\u5f0f\u65f6\u5141\u8bb8\u5728\u7a0b\u5e8f\u51fa\u9519\u7684\u60c5\u51b5\u4e0b\u6253\u5370\u66f4\u591a\u7684\u8c03\u8bd5\u4fe1\u606f\uff1b\n\n -v, --version show program's version number and exit\n```\n\n#### \u5e38\u89c4\u6a21\u5f0f\u4e0e\u7d27\u51d1\u6a21\u5f0f\u5bf9\u6bd4\n\n| `gcustat --watch` | `gcustat --watch --compact` |\n| :-: | :-: |\n| ![](./docs/normal.png) | ![](./docs/compact.png) |\n\n#### \u53e6\u5916\uff1a\n\n\u6bd4\u8f83\u9057\u61be\u7684\u662f\uff0c\u672c\u9879\u76ee\u4e5f\u4e0d\u5177\u6709\u663e\u793a\u6bcf\u4e2a\u8bbe\u5907\u4e0a\u8fd0\u884c\u4e86\u54ea\u4e9b\u8fdb\u7a0b\u7684\u529f\u80fd\uff1b\n\n## \u663e\u793a\u5185\u5bb9\u8bf4\u660e\n\n```\nmachine_name Sun Oct 8 14:16:24 2023\n[ID] \u540d\u5b57 | \u6e29\u5ea6\u00b0C, \u5360\u7528\u7387 % | \u5df2\u7528\u5185\u5b58 / \u603b\u5185\u5b58 MB |\n[0] [T20] |30.8\u00b0C, 0.0 % | 0 / 32768 MB |\n[1] [T20] |30.7\u00b0C, 0.0 % | 0 / 32768 MB |\n[2] [T20] |30.5\u00b0C, 0.0 % | 0 / 32768 MB |\n[3] [T20] |30.2\u00b0C, 0.0 % | 0 / 32768 MB |\n[4] [T20] |32.2\u00b0C, 0.0 % | 0 / 32768 MB |\n[5] [T20] |32.0\u00b0C, 0.0 % | 0 / 32768 MB |\n[6] [T20] |33.2\u00b0C, 0.0 % | 0 / 32768 MB |\n[7] [T20] |32.2\u00b0C, 0.0 % | 0 / 32768 MB |\n```\n\n* header\uff1a\u7b2c1\u884c\u4e3aheader\uff0c\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570 `--no-header` \u4e0d\u5c55\u793a\u8be5\u4fe1\u606f\uff1b\u5c55\u793a\u7684\u4fe1\u606f\u4ece\u5de6\u5230\u53f3\u4f9d\u6b21\u4e3a\u673a\u5668\u540d\u79f0\u3001\u5f53\u524d\u65f6\u95f4\u3001\u8f6f\u4ef6 `efsmi` \u7684\u7248\u672c\uff1b\n\n* title\uff1a\u7b2c2\u884c\u4e3atitle\uff0c\u53ef\u4ee5\u4f7f\u7528\u53c2\u6570 `--no-title` \u4e0d\u5c55\u793a\u8be5\u4fe1\u606f\uff1btitle\u662f\u5bf9\u540e\u9762\u5c55\u793a\u7684\u4fe1\u606f\u7684\u5404\u5b57\u6bb5\u7684\u8bf4\u660e\uff1b\n\n## Reference\n\n[`gpustat`](https://github.com/wookayin/gpustat)\n\n## License\n\n[MIT License](./LICENSE)\n\n\n",
"bugtrack_url": null,
"license": "MIT",
"summary": "An utility to monitor Enflame GCU card status and usage",
"version": "0.0.7",
"project_urls": {
"Homepage": "https://www.enflame-tech.com/"
},
"split_keywords": [
"enflame",
"gcu",
"monitoring",
"gcustat"
],
"urls": [
{
"comment_text": "",
"digests": {
"blake2b_256": "ca707ad107c1cace8bf1b95bf878a941dd84dce8a921d6567cb08fac443df293",
"md5": "e5ab14a6108211a14197f27542008bb1",
"sha256": "f00bd97ccae8f7a83240cf87617a7c8da550a73ea0561ee23e7b32fb30cb6214"
},
"downloads": -1,
"filename": "gcustat-0.0.7-py3-none-any.whl",
"has_sig": false,
"md5_digest": "e5ab14a6108211a14197f27542008bb1",
"packagetype": "bdist_wheel",
"python_version": "py3",
"requires_python": ">=3.6",
"size": 13065,
"upload_time": "2024-07-21T13:40:51",
"upload_time_iso_8601": "2024-07-21T13:40:51.150976Z",
"url": "https://files.pythonhosted.org/packages/ca/70/7ad107c1cace8bf1b95bf878a941dd84dce8a921d6567cb08fac443df293/gcustat-0.0.7-py3-none-any.whl",
"yanked": false,
"yanked_reason": null
}
],
"upload_time": "2024-07-21 13:40:51",
"github": false,
"gitlab": false,
"bitbucket": false,
"codeberg": false,
"lcname": "gcustat"
}