该脚本用于测试 git 在不同存储介质的 IO 性能。
目前仅支持 linux 系统。
安装 git 、hyperfine,并克隆 tensorflow 的裸仓库到测试目录。
下载脚本:
$ wget https://amp-service.oss-cn-shanghai.aliyuncs.com/git-io-benchmark
$ chmod +x ./git-io-benchmark-d: 测试的目录,这个目录在你要测试的存储介质中,没有给定则使用当前目录。-e: 设置测试项和测试次数,每个测试项用/分隔,一个测试项后面跟随,可以设置测试次数,比如-einit,100/unpack,5表示测试 init 5 次,测试 unpack 5 次。目前包括的测试项有:init: 初始化一个裸仓库。默认测试 100 次。unpack: 解包一个约有 5w 个对象的 packfile。默认测试 3 次。fsck: 校验 5w 个松散对象。默认测试 20 次。repack_split: 对tensorflow做 repack ,生成多个 packfile。默认测试 3 次。repack_all: 对tensorflow做 repack ,只生成一个 packfile。默认测试 3 次。clone: clone 。默认测试 2 次。fetch: fetch 。默认测试 2 次。push_mirror: 推送 1w 个引用到本地仓库。默认测试 20 次。all: 测试所有项。
-t: 设置tensorflow.git的路径。-p: 添加该参数,测试仓库的objects/pack会软连接该路径,用于测试objects/pack软链到低价介质的性能场景。-v: 输出更多信息。-x: 显示 hyperfine 执行的命令输出。-h: 帮助。
示例:
$ ./git-io-benchmark.sh -d /home/xxw -eall -p /nas -v -t /home/xxw/workspace/oss/tensorflow.git
| hardware | disk | init | unpack | fsck | repack_split | repack_all | clone | fetch | push_mirror |
|---|---|---|---|---|---|---|---|---|---|
| AMD 5600X 6 CPU 32 GiB |
samsung 980 PRO | 12.5ms | 13.3s | 5.7s | 40.7s | 33.5s | 20.7s | 24.1s | 2.3s |
| AMD 5600X 6 CPU 32 GiB |
SSD NVMe 3.0 | 15.3ms | 7.7s | 5.5s | 38.7s | 32.7s | 19.1s | 21.7s | 466.9ms |
| AMD 5600X 6 CPU 32 GiB |
ramfs | 13.4ms | 7.1s | 16.8ms | 38.5s | 31.7s | 18.5s | 20.7s | 64.7ms |
| hardware | disk | init | unpack | fsck | repack_split | repack_all | clone | fetch | push_mirror |
|---|---|---|---|---|---|---|---|---|---|
| ecs.c5.4xlarge 16C32G |
ramfs | 37.7ms | 14.8s | 4.5s | 78.5s | 63.5s | 52.1s | 58.7s | 156.7ms |
| ecs.c5.4xlarge 16C32G |
ESSD PL1 | 34.1ms | 15.8s | 18.4s | 79.8s | 64.5s | 53.1s | 59.6s | 2.6s |
| ecs.c5.4xlarge 16C32G |
NAS 通用性能型 | 208.1ms | 760.6s | 137.8s | 85.0s | 69.8s | 57.8s | 70.2s | 43.3s |
| ecs.c5.4xlarge 16C32G |
高效云盘 | 36.4ms | 15.7s | 25.9s | 84.3s | 69.0s | 55.0s | 61.6s | 4.6s |
| ecs.c5.4xlarge 16C32G |
ESSD PL1 + NAS | 42.6ms | 15.7s | 18.0s | 79.1s | 66.2s | 53.1s | 63.9s | s |
| ecs.c5.4xlarge 16C32G |
NAS 极速型 TODO | 92.3ms | 308.0s | .0s | .1s | .2s | .1s | .9s | s |
ESSD PL1 + NAS表示仓库在 ESSD PL1 上,但是仓库的objects/pack挂在到 NAS 通用性能型上。- NAS 性能型的网络延时为 0.15ms ,NAS 极速型的网络延时为 0.17ms 。
- samsung 980 PRO 的磁盘文件格式为
NTFS。
