Skip to content

Commit c47a041

Browse files
authored
Refactor Wilson Tracing in PDisk (#13406)
1 parent 4418508 commit c47a041

11 files changed

+183
-186
lines changed

ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -17,8 +17,7 @@ namespace NPDisk {
1717
void TCompletionLogWrite::Exec(TActorSystem *actorSystem) {
1818
// bool isNewChunksCommited = false;
1919
if (CommitedLogChunks) {
20-
NWilson::TSpan span(TWilson::PDiskBasic, TraceId.Clone(), "PDisk.CommitLogChunks");
21-
auto* req = PDisk->ReqCreator.CreateFromArgs<TCommitLogChunks>(std::move(CommitedLogChunks), std::move(span));
20+
auto* req = PDisk->ReqCreator.CreateFromArgs<TCommitLogChunks>(std::move(CommitedLogChunks));
2221
PDisk->InputRequest(req);
2322
//isNewChunksCommited = true;
2423
}
@@ -69,6 +68,7 @@ void TCompletionLogWrite::Exec(TActorSystem *actorSystem) {
6968
(*evLog.LogCallback)(actorSystem, *evLog.Result);
7069
}
7170
if (evLog.Result->Status == NKikimrProto::OK) {
71+
evLog.Span.EndOk();
7272
if (batch) {
7373
if (batch->Sender == evLog.Sender && batch->Result->Results.size() < MAX_RESULTS_PER_BATCH) {
7474
batch->Result->Results.push_back(std::move(evLog.Result->Results[0]));
@@ -80,6 +80,7 @@ void TCompletionLogWrite::Exec(TActorSystem *actorSystem) {
8080
batch = &evLog;
8181
}
8282
} else {
83+
evLog.Span.EndError(evLog.Result->ErrorReason);
8384
// Send all previous successes...
8485
if (batch) {
8586
sendResponse(batch);
@@ -115,8 +116,7 @@ void TCompletionLogWrite::Release(TActorSystem *actorSystem) {
115116
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
116117

117118
TCompletionChunkReadPart::TCompletionChunkReadPart(TPDisk *pDisk, TIntrusivePtr<TChunkRead> &read, ui64 rawReadSize,
118-
ui64 payloadReadSize, ui64 commonBufferOffset, TCompletionChunkRead *cumulativeCompletion, bool isTheLastPart,
119-
NWilson::TSpan&& span)
119+
ui64 payloadReadSize, ui64 commonBufferOffset, TCompletionChunkRead *cumulativeCompletion, bool isTheLastPart)
120120
: TCompletionAction()
121121
, PDisk(pDisk)
122122
, Read(read)
@@ -127,10 +127,14 @@ TCompletionChunkReadPart::TCompletionChunkReadPart(TPDisk *pDisk, TIntrusivePtr<
127127
, ChunkNonce(CumulativeCompletion->GetChunkNonce())
128128
, Buffer(PDisk->BufferPool->Pop())
129129
, IsTheLastPart(isTheLastPart)
130-
, Span(std::move(span))
130+
, Span(read->Span.CreateChild(TWilson::PDiskDetailed, "PDisk.ChunkRead.CompletionPart"))
131131
{
132132
TCompletionAction::CanBeExecutedInAdditionalCompletionThread = true;
133133

134+
Span.Attribute("common_buffer_offset", (i64)CommonBufferOffset)
135+
.Attribute("raw_read_size", RawReadSize)
136+
.Attribute("is_last_piece", IsTheLastPart);
137+
134138
TBufferWithGaps *commonBuffer = CumulativeCompletion->GetCommonBuffer();
135139
Destination = commonBuffer->RawDataPtr(CommonBufferOffset, PayloadReadSize);
136140

@@ -150,7 +154,6 @@ TBuffer *TCompletionChunkReadPart::GetBuffer() {
150154
return Buffer.Get();
151155
}
152156

153-
154157
void TCompletionChunkReadPart::UnencryptData(TActorSystem *actorSystem) {
155158
const TDiskFormat &format = PDisk->Format;
156159

@@ -271,7 +274,6 @@ void TCompletionChunkReadPart::UnencryptData(TActorSystem *actorSystem) {
271274
}
272275

273276
void TCompletionChunkReadPart::Exec(TActorSystem *actorSystem) {
274-
auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkReadPart.Exec");
275277
Y_VERIFY(actorSystem);
276278
Y_VERIFY(CumulativeCompletion);
277279
if (TCompletionAction::Result != EIoResult::Ok) {
@@ -280,6 +282,7 @@ void TCompletionChunkReadPart::Exec(TActorSystem *actorSystem) {
280282
}
281283

282284
if (Read->ChunkEncrypted) {
285+
Span.Event("PDisk.CompletionChunkReadPart.DecryptionStart");
283286
UnencryptData(actorSystem);
284287
}
285288

@@ -291,8 +294,7 @@ void TCompletionChunkReadPart::Exec(TActorSystem *actorSystem) {
291294

292295
AtomicSub(PDisk->InFlightChunkRead, RawReadSize);
293296
RawReadSize = 0;
294-
execSpan.EndOk();
295-
Span.EndOk();
297+
Span.Event("PDisk.CompletionChunkReadPart.ExecStop", {{"RawReadSize", RawReadSize}, {"EncryptedChunk", Read->ChunkEncrypted}});
296298
delete this;
297299
}
298300

@@ -308,7 +310,7 @@ void TCompletionChunkReadPart::Release(TActorSystem *actorSystem) {
308310
}
309311

310312
TCompletionChunkRead::TCompletionChunkRead(TPDisk *pDisk, TIntrusivePtr<TChunkRead> &read, std::function<void()> onDestroy,
311-
ui64 chunkNonce, NWilson::TSpan&& span)
313+
ui64 chunkNonce)
312314
: TCompletionAction()
313315
, PDisk(pDisk)
314316
, Read(read)
@@ -317,7 +319,7 @@ TCompletionChunkRead::TCompletionChunkRead(TPDisk *pDisk, TIntrusivePtr<TChunkRe
317319
, Deletes(0)
318320
, OnDestroy(std::move(onDestroy))
319321
, ChunkNonce(chunkNonce)
320-
, Span(std::move(span))
322+
, Span(read->Span.CreateChild(TWilson::PDiskBasic, "PDisk.CompletionChunkRead"))
321323
, DoubleFreeCanary(ReferenceCanary)
322324
{
323325
// in case of plain chunks we can have unaligned offset and unaligned size of the read
@@ -348,7 +350,7 @@ TCompletionChunkRead::~TCompletionChunkRead() {
348350
}
349351

350352
void TCompletionChunkRead::Exec(TActorSystem *actorSystem) {
351-
auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkRead.Exec");
353+
Read->Span.Event("PDisk.CompletionChunkRead.Exec");
352354
THolder<TEvChunkReadResult> result = MakeHolder<TEvChunkReadResult>(NKikimrProto::OK,
353355
Read->ChunkIdx, Read->Offset, Read->Cookie, PDisk->GetStatusFlags(Read->Owner, Read->OwnerGroupType), "");
354356

@@ -374,10 +376,9 @@ void TCompletionChunkRead::Exec(TActorSystem *actorSystem) {
374376

375377
actorSystem->Send(Read->Sender, result.Release());
376378
Read->IsReplied = true;
379+
Read->Span.EndOk();
377380

378381
PDisk->Mon.GetReadCounter(Read->PriorityClass)->CountResponse();
379-
execSpan.EndOk();
380-
Span.EndOk();
381382
delete this;
382383
}
383384

@@ -396,6 +397,7 @@ void TCompletionChunkRead::ReplyError(TActorSystem *actorSystem, TString reason)
396397
LOG_WARN_S(*actorSystem, NKikimrServices::BS_PDISK, error.Str());
397398
actorSystem->Send(Read->Sender, result.Release());
398399
Read->IsReplied = true;
400+
Read->Span.EndError(reason);
399401
}
400402

401403
// Returns true if there is some pending requests to wait
@@ -442,9 +444,7 @@ void TChunkTrimCompletion::Exec(TActorSystem *actorSystem) {
442444
<< ui64(responseTimeMs) << " sizeBytes# " << SizeBytes);
443445
LWPROBE(PDiskTrimResponseTime, PDisk->PCtx->PDiskId, ReqId.Id, responseTimeMs, SizeBytes);
444446
PDisk->Mon.Trim.CountResponse();
445-
NWilson::TSpan span(TWilson::PDiskBasic, std::move(TraceId), "PDisk.TryTrimChunk", NWilson::EFlags::AUTO_END, actorSystem);
446-
span.Attribute("size", static_cast<i64>(SizeBytes));
447-
TTryTrimChunk *tryTrim = PDisk->ReqCreator.CreateFromArgs<TTryTrimChunk>(SizeBytes, std::move(span));
447+
TTryTrimChunk *tryTrim = PDisk->ReqCreator.CreateFromArgs<TTryTrimChunk>(SizeBytes);
448448
PDisk->InputRequest(tryTrim);
449449
delete this;
450450
}

ydb/core/blobstorage/pdisk/blobstorage_pdisk_completion_impl.h

Lines changed: 5 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,7 @@ class TCompletionChunkWrite : public TCompletionAction {
8383

8484
TCompletionChunkWrite(const TActorId &recipient, TEvChunkWriteResult *event,
8585
TPDiskMon *mon, ui32 pdiskId, NHPTimer::STime startTime, size_t sizeBytes,
86-
ui8 priorityClass, std::function<void()> onDestroy, TReqId reqId,
87-
NWilson::TSpan&& span)
86+
ui8 priorityClass, std::function<void()> onDestroy, TReqId reqId, NWilson::TSpan&& span)
8887
: Recipient(recipient)
8988
, Event(event)
9089
, Mon(mon)
@@ -147,7 +146,7 @@ class TCompletionChunkWrite : public TCompletionAction {
147146
}
148147

149148
void Exec(TActorSystem *actorSystem) override {
150-
auto execSpan = Span.CreateChild(TWilson::PDiskDetailed, "PDisk.CompletionChunkWrite.Exec");
149+
Span.Event("PDisk.CompletionChunkWrite.Exec");
151150
double responseTimeMs = HPMilliSecondsFloat(HPNow() - StartTime);
152151
STLOGX(*actorSystem, PRI_DEBUG, BS_PDISK, BPD01, "TCompletionChunkWrite::Exec",
153152
(DiskId, PDiskId),
@@ -165,8 +164,6 @@ class TCompletionChunkWrite : public TCompletionAction {
165164
if (Mon) {
166165
Mon->GetWriteCounter(PriorityClass)->CountResponse();
167166
}
168-
execSpan.EndOk();
169-
Span.EndOk();
170167
delete this;
171168
}
172169

@@ -225,7 +222,7 @@ class TCompletionChunkRead : public TCompletionAction {
225222
const ui64 DoubleFreeCanary;
226223
public:
227224
TCompletionChunkRead(TPDisk *pDisk, TIntrusivePtr<TChunkRead> &read, std::function<void()> onDestroy,
228-
ui64 chunkNonce, NWilson::TSpan&& span);
225+
ui64 chunkNonce);
229226
void Exec(TActorSystem *actorSystem) override;
230227
~TCompletionChunkRead();
231228
void ReplyError(TActorSystem *actorSystem, TString reason);
@@ -256,7 +253,7 @@ class TCompletionChunkRead : public TCompletionAction {
256253

257254
void Release(TActorSystem *actorSystem) override {
258255
ReplyError(actorSystem, "TCompletionChunkRead is released");
259-
Span.EndError("release");
256+
Read->Span.EndError("TCompletionChunkRead is released");
260257
}
261258
};
262259

@@ -274,8 +271,7 @@ class TCompletionChunkReadPart : public TCompletionAction {
274271
NWilson::TSpan Span;
275272
public:
276273
TCompletionChunkReadPart(TPDisk *pDisk, TIntrusivePtr<TChunkRead> &read, ui64 rawReadSize, ui64 payloadReadSize,
277-
ui64 commonBufferOffset, TCompletionChunkRead *cumulativeCompletion, bool isTheLastPart,
278-
NWilson::TSpan&& span);
274+
ui64 commonBufferOffset, TCompletionChunkRead *cumulativeCompletion, bool isTheLastPart);
279275

280276

281277
bool CanHandleResult() const override {

0 commit comments

Comments
 (0)