Indexing的调度瓶颈(Best Practices to Handle 50k partitions Per Cluster (Compaction/Indexing追不上的问题): 续)) #38998
Unanswered
xiaobingxia-at
asked this question in
Q&A and General discussion
Replies: 2 comments 13 replies
-
如果没有分配,会等待下一轮继续分配。 |
Beta Was this translation helpful? Give feedback.
12 replies
-
没有执行的所有任务,都在queueTasks里 queuetasks是通过compactionPlanHandler.schedule 写进去的。 |
Beta Was this translation helpful? Give feedback.
1 reply
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
context:#38996
https://github.com/milvus-io/milvus/blob/master/internal/datacoord/task_scheduler.go#L239-L263
有大量小partition,会产生大量indexing task,发现index task永远追不上。根据以上的indexing schedule逻辑,感觉会不会有问题。
每隔一秒钟:
下一秒钟:
但这个逻辑有个假设,现有的index slot可以承接所有的task。如果不是,indexing process会不会被永远阻塞?
比如我有3个indexing node slot,我assign了3个index task: 1, 2, 3给indexing node slots。
等我下一次轮询的时候,我的task map里,有6个index task了,是1,2,3,4,5,6。 somehow我查询的顺序是4,5,6,1,2,3 (因为我取的是一个task map的key,不是一个可以保证顺序的queue)。这样对于4,5,6,他会尝试assign index node slot,但是找不到,就退出循环。下一次,继续重复同样的事情。这样index task 1,2,3会被永远阻塞在最后一个状态中,然后其他index task没有机会再运行。
这个分析对吗?是不是应该把task scheduler里的tasks由map换成queue?
Beta Was this translation helpful? Give feedback.
All reactions