@@ -38,8 +38,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
3838 TRootCause RootCauseTrack;
3939 NLWTrace::TOrbit Orbit;
4040 const TInstant Deadline;
41- TInstant StartTime;
42- TInstant StartTimePut;
41+ TMonotonic StartTimePut;
4342 ui32 RequestsSent = 0 ;
4443 ui32 ResponsesReceived = 0 ;
4544 ui32 GroupSize;
@@ -80,7 +79,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
8079 }
8180 GetsAccelerated++;
8281
83- GetImpl.RegisterGetAcceleration ( );
82+ GetImpl.History . AddAcceleration ( false );
8483 TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
8584 TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
8685 GetImpl.AccelerateGet (LogCtx, GetUnresponsiveDisksMask (), vGets, vPuts);
@@ -96,7 +95,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
9695 }
9796 PutsAccelerated++;
9897
99- GetImpl.RegisterPutAcceleration ( );
98+ GetImpl.History . AddAcceleration ( true );
10099 TDeque<std::unique_ptr<TEvBlobStorage::TEvVGet>> vGets;
101100 TDeque<std::unique_ptr<TEvBlobStorage::TEvVPut>> vPuts;
102101 GetImpl.AcceleratePut (LogCtx, GetUnresponsiveDisksMask (), vGets, vPuts);
@@ -116,7 +115,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
116115 if (vPuts.size ()) {
117116 if (!IsPutStarted) {
118117 IsPutStarted = true ;
119- StartTimePut = TActivationContext::Now ();
118+ StartTimePut = TActivationContext::Monotonic ();
120119 }
121120 }
122121 for (size_t i = 0 ; i < vGets.size (); ++i) {
@@ -153,6 +152,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
153152 const ui64 cookie = ev->Record .GetCookie ();
154153 SendToQueue (std::move (ev), cookie);
155154 }
155+ GetImpl.History .AddAllWaiting ();
156156 }
157157
158158 ui32 CountDisksWithActiveRequests () {
@@ -331,8 +331,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
331331 if (CountDisksWithActiveRequests () <= 2 ) {
332332 ui64 timeToAccelerateUs = GetImpl.GetTimeToAccelerateGetNs (LogCtx) / 1000 ;
333333 TDuration timeToAccelerate = TDuration::MicroSeconds (timeToAccelerateUs);
334- TInstant now = TActivationContext::Now ();
335- TInstant nextAcceleration = StartTime + timeToAccelerate;
334+ TMonotonic now = TActivationContext::Monotonic ();
335+ TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
336336 if (nextAcceleration > now) {
337337 ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
338338 Schedule (nextAcceleration - now, new TEvAccelerateGet (causeIdx));
@@ -350,8 +350,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
350350 if (CountDisksWithActiveRequests () <= 2 ) {
351351 ui64 timeToAccelerateUs = GetImpl.GetTimeToAcceleratePutNs (LogCtx) / 1000 ;
352352 TDuration timeToAccelerate = TDuration::MicroSeconds (timeToAccelerateUs);
353- TInstant now = TActivationContext::Now ();
354- TInstant nextAcceleration = StartTime + timeToAccelerate;
353+ TMonotonic now = TActivationContext::Monotonic ();
354+ TMonotonic nextAcceleration = RequestStartTime + timeToAccelerate;
355355 if (nextAcceleration > now) {
356356 ui64 causeIdx = RootCauseTrack.RegisterAccelerate ();
357357 Schedule (nextAcceleration - now, new TEvAcceleratePut (causeIdx));
@@ -364,8 +364,8 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
364364 }
365365
366366 void SendReplyAndDie (TAutoPtr<TEvBlobStorage::TEvGetResult> &evResult) {
367- const TInstant now = TActivationContext::Now ();
368- const TDuration duration = ( now > StartTime) ? (now - StartTime) : TDuration::MilliSeconds ( 0 ) ;
367+ const TMonotonic now = TActivationContext::Monotonic ();
368+ const TDuration duration = now - RequestStartTime ;
369369 NKikimrBlobStorage::EGetHandleClass handleClass = GetImpl.GetHandleClass ();
370370 Mon->CountGetResponseTime (Info->GetDeviceType (), handleClass, evResult->PayloadSizeBytes (), duration);
371371 *Mon->ActiveGetCapacity -= ReportedBytes;
@@ -387,7 +387,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
387387 success);
388388 DSP_LOG_LOG_S (success ? NLog::PRI_INFO : NLog::PRI_NOTICE, " BPG68" , " Result# " << evResult->Print (false ));
389389
390- if (TActivationContext::Now () - StartTime >= LongRequestThreshold) {
390+ if (TActivationContext::Monotonic () - RequestStartTime >= LongRequestThreshold) {
391391 if (AllowToReport (GetImpl.GetHandleClass ())) {
392392 STLOG (PRI_WARN, BS_PROXY_GET, BPG71, " Long TEvGet request detected" , \
393393 (LongRequestThreshold, LongRequestThreshold), \
@@ -423,8 +423,7 @@ class TBlobStorageGroupGetRequest : public TBlobStorageGroupRequestActor {
423423 params.AccelerationParams, LogCtx.RequestPrefix)
424424 , Orbit(std::move(params.Common.Event->Orbit))
425425 , Deadline(params.Common.Event->Deadline)
426- , StartTime(params.Common.Now)
427- , StartTimePut(StartTime)
426+ , StartTimePut(RequestStartTime)
428427 , GroupSize(Info->Type.BlobSubgroupSize())
429428 , ReportedBytes(0 )
430429 , AccelerationParams(params.AccelerationParams)
0 commit comments