Skip to content

Commit cab7587

Browse files
snauryblinkov
authored andcommitted
Add per-tx inflight counter to tablets and fix follower per-tx counters (#15575)
1 parent 47db79d commit cab7587

File tree

4 files changed

+25
-8
lines changed

4 files changed

+25
-8
lines changed

ydb/core/protos/counters.proto

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ extend google.protobuf.FileOptions {
6666
//
6767
enum ETxTypeSimpleCounters {
6868
COUNTER_TT_SIMPLE_IGNORE = 0;
69+
70+
COUNTER_TT_INFLY = 1 [(CounterOpts) = {Name: "InFly"}];
6971
}
7072

7173
enum ETxTypeCumulativeCounters {

ydb/core/tablet_flat/flat_exec_seat.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ namespace NTabletFlatExecutor {
3131
TSeat(ui32 uniqId, TAutoPtr<ITransaction> self)
3232
: UniqID(uniqId)
3333
, Self(self)
34+
, TxType(Self->GetTxType())
3435
{
3536
}
3637

@@ -69,6 +70,7 @@ namespace NTabletFlatExecutor {
6970

7071
const ui64 UniqID;
7172
const TAutoPtr<ITransaction> Self;
73+
const TTxType TxType;
7274
NWilson::TSpan WaitingSpan;
7375
ui64 Retries = 0;
7476
TPinned Pinned;

ydb/core/tablet_flat/flat_executor.cpp

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -453,7 +453,7 @@ void TExecutor::Active(const TActorContext &ctx) {
453453
CompactionLogic = THolder<TCompactionLogic>(new TCompactionLogic(MemTableMemoryConsumersCollection.Get(), Logger.Get(), Broker.Get(), this, loadedState->Comp,
454454
Sprintf("tablet-%" PRIu64, Owner->TabletID())));
455455
DataCleanupLogic = MakeHolder<TDataCleanupLogic>(static_cast<NActors::IActorOps*>(this), this, Owner, Logger.Get(), GcLogic.Get());
456-
LogicRedo->InstallCounters(Counters.Get(), nullptr);
456+
LogicRedo->InstallCounters(Counters.Get(), AppTxCounters);
457457

458458
ResourceMetrics = MakeHolder<NMetrics::TResourceMetrics>(Owner->TabletID(), 0, Launcher);
459459

@@ -567,6 +567,9 @@ void TExecutor::FinishCancellation(TSeat* seat, bool activateMore) {
567567
Memory->ReleaseMemory(*seat);
568568
--Stats->TxInFly;
569569
Counters->Simple()[TExecutorCounters::DB_TX_IN_FLY] = Stats->TxInFly;
570+
if (AppTxCounters && seat->TxType != UnknownTxType) {
571+
AppTxCounters->TxSimple(seat->TxType, COUNTER_TT_INFLY) -= 1;
572+
}
570573
RemoveTransaction(seat->UniqID);
571574
if (activateMore) {
572575
PlanTransactionActivation();
@@ -1746,6 +1749,9 @@ ui64 TExecutor::DoExecute(TAutoPtr<ITransaction> self, ETxMode mode) {
17461749

17471750
++Stats->TxInFly;
17481751
Counters->Simple()[TExecutorCounters::DB_TX_IN_FLY] = Stats->TxInFly;
1752+
if (AppTxCounters && seat->TxType != UnknownTxType) {
1753+
AppTxCounters->TxSimple(seat->TxType, COUNTER_TT_INFLY) += 1;
1754+
}
17491755
Counters->Cumulative()[TExecutorCounters::TX_COUNT_ALL].Increment(1); //Deprecated
17501756
Counters->Cumulative()[TExecutorCounters::TX_QUEUED].Increment(1);
17511757

@@ -2005,7 +2011,7 @@ void TExecutor::PostponeTransaction(TSeat* seat, TPageCollectionTxEnv &env,
20052011
TAutoPtr<NTable::TChange> change,
20062012
THPTimer &bookkeepingTimer)
20072013
{
2008-
TTxType txType = seat->Self->GetTxType();
2014+
TTxType txType = seat->TxType;
20092015

20102016
ui32 touchedPages = 0;
20112017
ui32 newPinnedPages = 0;
@@ -2164,7 +2170,7 @@ void TExecutor::PostponeTransaction(TSeat* seat, TPageCollectionTxEnv &env,
21642170
void TExecutor::CommitTransactionLog(std::unique_ptr<TSeat> seat, TPageCollectionTxEnv &env,
21652171
TAutoPtr<NTable::TChange> change, THPTimer &bookkeepingTimer) {
21662172
const bool isReadOnly = !(change->HasAny() || env.HasChanges());
2167-
const TTxType txType = seat->Self->GetTxType();
2173+
const TTxType txType = seat->TxType;
21682174

21692175
size_t touchedBlocks = PrivatePageCache->GetStats().CurrentCacheHits;
21702176
Counters->Percentile()[TExecutorCounters::TX_PERCENTILE_TOUCHED_BLOCKS].IncrementFor(touchedBlocks);
@@ -2192,6 +2198,7 @@ void TExecutor::CommitTransactionLog(std::unique_ptr<TSeat> seat, TPageCollectio
21922198
const double currentExecTime = seat->CPUExecTime;
21932199

21942200
if (isReadOnly) {
2201+
// Note: per-tx InFly is decremented in txloglogic
21952202
if (Stats->IsFollower()) {
21962203
// todo: extract completion counters from txloglogic
21972204
--Stats->TxInFly;
@@ -3093,6 +3100,7 @@ void TExecutor::Handle(TEvTablet::TEvCommitResult::TPtr &ev, const TActorContext
30933100
switch (cookie) {
30943101
case ECommit::Redo:
30953102
{
3103+
// Note: per-tx InFly is decrememnted in txloglogic
30963104
const ui64 confirmedTransactions = LogicRedo->Confirm(step, ctx, OwnerActorId);
30973105
Stats->TxInFly -= confirmedTransactions;
30983106
Counters->Simple()[TExecutorCounters::DB_TX_IN_FLY] = Stats->TxInFly;
@@ -4387,8 +4395,9 @@ void TExecutor::RegisterExternalTabletCounters(TAutoPtr<TTabletCountersBase> app
43874395
AppCountersBaseline = MakeHolder<TTabletCountersBase>();
43884396
AppCounters->RememberCurrentStateAsBaseline(*AppCountersBaseline);
43894397

4398+
AppTxCounters = dynamic_cast<TTabletCountersWithTxTypes*>(AppCounters.Get());
4399+
43904400
if (LogicRedo) {
4391-
AppTxCounters = dynamic_cast<TTabletCountersWithTxTypes*>(AppCounters.Get());
43924401
LogicRedo->InstallCounters(Counters.Get(), AppTxCounters);
43934402
}
43944403
}

ydb/core/tablet_flat/flat_executor_txloglogic.cpp

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ TArrayRef<const NRedo::TUsage> TLogicRedo::GrabLogUsage() const noexcept
5858
}
5959

6060
void CompleteRoTransaction(std::unique_ptr<TSeat> seat, const TActorContext &ownerCtx, TExecutorCounters *counters, TTabletCountersWithTxTypes *appTxCounters) {
61-
const TTxType txType = seat->Self->GetTxType();
61+
const TTxType txType = seat->TxType;
6262

6363
const ui64 latencyus = ui64(1000000. * seat->LatencyTimer.Passed());
6464
counters->Percentile()[TExecutorCounters::TX_PERCENTILE_LATENCY_RO].IncrementFor(latencyus);
@@ -73,11 +73,13 @@ void CompleteRoTransaction(std::unique_ptr<TSeat> seat, const TActorContext &own
7373
if (Y_UNLIKELY(seat->IsTerminated())) {
7474
counters->Cumulative()[TExecutorCounters::TX_TERMINATED].Increment(1);
7575
if (appTxCounters && txType != UnknownTxType) {
76+
appTxCounters->TxSimple(txType, COUNTER_TT_INFLY) -= 1;
7677
appTxCounters->TxCumulative(txType, COUNTER_TT_TERMINATED).Increment(1);
7778
}
7879
} else {
7980
counters->Cumulative()[TExecutorCounters::TX_RO_COMPLETED].Increment(1);
8081
if (appTxCounters && txType != UnknownTxType) {
82+
appTxCounters->TxSimple(txType, COUNTER_TT_INFLY) -= 1;
8183
appTxCounters->TxCumulative(txType, COUNTER_TT_RO_COMPLETED).Increment(1);
8284
}
8385
}
@@ -129,7 +131,7 @@ TLogicRedo::TCommitRWTransactionResult TLogicRedo::CommitRWTransaction(
129131

130132
Y_ABORT_UNLESS(force || !(change.Scheme || change.Annex));
131133

132-
const TTxType txType = seat->Self->GetTxType();
134+
const TTxType txType = seat->TxType;
133135

134136
if (auto bytes = change.Redo.size()) {
135137
Counters->Cumulative()[TMonCo::DB_REDO_WRITTEN_BYTES].Increment(bytes);
@@ -266,7 +268,7 @@ ui64 TLogicRedo::Confirm(ui32 step, const TActorContext &ctx, const TActorId &ow
266268

267269
std::unique_ptr<TSeat> seat{entry.Transactions.PopFront()};
268270

269-
const TTxType txType = seat->Self->GetTxType();
271+
const TTxType txType = seat->TxType;
270272
const ui64 commitLatencyus = ui64(1000000. * seat->CommitTimer.Passed());
271273
const ui64 latencyus = ui64(1000000. * seat->LatencyTimer.Passed());
272274
Counters->Percentile()[TExecutorCounters::TX_PERCENTILE_LATENCY_COMMIT].IncrementFor(commitLatencyus);
@@ -281,8 +283,10 @@ ui64 TLogicRedo::Confirm(ui32 step, const TActorContext &ctx, const TActorId &ow
281283
const ui64 completeTimeus = ui64(1000000. * completeTimer.Passed());
282284

283285
Counters->Cumulative()[TExecutorCounters::TX_RW_COMPLETED].Increment(1);
284-
if (AppTxCounters && txType != UnknownTxType)
286+
if (AppTxCounters && txType != UnknownTxType) {
287+
AppTxCounters->TxSimple(txType, COUNTER_TT_INFLY) -= 1;
285288
AppTxCounters->TxCumulative(txType, COUNTER_TT_RW_COMPLETED).Increment(1);
289+
}
286290
Counters->Percentile()[TExecutorCounters::TX_PERCENTILE_COMMITED_CPUTIME].IncrementFor(completeTimeus);
287291
Counters->Cumulative()[TExecutorCounters::CONSUMED_CPU].Increment(completeTimeus);
288292
if (AppTxCounters && txType != UnknownTxType)

0 commit comments

Comments
 (0)