Skip to content

Commit 5d02f01

Browse files
authored
Add stat counters for PutsPerSecond. (#8201)
1 parent 78bb468 commit 5d02f01

File tree

1 file changed

+37
-11
lines changed

1 file changed

+37
-11
lines changed

ydb/core/load_test/group_write.cpp

Lines changed: 37 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
111111
BytesInFlight -= size;
112112
--RequestsInFlight;
113113
}
114-
114+
115115
TString ToString() const{
116116
return TStringBuilder() << "{"
117117
<< " Requests# " << RequestsInFlight << "/" << MaxRequestsInFlight
@@ -311,7 +311,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
311311
Now = now;
312312
while (now >= CurrentEpochEnd) {
313313
CurrentEpochEnd += EpochDuration;
314-
RequestsPerEpoch = CalculateRequestRate(now);
314+
RequestsPerEpoch = CalculateRequestRate(now);
315315
PlannedForCurrentEpoch += RequestsPerEpoch;
316316
}
317317

@@ -401,11 +401,13 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
401401
TDeque<std::pair<ui64, ui64>> WritesInFlightTimestamps;
402402
TSpeedTracker<ui64> MegabytesPerSecondST;
403403
TQuantileTracker<ui64> MegabytesPerSecondQT;
404+
TSpeedTracker<ui64> PutsPerSecondST;
405+
TQuantileTracker<ui64> PutsPerSecondQT;
404406
std::unique_ptr<TLatencyTrackerUs> ResponseQT;
405407
TQuantileTracker<ui32> WritesInFlightQT;
406408
TQuantileTracker<ui64> WriteBytesInFlightQT;
407409
TDeque<TMonotonic> IssuedWriteTimestamp;
408-
410+
409411
// Reads
410412
const NKikimrBlobStorage::EGetHandleClass GetHandleClass;
411413
TRequestDispatchingSettings ReadSettings;
@@ -420,7 +422,10 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
420422
TQuantileTracker<ui32> ReadsInFlightQT;
421423
TQuantileTracker<ui64> ReadBytesInFlightQT;
422424

423-
TIntrusivePtr<NMonitoring::TCounterForPtr> MaxInFlightLatency;
425+
::NMonitoring::TDynamicCounters::TCounterPtr MaxInFlightLatency;
426+
::NMonitoring::TDynamicCounters::TCounterPtr OkPutResultsCounter;
427+
::NMonitoring::TDynamicCounters::TCounterPtr BadPutResultsCounter;
428+
424429
bool IsWorkingNow = true;
425430

426431
TMonotonic LastLatencyTrackerUpdate;
@@ -476,6 +481,9 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
476481
, MegabytesPerSecondST(TDuration::Seconds(3)) // average speed at last 3 seconds
477482
, MegabytesPerSecondQT(ExposePeriod, Counters->GetSubgroup("metric", "writeSpeed"),
478483
"bytesPerSecond", Percentiles)
484+
, PutsPerSecondST(TDuration::Seconds(3)) // average speed at last 3 seconds
485+
, PutsPerSecondQT(ExposePeriod, Counters->GetSubgroup("metric", "writeSpeed"),
486+
"putsPerSecond", Percentiles)
479487
, ResponseQT(new TLatencyTrackerUs())
480488
, WritesInFlightQT(ExposePeriod, Counters->GetSubgroup("metric", "writesInFlight"),
481489
"items", Percentiles)
@@ -500,10 +508,12 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
500508
, TracingThrottler(tracingThrottler)
501509
{
502510
*Counters->GetCounter("tabletId") = tabletId;
503-
const auto& percCounters = Counters->GetSubgroup("subsystem", "latency");
504-
MaxInFlightLatency = percCounters->GetCounter("MaxInFlightLatencyUs");
505-
ResponseQT->Initialize(percCounters->GetSubgroup("sensor", "writeResponseUs"), Percentiles);
506-
ReadResponseQT->Initialize(percCounters->GetSubgroup("sensor", "readResponseUs"), Percentiles);
511+
const auto& percCounters = Counters->GetSubgroup("sensor", "microseconds");
512+
MaxInFlightLatency = percCounters->GetCounter("MaxInFlightLatency");
513+
OkPutResultsCounter = percCounters->GetCounter("OkPutResults", true);
514+
BadPutResultsCounter = percCounters->GetCounter("BadPutResults", true);
515+
ResponseQT->Initialize(percCounters->GetSubgroup("metric", "writeResponse"), Percentiles);
516+
ReadResponseQT->Initialize(percCounters->GetSubgroup("metric", "readResponse"), Percentiles);
507517
}
508518

509519
TString PrintMe() {
@@ -662,7 +672,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
662672
auto callback = [this](IEventBase *event, const TActorContext& ctx) {
663673
auto *res = dynamic_cast<TEvBlobStorage::TEvCollectGarbageResult*>(event);
664674
Y_ABORT_UNLESS(res);
665-
675+
666676
if (!MainCycleStarted) {
667677
Self.InitialAllocationCompleted(ctx);
668678
}
@@ -701,6 +711,9 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
701711
MegabytesPerSecondST.Add(now, 0);
702712
MegabytesPerSecondQT.Add(now, 0);
703713

714+
PutsPerSecondST.Add(now, 0);
715+
PutsPerSecondQT.Add(now, 0);
716+
704717
ReadMegabytesPerSecondST.Add(now, 0);
705718
ReadMegabytesPerSecondQT.Add(now, 0);
706719

@@ -716,6 +729,10 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
716729
if (MegabytesPerSecondST.CalculateSpeed(&speed)) {
717730
MegabytesPerSecondQT.Add(now, speed);
718731
}
732+
PutsPerSecondST.Add(now, OkPutResults);
733+
if (PutsPerSecondST.CalculateSpeed(&speed)) {
734+
PutsPerSecondQT.Add(now, speed);
735+
}
719736
ReadMegabytesPerSecondST.Add(now, TotalBytesRead);
720737
if (ReadMegabytesPerSecondST.CalculateSpeed(&speed)) {
721738
ReadMegabytesPerSecondQT.Add(now, speed);
@@ -741,6 +758,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
741758

742759
void ExposeCounters(const TActorContext &ctx) {
743760
MegabytesPerSecondQT.CalculateQuantiles();
761+
PutsPerSecondQT.CalculateQuantiles();
744762
ReadMegabytesPerSecondQT.CalculateQuantiles();
745763

746764
WritesInFlightQT.CalculateQuantiles();
@@ -798,8 +816,9 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
798816

799817
static constexpr size_t count = 5;
800818
std::array<size_t, count> nums{{9000, 9900, 9990, 9999, 10000}};
801-
std::array<ui64, count> qSpeed;
819+
std::array<ui64, count> qSpeed, qPPS;
802820
MegabytesPerSecondQT.CalculateQuantiles(count, nums.data(), 10000, qSpeed.data());
821+
PutsPerSecondQT.CalculateQuantiles(count, nums.data(), 10000, qPPS.data());
803822

804823
TABLER() {
805824
TABLED() { str << "Writes per second"; }
@@ -818,6 +837,12 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
818837
ui64 x = qSpeed[i] * 100 / 1048576;
819838
TABLED() { str << Sprintf("%" PRIu64 ".%02d MB/s", x / 100, int(x % 100)); }
820839
}
840+
841+
TABLER() {
842+
TABLED() { str << Sprintf("WriteSpeed@ %d.%02d%%", int(nums[i] / 100), int(nums[i] % 100)); }
843+
ui64 x = qPPS[i] * 100;
844+
TABLED() { str << Sprintf("%" PRIu64 ".%02d Puts/s", x / 100, int(x % 100)); }
845+
}
821846
}
822847

823848
ReadMegabytesPerSecondQT.CalculateQuantiles(count, nums.data(), 10000, qSpeed.data());
@@ -894,6 +919,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
894919
WriteSettings.DelayManager->CountResponse();
895920
const bool ok = CheckStatus(ctx, res, {NKikimrProto::EReplyStatus::OK});
896921
++ (ok ? OkPutResults : BadPutResults);
922+
++ *(ok ? OkPutResultsCounter : BadPutResultsCounter);
897923

898924
const TLogoBlobID& id = res->Id;
899925
const ui32 size = id.BlobSize();
@@ -1045,7 +1071,7 @@ class TLogWriterLoadTestActor : public TActorBootstrapped<TLogWriterLoadTestActo
10451071
ui32 initialBlobs = InitialAllocation.ConfirmedSize();
10461072
Y_ABORT_UNLESS(confirmedBlobs + initialBlobs > 0);
10471073
ui32 blobIdx = RandomNumber(confirmedBlobs + initialBlobs);
1048-
1074+
10491075
if (blobIdx < confirmedBlobs) {
10501076
auto iter = ConfirmedBlobIds.begin();
10511077
std::advance(iter, blobIdx);

0 commit comments

Comments
 (0)