服务器配置相同服务性能不一样排查

4 篇文章 0 订阅
2 篇文章 0 订阅

背景

  • 查看响应时间日志,新增加的两台GPU机器服务器响应时间要比老的机器要快3倍
  • qps 相似,机型一模一样,同一个服务和同样的模型

排查

  • htop 查看老机器开启了 swap, 新机器关闭了swap,于是将老机器的 swap 关闭,然而并没有效果

  • prometheus 比对两台机器的运行差异,除了老机器CPU使用率和负载都比新机器高以外其余的指标全部都接近,排除磁盘、网络等问题

  • export -p 对比环境变量一样,排除环境变量问题

  • lsof -p 进程ID| grep mem |awk -F [" ":]+ '{print $8}' 拿到python3运行环境依赖的库进行比对, 发现运行时类库有些不一样,联系算法同学升级版本和对比原因
    运行类库差异

    • opencv 版本不一致,升级版本为一致, pip3 list|grep opencv
    • Pillow 版本不一致,升级版本为一致,pip3 list|grep Pillow
    • 为什么跑的快的机器有用到 onnxruntime_gpu.libs/libz-eb09ad1d.so.1.2.3, 跑的慢的机器没有用这个类库,算法同学找到关键点了

解决

在慢的机器上运行 pip3 list 发现有同时安装 onnxruntime 和 onnxruntime-gpu, 于是测试

$ pip3 list|grep onnxruntime
onnxruntime               1.4.0
onnxruntime-gpu           1.4.0
$ python3
>>>import onnxruntime
>>>onnxruntime.get_device(); 
'CPU'

终于找到原因了,就是因为onnxruntime全部是在CPU上计算的,导致服务器的CPU利用率过高,GPU反而没有怎么利用,于是卸载pip3 uninstall onnxruntime onnxruntime-gpu, 然后重新安装gpu版本pip3 install onnxruntime-gpu==1.4,最后再重启服务,人脸识别模型的服务响应速度由800毫秒提升到250毫秒

原因分析

TODO,我不是搞算法和运维的,求大神解答

  • 为什么同时安装onnxruntime和onnxruntime-gpu的时候,onnxruntime默认会使用CPU呢?
  • 我们的开发机器上面都有同时安装这两个库,为什么默认使用的就是GPU?
    • 经过算法同学测试,是和onnxruntime和onnxruntime-gpu安装先后顺序有关,onnxruntime最后安装就默认使用CPU,onnxruntime-gpu安装就默认使用GPU
    • python 使用 onnxruntime 这篇文章有一句话就是If you only want to use CPU ( DONT run this when you want to use GPU) pip install onnxruntime
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值