Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
milvus
milvus
提交
f7ecbff9
M
milvus
项目概览
milvus
/
milvus
10 个月 前同步成功
通知
260
Star
22476
Fork
2472
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
M
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
f7ecbff9
编写于
6月 30, 2023
作者:
Y
yah01
提交者:
GitHub
6月 30, 2023
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Make merged task channel buffered (#25242)
Signed-off-by:
N
yah01
<
yah2er0ne@outlook.com
>
上级
8b9e3f11
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
15 addition
and
11 deletion
+15
-11
internal/querynodev2/tasks/scheduler.go
internal/querynodev2/tasks/scheduler.go
+15
-11
未找到文件。
internal/querynodev2/tasks/scheduler.go
浏览文件 @
f7ecbff9
...
...
@@ -5,11 +5,13 @@ import (
"fmt"
"github.com/milvus-io/milvus/internal/querynodev2/collector"
"github.com/milvus-io/milvus/pkg/log"
"github.com/milvus-io/milvus/pkg/metrics"
"github.com/milvus-io/milvus/pkg/util/conc"
"github.com/milvus-io/milvus/pkg/util/metricsinfo"
"github.com/milvus-io/milvus/pkg/util/paramtable"
"go.uber.org/atomic"
"go.uber.org/zap"
)
const
(
...
...
@@ -31,7 +33,7 @@ func NewScheduler() *Scheduler {
return
&
Scheduler
{
searchWaitQueue
:
make
(
chan
*
SearchTask
,
maxWaitTaskNum
),
mergingSearchTasks
:
make
([]
*
SearchTask
,
0
),
mergedSearchTasks
:
make
(
chan
*
SearchTask
),
mergedSearchTasks
:
make
(
chan
*
SearchTask
,
1
),
pool
:
conc
.
NewPool
[
any
](
maxReadConcurrency
,
conc
.
WithPreAlloc
(
true
)),
waitingTaskTotalNQ
:
*
atomic
.
NewInt64
(
0
),
...
...
@@ -98,12 +100,13 @@ func (s *Scheduler) schedule(task Task) {
s
.
mergeTasks
(
task
)
metrics
.
QueryNodeReadTaskUnsolveLen
.
WithLabelValues
(
fmt
.
Sprint
(
paramtable
.
GetNodeID
()))
.
Dec
()
m
ergeLimit
:=
paramtable
.
Get
()
.
QueryNodeCfg
.
MaxGroupNQ
.
GetAsInt
()
mergeCount
:=
1
m
axNq
:=
paramtable
.
Get
()
.
QueryNodeCfg
.
MaxGroupNQ
.
GetAsInt64
()
totalNq
:=
task
.
(
*
SearchTask
)
.
nq
// try to merge the coming tasks
maxMergingTaskNum
:=
paramtable
.
Get
()
.
QueryNodeCfg
.
MaxUnsolvedQueueSize
.
GetAsInt
()
outer
:
for
mergeCount
<
mergeLimit
{
for
len
(
s
.
mergingSearchTasks
)
<
maxMergingTaskNum
&&
totalNq
<
maxNq
{
select
{
case
t
:=
<-
s
.
searchWaitQueue
:
if
err
:=
t
.
Canceled
();
err
!=
nil
{
...
...
@@ -111,7 +114,7 @@ outer:
continue
}
s
.
mergeTasks
(
t
)
mergeCount
++
totalNq
+=
t
.
nq
metrics
.
QueryNodeReadTaskUnsolveLen
.
WithLabelValues
(
fmt
.
Sprint
(
paramtable
.
GetNodeID
()))
.
Dec
()
default
:
break
outer
...
...
@@ -152,12 +155,13 @@ func (s *Scheduler) processAll(ctx context.Context) {
}
func
(
s
*
Scheduler
)
process
(
t
Task
)
{
err
:=
t
.
PreExecute
()
if
err
!=
nil
{
log
.
Warn
(
"failed to pre-execute task"
,
zap
.
Error
(
err
))
}
s
.
pool
.
Submit
(
func
()
(
any
,
error
)
{
metrics
.
QueryNodeReadTaskConcurrency
.
WithLabelValues
(
fmt
.
Sprint
(
paramtable
.
GetNodeID
()))
.
Inc
()
err
:=
t
.
PreExecute
()
if
err
!=
nil
{
return
nil
,
err
}
err
=
t
.
Execute
()
t
.
Done
(
err
)
...
...
@@ -177,8 +181,8 @@ func (s *Scheduler) mergeTasks(t Task) {
switch
t
:=
t
.
(
type
)
{
case
*
SearchTask
:
merged
:=
false
for
_
,
task
:=
range
s
.
mergingSearchTasks
{
if
task
.
Merge
(
t
)
{
for
i
:=
len
(
s
.
mergingSearchTasks
)
-
1
;
i
>=
0
;
i
--
{
if
s
.
mergingSearchTasks
[
i
]
.
Merge
(
t
)
{
merged
=
true
break
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录