前言
記錄一下Faiss在項目使用中的一些優(yōu)化窗怒,對OMP_NUM_THREADS 環(huán)境變量參數(shù)的測試驗證~
OMP_NUM_THREADS 用于控制線程并發(fā)數(shù).
測試條件:單個循環(huán)請求谤职,持續(xù)時間大于15m;
基礎(chǔ)數(shù)據(jù):200w
軟件環(huán)境:docker; ubuntu 16.04 ;python2.7; faiss:1.4.0-cpu
檢索服務(wù)功能: (漢明距離計算 + 歐式距離計算 )
結(jié)論:
測試總結(jié)如下:
* CPU=1 & OMP_NUM_THREADS=1時蓖扑,
- 1m,5m,15m load average 分布為 31.54浴捆,41.16捉偏,43.43;
- CPUs(%) 用戶空間占比:32.1;內(nèi)核空間占比:2.4;空閑占比:65.2鸦做;
- faiss 檢索耗時大約在5-6ms左右出革;
- 檢索服務(wù)整體響應時間較平穩(wěn)叠萍,大部分在12ms左右;
* CPU=3 & OMP_NUM_THREADS=1時芝发,
- 1m,5m,15m load average 分布為 49.17,48.70苛谷,50.54;
- CPUs(%) 用戶空間占比:39.5;內(nèi)核空間占比:4.2;空閑占比:30.3辅鲸;
- faiss 檢索耗時大約在5-7ms左右;
- 檢索服務(wù)整體響應時間較平穩(wěn)腹殿,大部分耗時在12ms左右;
* CPU=3 & OMP_NUM_THREADS=10時,
- 1m,5m,15m load average 分布為 41.33独悴,43.90,55.87;
- CPUs(%) 用戶空間占比:20.7;內(nèi)核空間占比:2.3;空閑占比:58.0锣尉;
- faiss 檢索耗時不穩(wěn)定刻炒,抖動較大, 大約在10-90ms左右;
- 檢索服務(wù)整體響應時間存在抖動自沧,大約在14-92ms左右;
* CPU=1 & OMP_NUM_THREADS=10時,
- 1m,5m,15m load average 分布為 67.77落蝙,61.89,61.07;
- CPUs(%) 用戶空間占比:20.6;內(nèi)核空間占比:2.9;空閑占比:18.2;
- faiss 檢索耗時不穩(wěn)定筏勒,抖動較大, 大約在5-80ms左右移迫;
- 檢索服務(wù)整體響應時間存在抖動,大約在13-99ms左右;
最終結(jié)論:
a: OMP_NUM_THREADS=1時管行,faiss檢索耗時較穩(wěn)定;
b: OMP_NUM_THREADS=10時厨埋,faiss檢索耗時不穩(wěn)定,抖動較大;
b: OMP_NUM_THREADS=1時, 多核CPU相較于單核CPU捐顷,負載略高荡陷,利用率略高,空閑占比較低迅涮;
c: OMP_NUM_THREADS=10時, 多核CPU相較于單核CPU废赞,負載較低,利用率較低叮姑,空閑占比較高唉地;
d: 優(yōu)化方向:OMP_NUM_THREADS=1 + 多進程
測試結(jié)果統(tǒng)計:
* CPU=1 & OMP_NUM_THREADS=1
CPU=1 & OMP_NUM_THREADS=1 內(nèi)存情況
CPU=1 & OMP_NUM_THREADS=1 faiss 檢索時間
CPU=1 & OMP_NUM_THREADS=1 檢索服務(wù)整體響應時間
* CPU=3 & OMP_NUM_THREADS=1
CPU=3 & OMP_NUM_THREADS=1 內(nèi)存情況
CPU=3 & OMP_NUM_THREADS=1 faiss 檢索時間
CPU=3 & OMP_NUM_THREADS=1 檢索服務(wù)整體響應時間
* CPU=3 & OMP_NUM_THREADS=10
CPU=3 & OMP_NUM_THREADS=10 內(nèi)存情況
CPU=3 & OMP_NUM_THREADS=10 faiss 檢索時間
CPU=3 & OMP_NUM_THREADS=10 檢索服務(wù)整體響應時間
* CPU=1 & OMP_NUM_THREADS=10
CPU=1 & OMP_NUM_THREADS=10 內(nèi)存情況
CPU=1 & OMP_NUM_THREADS=10 faiss 檢索時間
CPU=1 & OMP_NUM_THREADS=10 檢索服務(wù)整體響應時間