Skip to content

Commit f315577

Browse files
va-kuznecovVlad Kuznecov
andauthored
Add new LWTracks to highlight UpdateCycle details (#9192)
Co-authored-by: Vlad Kuznecov <va-kuznecov@nebius.com>
1 parent 7277322 commit f315577

File tree

4 files changed

+23
-11
lines changed

4 files changed

+23
-11
lines changed

ydb/core/blobstorage/lwtrace_probes/blobstorage_probes.h

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,12 @@ struct TEventTypeField {
266266
PROBE(PDiskEnqueueAllDetails, GROUPS("PDisk"), \
267267
TYPES(ui64, size_t, size_t, size_t, double), \
268268
NAMES("pdisk", "initialQueueSize", "processedReqs", "pushedToForsetiReqs", "spentTimeMs")) \
269+
PROBE(PDiskUpdateStarted, GROUPS("PDisk"), TYPES(ui64), NAMES("pdisk")) \
270+
PROBE(PDiskProcessLogWriteQueue, GROUPS("PDisk"), TYPES(ui64, size_t, size_t), NAMES("pdisk", "logQueueSize", "commitQueueSize")) \
271+
PROBE(PDiskProcessChunkReadQueue, GROUPS("PDisk"), TYPES(ui64, size_t), NAMES("pdisk", "queueSize")) \
272+
PROBE(PDiskProcessChunkWriteQueue, GROUPS("PDisk"), TYPES(ui64, size_t), NAMES("pdisk", "queueSize")) \
273+
PROBE(PDiskStartWaiting, GROUPS("PDisk"), TYPES(ui64), NAMES("pdisk")) \
274+
PROBE(PDiskUpdateEnded, GROUPS("PDisk"), TYPES(ui64), NAMES("pdisk")) \
269275
PROBE(DSProxyGetEnqueue, GROUPS("DSProxy", "LWTrackStart"), TYPES(), NAMES()) \
270276
PROBE(DSProxyGetBootstrap, GROUPS("DSProxy"), TYPES(), NAMES()) \
271277
PROBE(DSProxyGetHandle, GROUPS("DSProxy", "LWTrackStart"), TYPES(), NAMES()) \

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.cpp

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2240,14 +2240,11 @@ void TPDisk::ProcessChunkWriteQueue() {
22402240
Y_FAIL_S("Unexpected request type# " << ui64(req->GetType()) << " in JointChunkWrites");
22412241
}
22422242
}
2243+
LWTRACK(PDiskProcessChunkWriteQueue, UpdateCycleOrbit, PCtx->PDiskId, JointChunkWrites.size());
22432244
JointChunkWrites.clear();
22442245
}
22452246

22462247
void TPDisk::ProcessChunkReadQueue() {
2247-
if (JointChunkReads.empty()) {
2248-
return;
2249-
}
2250-
22512248
NHPTimer::STime now = HPNow();
22522249
// Size (bytes) of elementary sectors block, it is useless to read/write less than that blockSize
22532250
ui64 bufferSize = BufferPool->GetBufferSize() / Format.SectorSize * Format.SectorSize;
@@ -2298,6 +2295,7 @@ void TPDisk::ProcessChunkReadQueue() {
22982295
Y_FAIL_S("Unexpected request type# " << ui64(req->GetType()) << " in JointChunkReads");
22992296
}
23002297
}
2298+
LWTRACK(PDiskProcessChunkReadQueue, UpdateCycleOrbit, PCtx->PDiskId, JointChunkReads.size());
23012299
JointChunkReads.clear();
23022300
}
23032301

@@ -3394,14 +3392,13 @@ void TPDisk::ProcessYardInitSet() {
33943392
}
33953393

33963394
void TPDisk::EnqueueAll() {
3397-
TInstant start = TInstant::Now();
3395+
auto start = TMonotonic::Now();
33983396

33993397
TGuard<TMutex> guard(StateMutex);
34003398
size_t initialQueueSize = InputQueue.GetWaitingSize();
34013399
size_t processedReqs = 0;
34023400
size_t pushedToForsetiReqs = 0;
34033401

3404-
34053402
while (InputQueue.GetWaitingSize() > 0) {
34063403
TRequestBase* request = InputQueue.Pop();
34073404
AtomicSub(InputQueueCost, request->Cost);
@@ -3453,12 +3450,13 @@ void TPDisk::EnqueueAll() {
34533450
}
34543451
}
34553452

3456-
double spentTimeMs = (TInstant::Now() - start).MillisecondsFloat();
3457-
LWPROBE(PDiskEnqueueAllDetails, PCtx->PDiskId, initialQueueSize, processedReqs, pushedToForsetiReqs, spentTimeMs);
3453+
double spentTimeMs = (TMonotonic::Now() - start).MillisecondsFloat();
3454+
LWTRACK(PDiskEnqueueAllDetails, UpdateCycleOrbit, PCtx->PDiskId, initialQueueSize, processedReqs, pushedToForsetiReqs, spentTimeMs);
34583455
}
34593456

