Skip to content

Commit a32c84c

Browse files
Merge d763d9f into 1b4620e
2 parents 1b4620e + d763d9f commit a32c84c

File tree

2 files changed

+29
-19
lines changed

2 files changed

+29
-19
lines changed

ydb/core/tx/columnshard/engines/storage/actualizer/tiering/tiering.cpp

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -105,12 +105,16 @@ void TTieringActualizer::DoRemovePortion(const ui64 portionId) {
105105
void TTieringActualizer::DoExtractTasks(TTieringProcessContext& tasksContext, const TExternalTasksContext& externalContext, TInternalTasksContext& /*internalContext*/) {
106106
THashSet<ui64> portionIds;
107107
for (auto&& [address, addressPortions] : PortionIdByWaitDuration) {
108+
if (addressPortions.GetPortions().size() && tasksContext.Now - StartInstant < addressPortions.GetPortions().begin()->first) {
109+
Counters.SkipEvictionForLimit->Add(1);
110+
continue;
111+
}
108112
if (!tasksContext.IsRWAddressAvailable(address)) {
109113
Counters.SkipEvictionForLimit->Add(1);
110114
continue;
111115
}
112116
for (auto&& [duration, portions] : addressPortions.GetPortions()) {
113-
if (duration - (tasksContext.Now - StartInstant) > TDuration::Zero()) {
117+
if (tasksContext.Now - StartInstant < duration) {
114118
break;
115119
}
116120
bool limitEnriched = false;
@@ -140,28 +144,29 @@ void TTieringActualizer::DoExtractTasks(TTieringProcessContext& tasksContext, co
140144
}
141145
}
142146
}
147+
if (portionIds.size()) {
148+
ui64 waitDurationEvict = 0;
149+
ui64 waitQueueEvict = 0;
150+
ui64 waitDurationDelete = 0;
151+
ui64 waitQueueDelete = 0;
152+
for (auto&& i : PortionIdByWaitDuration) {
153+
std::shared_ptr<NColumnShard::TValueAggregationClient> waitDurationSignal;
154+
std::shared_ptr<NColumnShard::TValueAggregationClient> queueSizeSignal;
155+
if (i.first.WriteIs(NTiering::NCommon::DeleteTierName)) {
156+
i.second.CorrectSignals(waitQueueDelete, waitDurationDelete, tasksContext.Now - StartInstant);
157+
} else {
158+
i.second.CorrectSignals(waitQueueEvict, waitDurationEvict, tasksContext.Now - StartInstant);
159+
}
160+
}
161+
Counters.DifferenceWaitToDelete->SetValue(waitDurationDelete);
162+
Counters.DifferenceWaitToEvict->SetValue(waitDurationEvict);
163+
Counters.QueueSizeToDelete->SetValue(waitQueueDelete);
164+
Counters.QueueSizeToEvict->SetValue(waitQueueEvict);
165+
}
143166
for (auto&& i : portionIds) {
144167
RemovePortion(i);
145168
}
146169

147-
ui64 waitDurationEvict = 0;
148-
ui64 waitQueueEvict = 0;
149-
ui64 waitDurationDelete = 0;
150-
ui64 waitQueueDelete = 0;
151-
for (auto&& i : PortionIdByWaitDuration) {
152-
std::shared_ptr<NColumnShard::TValueAggregationClient> waitDurationSignal;
153-
std::shared_ptr<NColumnShard::TValueAggregationClient> queueSizeSignal;
154-
if (i.first.WriteIs(NTiering::NCommon::DeleteTierName)) {
155-
i.second.CorrectSignals(waitQueueDelete, waitDurationDelete, tasksContext.Now - StartInstant);
156-
} else {
157-
i.second.CorrectSignals(waitQueueEvict, waitDurationEvict, tasksContext.Now - StartInstant);
158-
}
159-
}
160-
Counters.DifferenceWaitToDelete->SetValue(waitDurationDelete);
161-
Counters.DifferenceWaitToEvict->SetValue(waitDurationEvict);
162-
Counters.QueueSizeToDelete->SetValue(waitQueueDelete);
163-
Counters.QueueSizeToEvict->SetValue(waitQueueEvict);
164-
165170
}
166171

167172
void TTieringActualizer::Refresh(const std::optional<TTiering>& info, const TAddExternalContext& externalContext) {

ydb/core/tx/columnshard/engines/storage/granule.h

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -150,6 +150,7 @@ class TGranuleMeta: TNonCopyable {
150150
std::shared_ptr<TGranulesStat> Stats;
151151
std::shared_ptr<NStorageOptimizer::IOptimizerPlanner> OptimizerPlanner;
152152
std::shared_ptr<NActualizer::TGranuleActualizationIndex> ActualizationIndex;
153+
mutable TInstant LastActualizations = TInstant::Zero();
153154
std::map<NArrow::TReplaceKey, THashMap<ui64, std::shared_ptr<TPortionInfo>>> PortionsByPK;
154155

155156
void OnBeforeChangePortion(const std::shared_ptr<TPortionInfo> portionBefore);
@@ -198,8 +199,12 @@ class TGranuleMeta: TNonCopyable {
198199
}
199200

200201
void BuildActualizationTasks(NActualizer::TTieringProcessContext& context) const {
202+
if (context.Now - LastActualizations < TDuration::Seconds(1)) {
203+
return;
204+
}
201205
NActualizer::TExternalTasksContext extTasks(Portions);
202206
ActualizationIndex->ExtractActualizationTasks(context, extTasks);
207+
LastActualizations = context.Now;
203208
}
204209

205210
std::shared_ptr<TColumnEngineChanges> GetOptimizationTask(std::shared_ptr<TGranuleMeta> self, const std::shared_ptr<NDataLocks::TManager>& locksManager) const {

0 commit comments

Comments
 (0)