物理机:
CPU:E5-2680V4@2.4G 14核心28线程; RAM:2*16GB = 32GB;GPU:Tesla P4
fnOS 1.1.23; 相册:0.8.61;GPU驱动安装正常(Driver Version: 560.28.03 CUDA Version: 12.6,相册中启用GPU正常
错误现象:
在人脸识别时,日志中会出现下面的错误日志
[12 15:52:00.419] [warning] [4177] [PERF]Slow request, req id:c074df19793e84ed, method:com.trim.imagesrv.cropping, cost:1324
[12 15:52:17.299] [warning] [4177] [PERF]Slow request, req id:37fa323fe81f3e81, method:com.trim.imagesrv.cropping, cost:1204
[12 15:52:22.189] [warning] [4178] [PERF]Slow request, req id:0d045c5981496ebf, method:com.trim.imagesrv.cropping, cost:1888
[12 15:52:30.193] [warning] [4178] [PERF]Slow request, req id:5c81b3e69b410170, method:com.trim.imagesrv.cropping, cost:4100
[12 15:52:37.340] [warning] [4177] [PERF]Slow request, req id:55aa5443f60fcb77, method:com.trim.imagesrv.cropping, cost:1217
经查,出现该错误时所提示的图片,都是合照类图片,即图片上有多个人脸的图片。识别时,程序要先从合照中cropping出单个人脸。其中cost后面的数字,表示cropping的时长。上面的日志中,最长的为4.1秒(已经增加了相关程序的进程数量)。下面是程序默认进程时的原始日志,可见在默认状态下,这个时间更长。
[11 15:39:11.858] [warning] [4323] [PERF]Slow request, req id:32a9813a4d0a0b73, method:com.trim.imagesrv.cropping, cost:50016
[11 15:39:20.399] [warning] [4322] [PERF]Slow request, req id:f00c5bea7ec3ac78, method:com.trim.imagesrv.cropping, cost:30945
[11 15:45:58.031] [warning] [4322] [PERF]Slow request, req id:0fb7dedce57ea189, method:com.trim.imagesrv.cropping, cost:15721
[11 16:44:20.730] [warning] [213442] [PERF]Slow request, req id:bf5dc8e64ca5b1d5, method:com.trim.imagesrv.cropping, cost:45240
这个问题的表象是:人脸识别很慢。
同时,出现该错误时,大概率出现“TRPC read timeout" 问题(请见该 案例)
分析:
1、经过观察这个错误仅出现在imagesrv进程的两个固定的子进程中 (imagesrv默认启动1个进程(2个子进程);即使手工启动多个imagesrv进程,上述错误仍只出现在2个固定的子进程中,其它子进程中不会出现)
2、对合照图片进行cropping操作时,没有调用GPU,而cropping类操作,GPU是比CPU更擅长的。
这是在追踪tesla P4在人脸识别时不被调用(其实有时是上面的问题导致的慢,表面看似乎没调用)时发现的。
解决办法(设想):
能否通过配置使得 imagesrv 的多个子进程都进行cropping操作(而不是固定的2个),或者调用GPU进行cropping操作。这样可以大幅减少cropping的时延,从而提升人脸识别的速度。
另:在案例 https://club.fnnas.com/forum.php?mod=viewthread&tid=18140&highlight= 中,飞牛技术同学 简单的认为 ”...是设备性能不足导致的识别超时的情况" ,似乎并未找到根因。(对设备性能 并未给出具体定义;上面列出的硬件性能不能说不足)。