fix milvus forceMerge support targetSize config - #861
Conversation
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: frankleaf The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
|
@frankleaf Could you clarify the benchmark use case for this option?
|
|
@XuanYang-cn thank you, but I understand that this safe limit is constrained by cluster resources(dn/qn) and derived through a system-level calculation. The intention behind exposing this parameter is to make it more practically useful and easier to understand, as well as to ensure fairness in benchmarking where applicable. because I've noticed that when people submit benchmark results only indicate computing resources. does the benchmark standard imply that no additional constraints other than computing resources should be considered, focusing solely on system-level results? For example, for 16c64g-sq8-force_merge or ElasticCloud-8c60g-force_merge, I only need to consider the computing resources, while other system components are free to be optimized as needed. |
|
@frankleaf Thanks for the clarification. I still do not think we should merge this PR, for three reasons:
Flexibility for private testing does not mean every database-specific tuning parameter should become part of the public benchmark configuration. Given the unclear standard use case, high explanation cost, and unverified compaction-flow change, I do not think we should accept this PR. |
|
One additional concern: the PR's custom flow appears to be based on a misunderstanding of Milvus compaction semantics. This also shows why exposing this parameter can be misleading—without understanding the underlying compaction behavior, users are unlikely to get the segment layout or benchmark result they expect. |
|
@XuanYang-cn thank you, What I actually meant is that the MILVUS_FORCE_MERGE_TARGET_SIZE_MB parameter exhibits different behavior under varying resource conditions, making it an "X-factor." Moreover, this size can be practically derived based on available resources. If the resource capacity is fixed and the target size is configurable, it would enable more flexible testing strategies. That said, I agree with you that what you mentioned earlier does not fall under any publicly documented standard.Based on your answer, I now understand that for benchmarking purposes, segment size and quantity are not dimensions that should be compared — everyone can adjust them freely according to their actual situation. Therefore, I will cancel this PR. Thank you for your response. |
I noticed that Milvus currently defaults to forcing merges into segments with a fixed size of int64 max value. In practice, this introduces uncertainty in segment sizing, particularly affected by DataNode memory usage.
I'd like to make this fixed value configurable via a parameter. The default behavior should remain unchanged (using the current maximum value), but when explicitly specified through configuration, the fixed segment size should become adjustable.