Skip to content

Commit 1a10182

Browse files
authored
Merge 9d4a482 into b1f08a3
2 parents b1f08a3 + 9d4a482 commit 1a10182

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<TBlobSt
7474

7575
bool Done = false;
7676

77+
NLWTrace::TOrbit Orbit;
78+
7779
struct TIncarnationRecord {
7880
ui64 IncarnationGuid = 0;
7981
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
}
@@ -250,7 +268,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
250268
HandleIncarnation(TActivationContext::Monotonic(), Info->GetOrderNumber(shortId), record.GetIncarnationGuid());
251269
}
252270

253-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
271+
LWTRACK(DSProxyVDiskRequestDuration, Orbit, TEvBlobStorage::EvVPut, blobId.BlobSize(), blobId.TabletID(),
254272
Info->GroupID.GetRawId(), blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
255273
GetStartTime(record.GetTimestamps()),
256274
GetTotalTimeMs(record.GetTimestamps()),
@@ -320,11 +338,12 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
320338
WaitingVDiskResponseCount[vdisk]--;
321339

322340
// Trace put request duration
323-
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration)) {
341+
if (LWPROBE_ENABLED(DSProxyVDiskRequestDuration) || Orbit.HasShuttles()) {
324342
for (auto &item : record.GetItems()) {
325343
TLogoBlobID blobId = LogoBlobIDFromLogoBlobID(item.GetBlobID());
326344
NKikimrProto::EReplyStatus itemStatus = item.GetStatus();
327-
LWPROBE(DSProxyVDiskRequestDuration, TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
345+
LWTRACK(DSProxyVDiskRequestDuration, Orbit,
346+
TEvBlobStorage::EvVMultiPut, blobId.BlobSize(), blobId.TabletID(),
328347
Info->GroupID.GetRawId(), blobId.Channel(), Info->GetFailDomainOrderNumber(shortId),
329348
GetStartTime(record.GetTimestamps()),
330349
GetTotalTimeMs(record.GetTimestamps()),
@@ -373,6 +392,7 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
373392
if (WaitingVDiskCount > 0 && WaitingVDiskCount <= 2 && RequestsSent > 1) {
374393
ui64 timeToAccelerateUs = Max<ui64>(1, PutImpl.GetTimeToAccelerateNs(LogCtx, 2 - AccelerateRequestsSent) / 1000);
375394
TDuration timeSinceStart = TActivationContext::Monotonic() - StartTime;
395+
LWTRACK(DSProxyScheduleAccelerate, Orbit, timeToAccelerateUs > timeSinceStart.MicroSeconds() ? (timeToAccelerateUs - timeSinceStart.MicroSeconds()) / 1000.0 : 0.0);
376396
if (timeSinceStart.MicroSeconds() < timeToAccelerateUs) {
377397
ui64 causeIdx = RootCauseTrack.RegisterAccelerate();
378398
Schedule(TDuration::MicroSeconds(timeToAccelerateUs - timeSinceStart.MicroSeconds()),
@@ -430,7 +450,10 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
430450
ResponsesSent++;
431451
Y_ABORT_UNLESS(ResponsesSent <= PutImpl.Blobs.size());
432452
RootCauseTrack.RenderTrack(PutImpl.Blobs[blobIdx].Orbit);
433-
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit);
453+
if (PutImpl.Blobs[blobIdx].Orbit.HasShuttles()) {
454+
LWTRACK(DSProxyPutReply, PutImpl.Blobs[blobIdx].Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
455+
}
456+
LWTRACK(DSProxyPutReply, Orbit, blobId.ToString(), NKikimrProto::EReplyStatus_Name(status), putResult->ErrorReason);
434457
putResult->Orbit = std::move(PutImpl.Blobs[blobIdx].Orbit);
435458
putResult->WrittenBeyondBarrier = PutImpl.WrittenBeyondBarrier[blobIdx];
436459
putResult->ExecutionRelay = std::move(PutImpl.Blobs[blobIdx].ExecutionRelay);
@@ -601,6 +624,22 @@ class TBlobStorageGroupPutRequest : public TBlobStorageGroupRequestActor<TBlobSt
601624
LWTRACK(DSProxyPutBootstrapStart, PutImpl.Blobs[blobIdx].Orbit);
602625
}
603626

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

606645
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)