diff options
author | azevaykin <azevaykin@yandex-team.com> | 2023-06-23 12:06:30 +0300 |
---|---|---|
committer | azevaykin <azevaykin@yandex-team.com> | 2023-06-23 12:06:30 +0300 |
commit | cf5721e6720a858911ba779b066590df89d6b35c (patch) | |
tree | 256a8002a428271eac92434828fd28d581a82c1e | |
parent | 1a9848795e99198bc8fcba5dc558a49056cc6e76 (diff) | |
download | ydb-cf5721e6720a858911ba779b066590df89d6b35c.tar.gz |
Add sleep before writer thread start. Increase default TotalSec & WarmupSec.
15 files changed, 55 insertions, 70 deletions
diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.cpp index 0c0945e2db..c76717fc3f 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.cpp @@ -34,7 +34,7 @@ void TTopicWorkloadReader::ReaderLoop(TTopicWorkloadReaderParams&& params) { (*params.StartedCount)++; - const TInstant endTime = Now() + TDuration::Seconds(params.Seconds + 3); + const TInstant endTime = Now() + TDuration::Seconds(params.TotalSec + 3); while (Now() < endTime && !*params.ErrorFlag) { TInstant st = TInstant::Now(); diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.h index 69f507b5d6..3fe3c39e07 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_reader.h @@ -11,7 +11,7 @@ namespace NYdb { namespace NConsoleClient { struct TTopicWorkloadReaderParams { - size_t Seconds; + size_t TotalSec; NYdb::TDriver* Driver; std::shared_ptr<TLog> Log; std::shared_ptr<TTopicWorkloadStatsCollector> StatsCollector; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.cpp index 4f0d577147..ee878d6800 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.cpp @@ -36,11 +36,11 @@ void TCommandWorkloadTopicRunFull::Config(TConfig& config) { // Common params config.Opts->AddLongOption('s', "seconds", "Seconds to run workload.") - .DefaultValue(10) - .StoreResult(&Seconds); + .DefaultValue(60) + .StoreResult(&TotalSec); config.Opts->AddLongOption('w', "window", "Output window duration in seconds.") .DefaultValue(1) - .StoreResult(&WindowDurationSec); + .StoreResult(&WindowSec); config.Opts->AddLongOption('q', "quiet", "Quiet mode. Doesn't print statistics each second.") .StoreTrue(&Quiet); config.Opts->AddLongOption("print-timestamp", "Print timestamp each second with statistics.") @@ -49,8 +49,8 @@ void TCommandWorkloadTopicRunFull::Config(TConfig& config) { .DefaultValue(50) .StoreResult(&Percentile); config.Opts->AddLongOption("warmup", "Warm-up time in seconds.") - .DefaultValue(1) - .StoreResult(&Warmup); + .DefaultValue(5) + .StoreResult(&WarmupSec); config.Opts->AddLongOption("topic", "Topic name.") .DefaultValue(TOPIC) .StoreResult(&TopicName); @@ -91,7 +91,7 @@ void TCommandWorkloadTopicRunFull::Parse(TConfig& config) if (Percentile > 100 || Percentile <= 0) { throw TMisuseException() << "--percentile should be in range (0,100]."; } - if (Warmup >= Seconds) { + if (WarmupSec >= TotalSec) { throw TMisuseException() << "--warmup should be less than --seconds."; } } @@ -101,7 +101,7 @@ int TCommandWorkloadTopicRunFull::Run(TConfig& config) { Log->SetFormatter(GetPrefixLogFormatter("")); Driver = std::make_unique<NYdb::TDriver>(CreateDriver(config, CreateLogBackend("cerr", TClientCommand::TConfig::VerbosityLevelToELogPriority(config.VerbosityLevel)))); - StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(ProducerThreadCount, ConsumerCount * ConsumerThreadCount, Quiet, PrintTimestamp, WindowDurationSec, Seconds, Warmup, Percentile, ErrorFlag); + StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(ProducerThreadCount, ConsumerCount * ConsumerThreadCount, Quiet, PrintTimestamp, WindowSec, TotalSec, WarmupSec, Percentile, ErrorFlag); StatsCollector->PrintHeader(); std::vector<TString> generatedMessages = TTopicWorkloadWriterWorker::GenerateMessages(MessageSize); @@ -115,7 +115,7 @@ int TCommandWorkloadTopicRunFull::Run(TConfig& config) { for (ui32 consumerIdx = 0; consumerIdx < ConsumerCount; ++consumerIdx) { for (ui32 consumerThreadIdx = 0; consumerThreadIdx < ConsumerThreadCount; ++consumerThreadIdx) { TTopicWorkloadReaderParams readerParams{ - .Seconds = Seconds, + .TotalSec = TotalSec, .Driver = Driver.get(), .Log = Log, .StatsCollector = StatsCollector, @@ -135,7 +135,8 @@ int TCommandWorkloadTopicRunFull::Run(TConfig& config) { auto producerStartedCount = std::make_shared<std::atomic_uint>(); for (ui32 writerIdx = 0; writerIdx < ProducerThreadCount; ++writerIdx) { TTopicWorkloadWriterParams writerParams{ - .Seconds = Seconds, + .TotalSec = TotalSec, + .WarmupSec = WarmupSec, .Driver = Driver.get(), .Log = Log, .StatsCollector = StatsCollector, diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.h index 3137de8ccf..ce73272bae 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_full.h @@ -17,8 +17,7 @@ namespace NYdb { private: TString TopicName; - ui32 Seconds; - ui32 Warmup; + ui32 WarmupSec; double Percentile; size_t MessageRate; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.cpp index af590c3718..d6ea6a6039 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.cpp @@ -33,11 +33,11 @@ void TCommandWorkloadTopicRunRead::Config(TConfig& config) { // Common params config.Opts->AddLongOption('s', "seconds", "Seconds to run workload.") - .DefaultValue(10) - .StoreResult(&Seconds); + .DefaultValue(60) + .StoreResult(&TotalSec); config.Opts->AddLongOption('w', "window", "Output window duration in seconds.") .DefaultValue(1) - .StoreResult(&WindowDurationSec); + .StoreResult(&WindowSec); config.Opts->AddLongOption('q', "quiet", "Quiet mode. Doesn't print statistics each second.") .StoreTrue(&Quiet); config.Opts->AddLongOption("print-timestamp", "Print timestamp each second with statistics.") @@ -46,8 +46,8 @@ void TCommandWorkloadTopicRunRead::Config(TConfig& config) { .DefaultValue(50) .StoreResult(&Percentile); config.Opts->AddLongOption("warmup", "Warm-up time in seconds.") - .DefaultValue(1) - .StoreResult(&Warmup); + .DefaultValue(5) + .StoreResult(&WarmupSec); config.Opts->AddLongOption("topic", "Topic name.") .DefaultValue(TOPIC) .StoreResult(&TopicName); @@ -70,7 +70,7 @@ void TCommandWorkloadTopicRunRead::Parse(TConfig& config) if (Percentile > 100 || Percentile <= 0) { throw TMisuseException() << "--percentile should be in range (0,100]."; } - if (Warmup >= Seconds) { + if (WarmupSec >= TotalSec) { throw TMisuseException() << "--warmup should be less than --seconds."; } } @@ -80,7 +80,7 @@ int TCommandWorkloadTopicRunRead::Run(TConfig& config) { Log->SetFormatter(GetPrefixLogFormatter("")); Driver = std::make_unique<NYdb::TDriver>(CreateDriver(config, CreateLogBackend("cerr", TClientCommand::TConfig::VerbosityLevelToELogPriority(config.VerbosityLevel)))); - StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(0, ConsumerCount * ConsumerThreadCount, Quiet, PrintTimestamp, WindowDurationSec, Seconds, Warmup, Percentile, ErrorFlag); + StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(0, ConsumerCount * ConsumerThreadCount, Quiet, PrintTimestamp, WindowSec, TotalSec, WarmupSec, Percentile, ErrorFlag); StatsCollector->PrintHeader(); std::vector<std::future<void>> threads; @@ -89,7 +89,7 @@ int TCommandWorkloadTopicRunRead::Run(TConfig& config) { for (ui32 consumerIdx = 0; consumerIdx < ConsumerCount; ++consumerIdx) { for (ui32 consumerThreadIdx = 0; consumerThreadIdx < ConsumerThreadCount; ++consumerThreadIdx) { TTopicWorkloadReaderParams readerParams{ - .Seconds = Seconds, + .TotalSec = TotalSec, .Driver = Driver.get(), .Log = Log, .StatsCollector = StatsCollector, diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.h index 75c46caa6f..7f7a30bd88 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_read.h @@ -17,8 +17,7 @@ namespace NYdb { private: TString TopicName; - ui32 Seconds; - ui32 Warmup; + ui32 WarmupSec; double Percentile; ui32 ConsumerThreadCount; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.cpp index a2c5a39279..a55cc0bdc7 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.cpp @@ -35,11 +35,11 @@ void TCommandWorkloadTopicRunWrite::Config(TConfig& config) { // Common params config.Opts->AddLongOption('s', "seconds", "Seconds to run workload.") - .DefaultValue(10) - .StoreResult(&Seconds); + .DefaultValue(60) + .StoreResult(&TotalSec); config.Opts->AddLongOption('w', "window", "Output window duration in seconds.") .DefaultValue(1) - .StoreResult(&WindowDurationSec); + .StoreResult(&WindowSec); config.Opts->AddLongOption('q', "quiet", "Quiet mode. Doesn't print statistics each second.") .StoreTrue(&Quiet); config.Opts->AddLongOption("print-timestamp", "Print timestamp each second with statistics.") @@ -48,8 +48,8 @@ void TCommandWorkloadTopicRunWrite::Config(TConfig& config) { .DefaultValue(50) .StoreResult(&Percentile); config.Opts->AddLongOption("warmup", "Warm-up time in seconds.") - .DefaultValue(1) - .StoreResult(&Warmup); + .DefaultValue(5) + .StoreResult(&WarmupSec); config.Opts->AddLongOption("topic", "Topic name.") .DefaultValue(TOPIC) .StoreResult(&TopicName); @@ -85,7 +85,7 @@ void TCommandWorkloadTopicRunWrite::Parse(TConfig& config) if (Percentile > 100 || Percentile <= 0) { throw TMisuseException() << "--percentile should be in range (0,100]."; } - if (Warmup >= Seconds) { + if (WarmupSec >= TotalSec) { throw TMisuseException() << "--warmup should be less than --seconds."; } } @@ -94,7 +94,7 @@ int TCommandWorkloadTopicRunWrite::Run(TConfig& config) { Log = std::make_shared<TLog>(CreateLogBackend("cerr", TClientCommand::TConfig::VerbosityLevelToELogPriority(config.VerbosityLevel))); Log->SetFormatter(GetPrefixLogFormatter("")); Driver = std::make_unique<NYdb::TDriver>(CreateDriver(config, CreateLogBackend("cerr", TClientCommand::TConfig::VerbosityLevelToELogPriority(config.VerbosityLevel)))); - StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(ProducerThreadCount, 0, Quiet, PrintTimestamp, WindowDurationSec, Seconds, Warmup, Percentile, ErrorFlag); + StatsCollector = std::make_shared<TTopicWorkloadStatsCollector>(ProducerThreadCount, 0, Quiet, PrintTimestamp, WindowSec, TotalSec, WarmupSec, Percentile, ErrorFlag); StatsCollector->PrintHeader(); std::vector<TString> generatedMessages = TTopicWorkloadWriterWorker::GenerateMessages(MessageSize); @@ -107,7 +107,8 @@ int TCommandWorkloadTopicRunWrite::Run(TConfig& config) { auto producerStartedCount = std::make_shared<std::atomic_uint>(); for (ui32 writerIdx = 0; writerIdx < ProducerThreadCount; ++writerIdx) { TTopicWorkloadWriterParams writerParams{ - .Seconds = Seconds, + .TotalSec = TotalSec, + .WarmupSec = WarmupSec, .Driver = Driver.get(), .Log = Log, .StatsCollector = StatsCollector, diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.h index 99def712d1..d9b0e38960 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_run_write.h @@ -16,8 +16,7 @@ namespace NYdb { virtual int Run(TConfig& config) override; private: TString TopicName; - ui32 Seconds; - ui32 Warmup; + ui32 WarmupSec; double Percentile; size_t MessageRate; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats.h index 59ec9c0a2a..d7c85fbffb 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats.h @@ -11,19 +11,14 @@ namespace NYdb { ui64 WriteTime; ui64 InflightMessages; }; - typedef THolder<WriterEvent> WriterEventRef; - struct ReaderEvent { ui64 MessageSize; ui64 FullTime; }; - typedef THolder<ReaderEvent> ReaderEventRef; - struct LagEvent { ui64 LagMessages; ui64 LagTime; }; - typedef THolder<LagEvent> LagEventRef; TTopicWorkloadStats(); diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.cpp index 355de9c107..57881a1b8d 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.cpp @@ -16,8 +16,8 @@ TTopicWorkloadStatsCollector::TTopicWorkloadStatsCollector( , ReaderCount(readerCount) , Quiet(quiet) , PrintTimestamp(printTimestamp) - , WindowDurationSec(windowDurationSec) - , TotalDurationSec(totalDurationSec) + , WindowSec(windowDurationSec) + , TotalSec(totalDurationSec) , WarmupSec(warmupSec) , Percentile(percentile) , ErrorFlag(errorFlag) @@ -63,9 +63,9 @@ void TTopicWorkloadStatsCollector::PrintHeader(bool total) const { void TTopicWorkloadStatsCollector::PrintWindowStatsLoop() { auto StartTime = Now(); - auto StopTime = StartTime + TDuration::Seconds(TotalDurationSec + 1); + auto StopTime = StartTime + TDuration::Seconds(TotalSec + 1); int windowIt = 1; - auto windowDuration = TDuration::Seconds(WindowDurationSec); + auto windowDuration = TDuration::Seconds(WindowSec); while (Now() < StopTime && !*ErrorFlag) { if (Now() > StartTime + windowIt * windowDuration && !*ErrorFlag) { CollectThreadEvents(windowIt); @@ -91,7 +91,7 @@ void TTopicWorkloadStatsCollector::PrintStats(TMaybe<ui32> windowIt) const { return; const auto& stats = windowIt.Empty() ? TotalStats : *WindowStats; - double seconds = windowIt.Empty() ? TotalDurationSec : WindowDurationSec; + double seconds = windowIt.Empty() ? TotalSec - WarmupSec : WindowSec; TString totalIt = windowIt.Empty() ? "Total" : std::to_string(windowIt.GetRef()); Cout << totalIt; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.h index 4ce7716359..2a30cb815b 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_stats_collector.h @@ -53,8 +53,8 @@ namespace NYdb { bool Quiet; bool PrintTimestamp; - double WindowDurationSec; - double TotalDurationSec; + double WindowSec; + double TotalSec; double WarmupSec; double Percentile; diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.cpp b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.cpp index 7c0e26e39d..71da2fa2d8 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.cpp +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.cpp @@ -11,7 +11,6 @@ TTopicWorkloadWriterWorker::TTopicWorkloadWriterWorker( , StatsCollector(params.StatsCollector) { - Closed = std::make_shared<std::atomic<bool>>(false); CreateWorker(); } @@ -21,15 +20,6 @@ TTopicWorkloadWriterWorker::~TTopicWorkloadWriterWorker() WriteSession->Close(); } -void TTopicWorkloadWriterWorker::CreateWorker() { - WRITE_LOG(Params.Log, ELogPriority::TLOG_INFO, TStringBuilder() << "Create writer worker for ProducerId " << Params.ProducerId << " PartitionId " << Params.PartitionId); - - if (WriteSession) - WriteSession->Close(); - - CreateTopicWorker(); -} - void TTopicWorkloadWriterWorker::Close() { Closed->store(true); if (WriteSession) @@ -90,7 +80,9 @@ bool TTopicWorkloadWriterWorker::WaitForInitSeqNo() } void TTopicWorkloadWriterWorker::Process() { - const TInstant endTime = TInstant::Now() + TDuration::Seconds(Params.Seconds); + Sleep(TDuration::Seconds((float)Params.WarmupSec * Params.WriterIdx / Params.ProducerThreadCount)); + + const TInstant endTime = TInstant::Now() + TDuration::Seconds(Params.TotalSec); StartTimestamp = Now(); WRITE_LOG(Params.Log, ELogPriority::TLOG_DEBUG, TStringBuilder() << "StartTimestamp " << StartTimestamp); @@ -212,8 +204,8 @@ bool TTopicWorkloadWriterWorker::ProcessSessionClosedEvent( return false; } -void TTopicWorkloadWriterWorker::CreateTopicWorker() { - WRITE_LOG(Params.Log, ELogPriority::TLOG_INFO, "Creating writer worker..."); +void TTopicWorkloadWriterWorker::CreateWorker() { + WRITE_LOG(Params.Log, ELogPriority::TLOG_INFO, TStringBuilder() << "Create writer worker for ProducerId " << Params.ProducerId << " PartitionId " << Params.PartitionId); Y_VERIFY(Params.Driver); NYdb::NTopic::TWriteSessionSettings settings; settings.Codec((NYdb::NTopic::ECodec)Params.Codec); diff --git a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.h b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.h index 8c6b6ae960..4cb0f716e1 100644 --- a/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.h +++ b/ydb/public/lib/ydb_cli/commands/topic_workload/topic_workload_writer.h @@ -12,7 +12,8 @@ namespace NYdb { namespace NConsoleClient { struct TTopicWorkloadWriterParams { - size_t Seconds; + size_t TotalSec; + ui32 WarmupSec; NYdb::TDriver* Driver; std::shared_ptr<TLog> Log; std::shared_ptr<TTopicWorkloadStatsCollector> StatsCollector; @@ -42,8 +43,6 @@ namespace NYdb { void CreateWorker(); - void CreateTopicWorker(); - bool ProcessAckEvent(const NYdb::NTopic::TWriteSessionEvent::TAcksEvent& event); bool ProcessReadyToAcceptEvent(NYdb::NTopic::TWriteSessionEvent::TReadyToAcceptEvent& event); diff --git a/ydb/public/lib/ydb_cli/commands/ydb_workload.cpp b/ydb/public/lib/ydb_cli/commands/ydb_workload.cpp index 637c5fb1b6..7640a167d5 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_workload.cpp +++ b/ydb/public/lib/ydb_cli/commands/ydb_workload.cpp @@ -46,12 +46,12 @@ TCommandWorkload::TCommandWorkload() TWorkloadCommand::TWorkloadCommand(const TString& name, const std::initializer_list<TString>& aliases, const TString& description) : TYdbCommand(name, aliases, description) - , Seconds(0) + , TotalSec(0) , Threads(0) , ClientTimeoutMs(0) , OperationTimeoutMs(0) , CancelAfterTimeoutMs(0) - , WindowDurationSec(0) + , WindowSec(0) , Quiet(false) , PrintTimestamp(false) , WindowHist(60000, 2) // highestTrackableValue 60000ms = 60s, precision 2 @@ -66,7 +66,7 @@ void TWorkloadCommand::Config(TConfig& config) { TYdbCommand::Config(config); config.Opts->AddLongOption('s', "seconds", "Seconds to run workload.") - .DefaultValue(10).StoreResult(&Seconds); + .DefaultValue(10).StoreResult(&TotalSec); config.Opts->AddLongOption('t', "threads", "Number of parallel threads in workload.") .DefaultValue(10).StoreResult(&Threads); config.Opts->AddLongOption("quiet", "Quiet mode. Doesn't print statistics each second.") @@ -80,7 +80,7 @@ void TWorkloadCommand::Config(TConfig& config) { config.Opts->AddLongOption("cancel-after", "Cancel after timeout in ms.") .DefaultValue(800).StoreResult(&CancelAfterTimeoutMs); config.Opts->AddLongOption("window", "Window duration in seconds.") - .DefaultValue(1).StoreResult(&WindowDurationSec); + .DefaultValue(1).StoreResult(&WindowSec); } void TWorkloadCommand::PrepareForRun(TConfig& config) { @@ -183,7 +183,7 @@ int TWorkloadCommand::RunWorkload(TWorkloadQueryGenPtr workloadGen, const int ty }, 0, Threads, NPar::TLocalExecutor::MED_PRIORITY); int windowIt = 1; - auto windowDuration = TDuration::Seconds(WindowDurationSec); + auto windowDuration = TDuration::Seconds(WindowSec); while (Now() < StopTime) { if (StartTime + windowIt * windowDuration < Now()) { PrintWindowStats(windowIt++); @@ -199,7 +199,7 @@ int TWorkloadCommand::RunWorkload(TWorkloadQueryGenPtr workloadGen, const int ty auto stats = GetWorkloadStats(TotalHist); std::cout << std::endl << "Txs\tTxs/Sec\tRetries\tErrors\tp50(ms)\tp95(ms)\tp99(ms)\tpMax(ms)" << std::endl - << stats.OpsCount << "\t" << std::setw(7) << stats.OpsCount / (Seconds * 1.0) << "\t" << TotalRetries.load() << "\t" + << stats.OpsCount << "\t" << std::setw(7) << stats.OpsCount / (TotalSec * 1.0) << "\t" << TotalRetries.load() << "\t" << TotalErrors.load() << "\t" << stats.Percentile50 << "\t" << stats.Percentile95 << "\t" << stats.Percentile99 << "\t" << stats.Percentile100 << std::endl; @@ -215,7 +215,7 @@ void TWorkloadCommand::PrintWindowStats(int windowIt) { WindowHist.Reset(); } if (!Quiet) { - std::cout << windowIt << "\t" << std::setw(7) << stats.OpsCount / WindowDurationSec << "\t" << retries << "\t" + std::cout << windowIt << "\t" << std::setw(7) << stats.OpsCount / WindowSec << "\t" << retries << "\t" << errors << "\t" << stats.Percentile50 << "\t" << stats.Percentile95 << "\t" << stats.Percentile99 << "\t" << stats.Percentile100; if (PrintTimestamp) { diff --git a/ydb/public/lib/ydb_cli/commands/ydb_workload.h b/ydb/public/lib/ydb_cli/commands/ydb_workload.h index 6ea3abce25..59145fc419 100644 --- a/ydb/public/lib/ydb_cli/commands/ydb_workload.h +++ b/ydb/public/lib/ydb_cli/commands/ydb_workload.h @@ -44,12 +44,12 @@ protected: std::unique_ptr<NYdb::TDriver> Driver; std::unique_ptr<NTable::TTableClient> TableClient; - size_t Seconds; + size_t TotalSec; size_t Threads; unsigned int ClientTimeoutMs; unsigned int OperationTimeoutMs; unsigned int CancelAfterTimeoutMs; - unsigned int WindowDurationSec; + unsigned int WindowSec; bool Quiet; bool PrintTimestamp; |