34603457
void TPDisk::Update() {
34613458
Mon.UpdateDurationTracker.UpdateStarted();
3459+
LWTRACK(PDiskUpdateStarted, UpdateCycleOrbit, PCtx->PDiskId);
34623460

34633461
// ui32 userSectorSize = 0;
34643462

@@ -3554,9 +3552,9 @@ void TPDisk::Update() {
35543552
}
35553553
}
35563554
ui64 totalCost = totalLogCost + totalNonLogCost;
3557-
LWPROBE(PDiskForsetiCycle, PCtx->PDiskId, nowCycles, prevForsetiTimeNs, ForsetiPrevTimeNs, timeCorrection,
3555+
LWTRACK(PDiskForsetiCycle, UpdateCycleOrbit, PCtx->PDiskId, nowCycles, prevForsetiTimeNs, ForsetiPrevTimeNs, timeCorrection,
35583556
realDuration, virtualDuration, ForsetiTimeNs, totalCost, virtualDeadline);
3559-
LWPROBE(PDiskMilliBatchSize, PCtx->PDiskId, totalLogCost, totalNonLogCost, totalLogReqs, totalNonLogReqs);
3557+
LWTRACK(PDiskMilliBatchSize, UpdateCycleOrbit, PCtx->PDiskId, totalLogCost, totalNonLogCost, totalLogReqs, totalNonLogReqs);
35603558
ForsetiRealTimeCycles = nowCycles;
35613559

35623560

@@ -3636,6 +3634,7 @@ void TPDisk::Update() {
36363634

36373635

36383636
Mon.UpdateDurationTracker.WaitingStart(isNothingToDo);
3637+
LWTRACK(PDiskStartWaiting, UpdateCycleOrbit, PCtx->PDiskId);
36393638

36403639
if (Cfg->SectorMap) {
36413640
auto diskModeParams = Cfg->SectorMap->GetDiskModeParams();
@@ -3668,6 +3667,8 @@ void TPDisk::Update() {
36683667
InputQueue.ProducedWait(TDuration::MilliSeconds(10));
36693668
}
36703669

3670+
LWTRACK(PDiskUpdateEnded, UpdateCycleOrbit, PCtx->PDiskId);
3671+
UpdateCycleOrbit.Reset();
36713672
Mon.UpdateDurationTracker.UpdateEnded();
36723673
*Mon.PDiskThreadCPU = ThreadCPUTime();
36733674
}

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -201,6 +201,8 @@ class TPDisk : public IPDisk {
201201
// Metadata storage
202202
NMeta::TInfo Meta;
203203

204+
NLWTrace::TOrbit UpdateCycleOrbit;
205+
204206
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
205207
// Initialization
206208
TPDisk(std::shared_ptr<TPDiskCtx> pCtx, const TIntrusivePtr<TPDiskConfig> cfg, const TIntrusivePtr<::NMonitoring::TDynamicCounters>& counters);

ydb/core/blobstorage/pdisk/blobstorage_pdisk_impl_log.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -707,8 +707,10 @@ void TPDisk::WriteSysLogRestorePoint(TCompletionAction *action, TReqId reqId, NW
707707
// Common log writing
708708
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
709709
void TPDisk::ProcessLogWriteQueueAndCommits() {
710-
if (JointLogWrites.empty())
710+
if (JointLogWrites.empty()) {
711+
LWTRACK(PDiskProcessLogWriteQueue, UpdateCycleOrbit, PCtx->PDiskId, JointLogWrites.size(), JointCommits.size());
711712
return;
713+
}
712714

713715
NHPTimer::STime now = HPNow();
714716
for (TLogWrite *logCommit : JointCommits) {
@@ -748,6 +750,7 @@ void TPDisk::ProcessLogWriteQueueAndCommits() {
748750
double(logWrite->Cost) / 1000000.0, HPSecondsFloat(logWrite->Deadline),
749751
logWrite->Owner, logWrite->IsFast, logWrite->PriorityClass);
750752
}
753+
LWTRACK(PDiskProcessLogWriteQueue, UpdateCycleOrbit, PCtx->PDiskId, JointLogWrites.size(), JointCommits.size());
751754
TReqId reqId = JointLogWrites.back()->ReqId;
752755
auto write = MakeHolder<TCompletionLogWrite>(
753756
this, std::move(JointLogWrites), std::move(JointCommits), std::move(logChunksToCommit));

0 commit comments

Comments
 (0)