Skip to content

Commit f2f6db7

Browse files
authored
Dsproxy put lwtrack (#8168)
1 parent 6cd8814 commit f2f6db7

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
@@ -74,6 +74,8 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
7474

7575
bool Done = false;
7676

77+
NLWTrace::TOrbit Orbit;
78+
7779
struct TIncarnationRecord {
7880
ui64 IncarnationGuid = 0;
7981
TMonotonic ExpirationTimestamp = TMonotonic::Max();
@@ -134,6 +136,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
134136

135137
// Send to VDisks.
136138
for (auto& ev : events) {
139+
if (LWPROBE_ENABLED(DSProxyVPutSent) || Orbit.HasShuttles()) {
140+
auto vDiskId = std::visit([](const auto& item) { return VDiskIDFromVDiskID(item->Record.GetVDiskID()); }, ev);
141+
auto itemsCount = std::visit(overloaded{
142+
[](const std::unique_ptr<TEvBlobStorage::TEvVPut>&) { return 1; },
143+
[](const std::unique_ptr<TEvBlobStorage::TEvVMultiPut>& item) { return item->Record.GetItems().size(); }
144+
}, ev);
145+
LWTRACK(
146+
DSProxyVPutSent, Orbit,
147+
std::visit([](const auto& item) { return item->Type(); }, ev),
148+
vDiskId.ToStringWOGeneration(),
149+
Info->GetFailDomainOrderNumber(vDiskId),
150+
itemsCount,
151+
std::visit([](const auto& item) { return item->GetBufferBytes(); }, ev),
152+
accelerate
153+
);
154+
}
137155
std::visit([&](auto& ev) { SendToQueue(std::move(ev), 0, TimeStatsEnabled); }, ev);
138156
++RequestsSent;
139157
if (AccelerateRequestsSent == 0) {
@@ -269,7 +287,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
269287
HandleIncarnation(TActivationContext::Monotonic(), Info->GetOrderNumber(shortId), record.GetIncarnationGuid());
270288
}
271289

272-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
290+
LWTRACK(DSProxyVDiskRequestDuration, Orbit, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
273291
Info->GroupID.GetRawId(), blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
274292
GetStartTime(record.GetTimestamps()),
275293
GetTotalTimeMs(record.GetTimestamps()),
@@ -343,11 +361,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
343361
WaitingVDiskResponseCount[vdisk]--;
344362

345363
// Trace put request duration
346-
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration)) {
364+
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration) || Orbit.HasShuttles()) {
347365
for (auto &item : record.GetItems()) {
348366
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID(item.GetBlobID());
349367
NKikimrProto::EReplyStatus itemStatus = item.GetStatus();
350-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
368+
LWTRACK(DSProxyVDiskRequestDuration, Orbit,
369+
TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
351370
Info->GroupID.GetRawId(), blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
352371
GetStartTime(record.GetTimestamps()),
353372
GetTotalTimeMs(record.GetTimestamps()),
@@ -402,6 +421,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
402421
TDuration timeToAccelerate = TDuration::MicroSeconds(timeToAccelerateUs);
403422
TMonotonic now = TActivationContext::Monotonic();
404423
TMonotonic nextAcceleration = StartTime + timeToAccelerate;
424+
LWTRACK(DSProxyScheduleAccelerate, Orbit, nextAcceleration > now ? (nextAcceleration - now).MicroSeconds() / 1000.0 : 0.0);
405425
if (nextAcceleration > now) {
406426
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
407427
Schedule(nextAcceleration - now, new TEvAccelerate(causeIdx));
@@ -456,7 +476,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
456476
ResponsesSent++;
457477
Y_ABORT_UNLESS(ResponsesSent <= PutImpl.Blobs.size());
458478
RootCauseTrack.RenderTrack(PutImpl.Blobs[blobIdx].Orbit);
459-
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit);
479+
if (PutImpl.Blobs[blobIdx].Orbit.HasShuttles()) {
480+
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
481+
}
482+
LWTRACK(DSProxyPutReply, Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
460483
putResult->Orbit = std::move(PutImpl.Blobs[blobIdx].Orbit);
461484
putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier[blobIdx];
462485
putResult->ExecutionRelay = std::move(PutImpl.Blobs[blobIdx].ExecutionRelay);
@@ -600,6 +623,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor {
600623
LWTRACK(DSProxyPutBootstrapStart, PutImpl.Blobs[blobIdx].Orbit);
601624
}
602625

626+
auto getTotalSize = [&]() {
627+
ui64 totalSize = 0;
628+
for (auto& blob : PutImpl.Blobs) {
629+
totalSize += blob.BufferSize;
630+
}
631+
return totalSize;
632+
};
633+
LWTRACK(
634+
DSProxyPutRequest, Orbit,
635+
Info->GroupID.GetRawId(),
636+
NKikimrBlobStorage::EPutHandleClass_Name(HandleClass),
637+
TEvBlobStorage::TEvPut::TacticName(Tactic),
638+
PutImpl.Blobs.size(),
639+
getTotalSize()
640+
);
641+
603642
Become(&TBlobStorageGroupPutRequest::StateWait, TDuration::MilliSeconds(DsPutWakeupMs), new TKikimrEvents::TEvWakeup);
604643

605644
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
@@ -273,13 +273,15 @@ struct TEventTypeField {
273273
PROBE(DSProxyPutBootstrapDone, GROUPS("DSProxy","Durations"), \
274274
TYPES(ui64, double, double, double, double, ui64, ui64), \
275275
NAMES("size", "wilsonMs", "allocateMs", "waitTotalMs", "splitTotalMs", "splitTotalCount", "blobIdx")) \
276-
PROBE(DSProxyPutReply, GROUPS("DSProxy"), TYPES(), NAMES()) \
276+
PROBE(DSProxyPutReply, GROUPS("DSProxy"), TYPES(TString, TString, TString), NAMES("blobId", "status", "errorReason")) \
277277
PROBE(DSProxyPutResumeBootstrap, GROUPS("DSProxy"), TYPES(), NAMES()) \
278278
PROBE(DSProxyPutPauseBootstrap, GROUPS("DSProxy"), TYPES(), NAMES()) \
279-
PROBE(DSProxyScheduleAccelerate, GROUPS("DSProxy"), TYPES(), NAMES()) \
279+
PROBE(DSProxyScheduleAccelerate, GROUPS("DSProxy"), TYPES(double), NAMES("timeBeforeAccelerationMs")) \
280280
PROBE(DSProxyStartTransfer, GROUPS("DSProxy"), TYPES(), NAMES()) \
281281
PROBE(VDiskStartProcessing, GROUPS("DSProxy"), TYPES(), NAMES()) \
282282
PROBE(VDiskReply, GROUPS("DSProxy"), TYPES(), NAMES()) \
283+
PROBE(DSProxyPutRequest, GROUPS("DSProxy", "LWTrackStart"), TYPES(ui32, TString, TString, ui64, ui64), NAMES("groupId", "handleClass", "tactic", "count", "totalSize")) \
284+
PROBE(DSProxyVPutSent, GROUPS("DSProxy"), TYPES(NKikimr::TEventTypeField, TString, ui32, ui32, ui64, bool), NAMES("type", "vDiskId", "vdiskOrderNum", "count", "totalSize", "accelerate")) \
283285
/**/
284286
LWTRACE_DECLARE_PROVIDER(BLOBSTORAGE_PROVIDER)
285287

0 commit comments

Comments
 (0)