Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
milvus
提交
57eabe26
milvus
项目概览
BaiXuePrincess
/
milvus
与 Fork 源项目一致
从无法访问的项目Fork
通知
7
Star
4
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
milvus
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
57eabe26
编写于
9月 09, 2019
作者:
W
wxyu
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
MS-531 Disable next version code
Former-commit-id: d4148022dd1c10a8c9da0c2119e359cc37e4f53f
上级
67c057e7
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
47 addition
and
45 deletion
+47
-45
cpp/CHANGELOG.md
cpp/CHANGELOG.md
+1
-0
cpp/src/scheduler/Scheduler.cpp
cpp/src/scheduler/Scheduler.cpp
+46
-45
未找到文件。
cpp/CHANGELOG.md
浏览文件 @
57eabe26
...
@@ -108,6 +108,7 @@ Please mark all change in change log and use the ticket from JIRA.
...
@@ -108,6 +108,7 @@ Please mark all change in change log and use the ticket from JIRA.
-
MS-527 - Update scheduler_test and enable it
-
MS-527 - Update scheduler_test and enable it
-
MS-528 - Hide some config used future
-
MS-528 - Hide some config used future
-
MS-530 - Add unittest for SearchTask->Load
-
MS-530 - Add unittest for SearchTask->Load
-
MS-531 - Disable next version code
## New Feature
## New Feature
-
MS-343 - Implement ResourceMgr
-
MS-343 - Implement ResourceMgr
...
...
cpp/src/scheduler/Scheduler.cpp
浏览文件 @
57eabe26
...
@@ -145,51 +145,52 @@ Scheduler::OnLoadCompleted(const EventPtr &event) {
...
@@ -145,51 +145,52 @@ Scheduler::OnLoadCompleted(const EventPtr &event) {
break
;
break
;
}
}
case
TaskLabelType
::
SPECIFIED_RESOURCE
:
{
case
TaskLabelType
::
SPECIFIED_RESOURCE
:
{
auto
self
=
event
->
resource_
.
lock
();
// support next version
auto
task
=
load_completed_event
->
task_table_item_
->
task
;
// auto self = event->resource_.lock();
// auto task = load_completed_event->task_table_item_->task;
// if this resource is disk, assign it to smallest cost resource
//
if
(
self
->
type
()
==
ResourceType
::
DISK
)
{
// // if this resource is disk, assign it to smallest cost resource
// step 1: calculate shortest path per resource, from disk to compute resource
// if (self->type() == ResourceType::DISK) {
auto
compute_resources
=
res_mgr_
.
lock
()
->
GetComputeResources
();
// // step 1: calculate shortest path per resource, from disk to compute resource
std
::
vector
<
std
::
vector
<
std
::
string
>>
paths
;
// auto compute_resources = res_mgr_.lock()->GetComputeResources();
std
::
vector
<
uint64_t
>
transport_costs
;
// std::vector<std::vector<std::string>> paths;
for
(
auto
&
res
:
compute_resources
)
{
// std::vector<uint64_t> transport_costs;
std
::
vector
<
std
::
string
>
path
;
// for (auto &res : compute_resources) {
uint64_t
transport_cost
=
ShortestPath
(
self
,
res
,
res_mgr_
.
lock
(),
path
);
// std::vector<std::string> path;
transport_costs
.
push_back
(
transport_cost
);
// uint64_t transport_cost = ShortestPath(self, res, res_mgr_.lock(), path);
paths
.
emplace_back
(
path
);
// transport_costs.push_back(transport_cost);
}
// paths.emplace_back(path);
// }
// step 2: select min cost, cost(resource) = avg_cost * task_to_do + transport_cost
//
uint64_t
min_cost
=
std
::
numeric_limits
<
uint64_t
>::
max
();
// // step 2: select min cost, cost(resource) = avg_cost * task_to_do + transport_cost
uint64_t
min_cost_idx
=
0
;
// uint64_t min_cost = std::numeric_limits<uint64_t>::max();
for
(
uint64_t
i
=
0
;
i
<
compute_resources
.
size
();
++
i
)
{
// uint64_t min_cost_idx = 0;
if
(
compute_resources
[
i
]
->
TotalTasks
()
==
0
)
{
// for (uint64_t i = 0; i < compute_resources.size(); ++i) {
min_cost_idx
=
i
;
// if (compute_resources[i]->TotalTasks() == 0) {
break
;
// min_cost_idx = i;
}
// break;
uint64_t
cost
=
compute_resources
[
i
]
->
TaskAvgCost
()
*
compute_resources
[
i
]
->
NumOfTaskToExec
()
// }
+
transport_costs
[
i
];
// uint64_t cost = compute_resources[i]->TaskAvgCost() * compute_resources[i]->NumOfTaskToExec()
if
(
min_cost
>
cost
)
{
// + transport_costs[i];
min_cost
=
cost
;
// if (min_cost > cost) {
min_cost_idx
=
i
;
// min_cost = cost;
}
// min_cost_idx = i;
}
// }
// }
// step 3: set path in task
//
Path
task_path
(
paths
[
min_cost_idx
],
paths
[
min_cost_idx
].
size
()
-
1
);
// // step 3: set path in task
task
->
path
()
=
task_path
;
// Path task_path(paths[min_cost_idx], paths[min_cost_idx].size() - 1);
}
// task->path() = task_path;
// }
if
(
self
->
name
()
==
task
->
path
().
Last
())
{
//
self
->
WakeupLoader
();
// if (self->name() == task->path().Last()) {
}
else
{
// self->WakeupLoader();
auto
next_res_name
=
task
->
path
().
Next
();
// } else {
auto
next_res
=
res_mgr_
.
lock
()
->
GetResource
(
next_res_name
);
// auto next_res_name = task->path().Next();
load_completed_event
->
task_table_item_
->
Move
();
// auto next_res = res_mgr_.lock()->GetResource(next_res_name);
next_res
->
task_table
().
Put
(
task
);
// load_completed_event->task_table_item_->Move();
}
// next_res->task_table().Put(task);
// }
break
;
break
;
}
}
case
TaskLabelType
::
BROADCAST
:
{
case
TaskLabelType
::
BROADCAST
:
{
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录