Skip to content

Commit

Permalink
enhance: limit the max pool size to 16 (milvus-io#30371)
Browse files Browse the repository at this point in the history
according to our benchmark, concurrency level 16 is enough to fully
utilize the object storage network bandwidth

Signed-off-by: yah01 <[email protected]>
  • Loading branch information
yah01 authored Jan 31, 2024
1 parent e6daff4 commit 878c4c9
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 5 deletions.
11 changes: 7 additions & 4 deletions internal/core/src/storage/ThreadPool.h
Original file line number Diff line number Diff line change
Expand Up @@ -41,10 +41,13 @@ class ThreadPool {
max_threads_size_ = CPU_NUM * thread_core_coefficient;

// only IO pool will set large limit, but the CPU helps nothing to IO operations,
// we need to limit the max thread num, each thread will download 16 MiB data,
// it should be not greater than 256 (4GiB data) to avoid OOM and send too many requests to object storage
if (max_threads_size_ > 256) {
max_threads_size_ = 256;
// we need to limit the max thread num, each thread will download 16~64 MiB data,
// according to our benchmark, 16 threads is enough to saturate the network bandwidth.
if (min_threads_size_ > 16) {
min_threads_size_ = 16;
}
if (max_threads_size_ > 16) {
max_threads_size_ = 16;
}
LOG_INFO("Init thread pool:{}", name_)
<< " with min worker num:" << min_threads_size_
Expand Down
6 changes: 5 additions & 1 deletion internal/querynodev2/segments/pool.go
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,12 @@ func initDynamicPool() {
func initLoadPool() {
loadOnce.Do(func() {
pt := paramtable.Get()
poolSize := hardware.GetCPUNum() * pt.CommonCfg.MiddlePriorityThreadCoreCoefficient.GetAsInt()
if poolSize > 16 {
poolSize = 16
}
pool := conc.NewPool[any](
hardware.GetCPUNum()*pt.CommonCfg.MiddlePriorityThreadCoreCoefficient.GetAsInt(),
poolSize,
conc.WithPreAlloc(false),
conc.WithDisablePurge(false),
conc.WithPreHandler(runtime.LockOSThread), // lock os thread for cgo thread disposal
Expand Down

0 comments on commit 878c4c9

Please sign in to comment.