Skip to content

Commit d27cc2c

Browse files
committed
Dsproxy put lwtrack (#8168)
1 parent 83855a8 commit d27cc2c

File tree

2 files changed

+47
-6
lines changed

2 files changed

+47
-6
lines changed

ydb/core/blobstorage/dsproxy/dsproxy_put.cpp

Lines changed: 43 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
7575

7676
bool Done = false;
7777

78+
NLWTrace::TOrbit Orbit;
79+
7880
struct TIncarnationRecord {
7981
ui64 IncarnationGuid = 0;
8082
TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -121,6 +123,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
121123

122124
// Send to VDisks.
123125
for (auto& ev : events) {
126+
if (LWPROBE_ENABLED(DSProxyVPutSent) || Orbit.HasShuttles()) {
127+
auto vDiskId = std::visit([](const auto& item) { return VDiskIDFromVDiskID(item->Record.GetVDiskID()); }, ev);
128+
auto itemsCount = std::visit(overloaded{
129+
[](const std::unique_ptr<TEvBlobStorage::TEvVPut>&) { return 1; },
130+
[](const std::unique_ptr<TEvBlobStorage::TEvVMultiPut>& item) { return item->Record.GetItems().size(); }
131+
}, ev);
132+
LWTRACK(
133+
DSProxyVPutSent, Orbit,
134+
std::visit([](const auto& item) { return item->Type(); }, ev),
135+
vDiskId.ToStringWOGeneration(),
136+
Info->GetFailDomainOrderNumber(vDiskId),
137+
itemsCount,
138+
std::visit([](const auto& item) { return item->GetBufferBytes(); }, ev),
139+
accelerate
140+
);
141+
}
124142
std::visit([&](auto& ev) { SendToQueue(std::move(ev), 0, TimeStatsEnabled); }, ev);
125143
++RequestsSent;
126144
}
@@ -249,7 +267,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
249267
HandleIncarnation(TActivationContext::Monotonic(), Info->GetOrderNumber(shortId), record.GetIncarnationGuid());
250268
}
251269

252-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
270+
LWTRACK(DSProxyVDiskRequestDuration, Orbit, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
253271
Info->GroupID, blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
254272
GetStartTime(record.GetTimestamps()),
255273
GetTotalTimeMs(record.GetTimestamps()),
@@ -319,11 +337,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
319337
WaitingVDiskResponseCount[vdisk]--;
320338

321339
// Trace put request duration
322-
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration)) {
340+
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration) || Orbit.HasShuttles()) {
323341
for (auto &item : record.GetItems()) {
324342
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID(item.GetBlobID());
325343
NKikimrProto::EReplyStatus itemStatus = item.GetStatus();
326-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
344+
LWTRACK(DSProxyVDiskRequestDuration, Orbit,
345+
TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
327346
Info->GroupID, blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
328347
GetStartTime(record.GetTimestamps()),
329348
GetTotalTimeMs(record.GetTimestamps()),
@@ -372,6 +391,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
372391
if (WaitingVDiskCount == 1 && RequestsSent > 1) {
373392
ui64 timeToAccelerateUs = Max<ui64>(1, PutImpl.GetTimeToAccelerateNs(LogCtx) / 1000);
374393
TDuration timeSinceStart = TActivationContext::Monotonic() - StartTime;
394+
LWTRACK(DSProxyScheduleAccelerate, Orbit, timeToAccelerateUs > timeSinceStart.MicroSeconds() ? (timeToAccelerateUs - timeSinceStart.MicroSeconds()) / 1000.0 : 0.0);
375395
if (timeSinceStart.MicroSeconds() < timeToAccelerateUs) {
376396
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
377397
Schedule(TDuration::MicroSeconds(timeToAccelerateUs - timeSinceStart.MicroSeconds()),
@@ -429,7 +449,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
429449
ResponsesSent++;
430450
Y_ABORT_UNLESS(ResponsesSent <= PutImpl.Blobs.size());
431451
RootCauseTrack.RenderTrack(PutImpl.Blobs[blobIdx].Orbit);
432-
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit);
452+
if (PutImpl.Blobs[blobIdx].Orbit.HasShuttles()) {
453+
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
454+
}
455+
LWTRACK(DSProxyPutReply, Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
433456
putResult->Orbit = std::move(PutImpl.Blobs[blobIdx].Orbit);
434457
putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier[blobIdx];
435458
putResult->ExecutionRelay = std::move(PutImpl.Blobs[blobIdx].ExecutionRelay);
@@ -608,6 +631,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
608631
LWTRACK(DSProxyPutBootstrapStart, PutImpl.Blobs[blobIdx].Orbit);
609632
}
610633

634+
auto getTotalSize = [&]() {
635+
ui64 totalSize = 0;
636+
for (auto& blob : PutImpl.Blobs) {
637+
totalSize += blob.BufferSize;
638+
}
639+
return totalSize;
640+
};
641+
LWTRACK(
642+
DSProxyPutRequest, Orbit,
643+
Info->GroupID,
644+
NKikimrBlobStorage::EPutHandleClass_Name(HandleClass),
645+
TEvBlobStorage::TEvPut::TacticName(Tactic),
646+
PutImpl.Blobs.size(),
647+
getTotalSize()
648+
);
649+
611650
Become(&TThis::StateWait, TDuration::MilliSeconds(DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
612651

613652
PartSets.resize(PutImpl.Blobs.size());

ydb/core/blobstorage/lwtrace_probes/blobstorage_probes.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -267,13 +267,15 @@ struct TEventTypeField {
267267
PROBE(DSProxyPutBootstrapDone, GROUPS("DSProxy","Durations"), \
268268
TYPES(ui64, double, double, double, double, ui64, ui64), \
269269
NAMES("size", "wilsonMs", "allocateMs", "waitTotalMs", "splitTotalMs", "splitTotalCount", "blobIdx")) \
270-
PROBE(DSProxyPutReply, GROUPS("DSProxy"), TYPES(), NAMES()) \
270+
PROBE(DSProxyPutReply, GROUPS("DSProxy"), TYPES(TString, TString, TString), NAMES("blobId", "status", "errorReason")) \
271271
PROBE(DSProxyPutResumeBootstrap, GROUPS("DSProxy"), TYPES(), NAMES()) \
272272
PROBE(DSProxyPutPauseBootstrap, GROUPS("DSProxy"), TYPES(), NAMES()) \
273-
PROBE(DSProxyScheduleAccelerate, GROUPS("DSProxy"), TYPES(), NAMES()) \
273+
PROBE(DSProxyScheduleAccelerate, GROUPS("DSProxy"), TYPES(double), NAMES("timeBeforeAccelerationMs")) \
274274
PROBE(DSProxyStartTransfer, GROUPS("DSProxy"), TYPES(), NAMES()) \
275275
PROBE(VDiskStartProcessing, GROUPS("DSProxy"), TYPES(), NAMES()) \
276276
PROBE(VDiskReply, GROUPS("DSProxy"), TYPES(), NAMES()) \
277+
PROBE(DSProxyPutRequest, GROUPS("DSProxy", "LWTrackStart"), TYPES(ui32, TString, TString, ui64, ui64), NAMES("groupId", "handleClass", "tactic", "count", "totalSize")) \
278+
PROBE(DSProxyVPutSent, GROUPS("DSProxy"), TYPES(NKikimr::TEventTypeField, TString, ui32, ui32, ui64, bool), NAMES("type", "vDiskId", "vdiskOrderNum", "count", "totalSize", "accelerate")) \
277279
/**/
278280
LWTRACE_DECLARE_PROVIDER(BLOBSTORAGE_PROVIDER)
279281

0 commit comments

Comments
 (0)