Skip to content

Commit

Permalink
enhance: Add configs for compaction schedule
Browse files Browse the repository at this point in the history
Signed-off-by: yangxuan <[email protected]>
  • Loading branch information
XuanYang-cn committed Jan 15, 2025
1 parent 27a99f6 commit 1d87ce0
Show file tree
Hide file tree
Showing 3 changed files with 39 additions and 3 deletions.
1 change: 1 addition & 0 deletions configs/milvus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -570,6 +570,7 @@ dataCoord:
maxParallelTaskNum: -1 # Deprecated, see datanode.slot.slotCap
dropTolerance: 86400 # Compaction task will be cleaned after finish longer than this time(in seconds)
gcInterval: 1800 # The time interval in seconds for compaction gc
scheduleInterval: 500 # The time interval in milliseconds for scheduling compaction tasks. If the configuration setting is below 100ms, it will be ajusted upwards to 100ms
mix:
triggerInterval: 60 # The time interval in seconds to trigger mix compaction
levelzero:
Expand Down
5 changes: 3 additions & 2 deletions internal/datacoord/compaction.go
Original file line number Diff line number Diff line change
Expand Up @@ -440,10 +440,11 @@ func (c *compactionPlanHandler) loadMeta() {
}

func (c *compactionPlanHandler) loopSchedule() {
log.Info("compactionPlanHandler start loop schedule")
interval := paramtable.Get().DataCoordCfg.CompactionScheduleInterval.GetAsDuration(time.Millisecond)
log.Info("compactionPlanHandler start loop schedule", zap.Duration("schedule interval", interval))
defer c.stopWg.Done()

scheduleTicker := time.NewTicker(3 * time.Second)
scheduleTicker := time.NewTicker(interval)
defer scheduleTicker.Stop()
for {
select {
Expand Down
36 changes: 35 additions & 1 deletion pkg/util/paramtable/component_param.go
Original file line number Diff line number Diff line change
Expand Up @@ -3350,7 +3350,9 @@ type dataCoordConfig struct {
CompactionTimeoutInSeconds ParamItem `refreshable:"true"`
CompactionDropToleranceInSeconds ParamItem `refreshable:"true"`
CompactionGCIntervalInSeconds ParamItem `refreshable:"true"`
CompactionCheckIntervalInSeconds ParamItem `refreshable:"false"`
CompactionCheckIntervalInSeconds ParamItem `refreshable:"false"` // deprecated
CompactionScheduleInterval ParamItem `refreshable:"false"`
CompactionCheckInterval ParamItem `refreshable:"false"`
MixCompactionTriggerInterval ParamItem `refreshable:"false"`
L0CompactionTriggerInterval ParamItem `refreshable:"false"`
GlobalCompactionInterval ParamItem `refreshable:"false"`
Expand Down Expand Up @@ -3735,6 +3737,38 @@ During compaction, the size of segment # of rows is able to exceed segment max #
}
p.CompactionCheckIntervalInSeconds.Init(base.mgr)

p.CompactionCheckInterval = ParamItem{
Key: "dataCoord.compaction.checkInterval",
Version: "2.4.21",
DefaultValue: "500",
Export: true,
Formatter: func(value string) string {
ms := getAsInt64(value)
if ms < 100 {
ms = 100
}
return strconv.FormatInt(ms, 10)
},
Doc: "The time interval in milliseconds for checking compaction tasks. If the configuration setting is below 100ms, it will be ajusted upwards to 100ms",
}
p.CompactionCheckInterval.Init(base.mgr)

p.CompactionScheduleInterval = ParamItem{
Key: "dataCoord.compaction.scheduleInterval",
Version: "2.4.21",
DefaultValue: "500",
Export: true,
Formatter: func(value string) string {
ms := getAsInt64(value)
if ms < 100 {
ms = 100
}
return strconv.FormatInt(ms, 10)
},
Doc: "The time interval in milliseconds for scheduling compaction tasks. If the configuration setting is below 100ms, it will be ajusted upwards to 100ms",
}
p.CompactionScheduleInterval.Init(base.mgr)

p.SingleCompactionRatioThreshold = ParamItem{
Key: "dataCoord.compaction.single.ratio.threshold",
Version: "2.0.0",
Expand Down

0 comments on commit 1d87ce0

Please sign in to comment.