@@ -848,9 +848,6 @@ bool TPDisk::ChunkWritePiece(TChunkWrite *evChunkWrite, ui32 pieceShift, ui32 pi
848
848
849
849
guard.Release ();
850
850
851
- LWTRACK (PDiskChunkWritePieceSendToDevice, evChunkWrite->Orbit , PDiskId, evChunkWrite->Owner , chunkIdx,
852
- pieceShift, pieceSize);
853
-
854
851
ui32 bytesAvailable = pieceSize;
855
852
Y_ABORT_UNLESS (evChunkWrite->BytesWritten == pieceShift);
856
853
const ui32 count = evChunkWrite->PartsPtr ->Size ();
@@ -909,6 +906,9 @@ bool TPDisk::ChunkWritePiece(TChunkWrite *evChunkWrite, ui32 pieceShift, ui32 pi
909
906
LOG_INFO (*ActorSystem, NKikimrServices::BS_PDISK, " PDiskId# %" PRIu32 " chunkIdx# %" PRIu32
910
907
" was zero-padded after writing" , (ui32)PDiskId, (ui32)chunkIdx);
911
908
}
909
+ LWTRACK (PDiskChunkWriteLastPieceSendToDevice, evChunkWrite->Orbit , PDiskId, evChunkWrite->Owner , chunkIdx,
910
+ pieceShift, pieceSize);
911
+
912
912
auto traceId = evChunkWrite->SpanStack .GetTraceId ();
913
913
evChunkWrite->Completion ->Orbit = std::move (evChunkWrite->Orbit );
914
914
writer.Flush (evChunkWrite->ReqId , &traceId, evChunkWrite->Completion .Release ());
@@ -951,7 +951,7 @@ void TPDisk::SendChunkReadError(const TIntrusivePtr<TChunkRead>& read, TStringSt
951
951
}
952
952
953
953
TPDisk::EChunkReadPieceResult TPDisk::ChunkReadPiece (TIntrusivePtr<TChunkRead> &read, ui64 pieceCurrentSector,
954
- ui64 pieceSizeLimit, ui64 *reallyReadDiskBytes, NWilson::TTraceId traceId) {
954
+ ui64 pieceSizeLimit, ui64 *reallyReadDiskBytes, NWilson::TTraceId traceId, NLWTrace::TOrbit&& orbit ) {
955
955
if (read->IsReplied ) {
956
956
return ReadPieceResultOk;
957
957
}
@@ -1020,6 +1020,8 @@ TPDisk::EChunkReadPieceResult TPDisk::ChunkReadPiece(TIntrusivePtr<TChunkRead> &
1020
1020
THolder<TCompletionChunkReadPart> completion (new TCompletionChunkReadPart (this , read, bytesToRead,
1021
1021
payloadBytesToRead, payloadOffset, read->FinalCompletion , isTheLastPart, std::move (span)));
1022
1022
completion->CostNs = DriveModel.TimeForSizeNs (bytesToRead, read->ChunkIdx , TDriveModel::OP_TYPE_READ);
1023
+ LWTRACK (PDiskChunkReadPiecesSendToDevice, orbit, PDiskId);
1024
+ completion->Orbit = std::move (orbit);
1023
1025
Y_ABORT_UNLESS (bytesToRead <= completion->GetBuffer ()->Size ());
1024
1026
ui8 *data = completion->GetBuffer ()->Data ();
1025
1027
BlockDevice->PreadAsync (data, bytesToRead, readOffset, completion.Release (),
@@ -2289,7 +2291,6 @@ void TPDisk::ProcessChunkReadQueue() {
2289
2291
bool isComplete = false ;
2290
2292
ui8 priorityClass = read->PriorityClass ;
2291
2293
NHPTimer::STime creationTime = read->CreationTime ;
2292
- LWTRACK (PDiskChunkReadPiecesSendToDevice, read->Orbit , PDiskId);
2293
2294
if (!read->IsReplied ) {
2294
2295
LOG_DEBUG_S (*ActorSystem, NKikimrServices::BS_PDISK, " PDiskId# " << (ui32)PDiskId
2295
2296
<< " ReqId# " << reqId
@@ -2301,7 +2302,7 @@ void TPDisk::ProcessChunkReadQueue() {
2301
2302
ui64 currentLimit = Min (bufferSize, piece->PieceSizeLimit - size);
2302
2303
ui64 reallyReadDiskBytes;
2303
2304
EChunkReadPieceResult result = ChunkReadPiece (read, piece->PieceCurrentSector + size / Format.SectorSize ,
2304
- currentLimit, &reallyReadDiskBytes, piece->SpanStack .GetTraceId ());
2305
+ currentLimit, &reallyReadDiskBytes, piece->SpanStack .GetTraceId (), std::move (piece-> Orbit ) );
2305
2306
isComplete = (result != ReadPieceResultInProgress);
2306
2307
// Read pieces is sliced previously and it is expected that ChunkReadPiece will read exactly
2307
2308
// currentLimit bytes
@@ -2977,7 +2978,6 @@ bool TPDisk::PreprocessRequest(TRequestBase *request) {
2977
2978
2978
2979
auto result = std::make_unique<TEvChunkWriteResult>(NKikimrProto::OK, ev.ChunkIdx , ev.Cookie ,
2979
2980
GetStatusFlags (ev.Owner , ev.OwnerGroupType ), TString ());
2980
- result->Orbit = std::move (ev.Orbit );
2981
2981
2982
2982
++state.OperationsInProgress ;
2983
2983
++ownerData.InFlight ->ChunkWrites ;
@@ -3219,7 +3219,7 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) {
3219
3219
TChunkWritePiece *piece = new TChunkWritePiece (whole, smallJobCount * smallJobSize, largeJobSize, std::move (span));
3220
3220
piece->EstimateCost (DriveModel);
3221
3221
AddJobToForseti (cbs, piece, request->JobKind );
3222
- LWTRACK (PDiskAddWritePieceToScheduler , request->Orbit , PDiskId, request->ReqId .Id ,
3222
+ LWTRACK (PDiskChunkWriteAddToScheduler , request->Orbit , PDiskId, request->ReqId .Id ,
3223
3223
HPSecondsFloat (HPNow () - request->CreationTime ), request->Owner , request->IsFast ,
3224
3224
request->PriorityClass , whole->TotalSize );
3225
3225
} else if (request->GetType () == ERequestType::RequestChunkRead) {
@@ -3240,7 +3240,8 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) {
3240
3240
// Schedule small job.
3241
3241
auto piece = new TChunkReadPiece (read, idx * smallJobSize,
3242
3242
smallJobSize * Format.SectorSize , false , std::move (span));
3243
- LWTRACK (PDiskChunkReadPieceAddToScheduler, read->Orbit , PDiskId, idx, idx * smallJobSize * Format.SectorSize ,
3243
+ read->Orbit .Fork (piece->Orbit );
3244
+ LWTRACK (PDiskChunkReadPieceAddToScheduler, piece->Orbit , PDiskId, idx, idx * smallJobSize * Format.SectorSize ,
3244
3245
smallJobSize * Format.SectorSize );
3245
3246
piece->EstimateCost (DriveModel);
3246
3247
piece->SelfPointer = piece;
@@ -3251,7 +3252,8 @@ void TPDisk::PushRequestToForseti(TRequestBase *request) {
3251
3252
span.Attribute (" is_last_piece" , true );
3252
3253
auto piece = new TChunkReadPiece (read, smallJobCount * smallJobSize,
3253
3254
largeJobSize * Format.SectorSize , true , std::move (span));
3254
- LWTRACK (PDiskChunkReadPieceAddToScheduler, read->Orbit , PDiskId, smallJobCount,
3255
+ read->Orbit .Fork (piece->Orbit );
3256
+ LWTRACK (PDiskChunkReadPieceAddToScheduler, piece->Orbit , PDiskId, smallJobCount,
3255
3257
smallJobCount * smallJobSize * Format.SectorSize , largeJobSize * Format.SectorSize );
3256
3258
piece->EstimateCost (DriveModel);
3257
3259
piece->SelfPointer = piece;
0 commit comments