Skip to content

Commit 2ab1e19

Browse files
ivanmorozov333ivanmorozov333
andauthored
correct writing signals (#18572)
Co-authored-by: ivanmorozov333 <imorozov333@ya.ru>
1 parent 754220d commit 2ab1e19

File tree

6 files changed

+45
-19
lines changed

6 files changed

+45
-19
lines changed

ydb/core/tx/columnshard/columnshard__write.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ using namespace NTabletFlatExecutor;
2424
void TColumnShard::OverloadWriteFail(const EOverloadStatus overloadReason, const NEvWrite::TWriteMeta& writeMeta, const ui64 writeSize,
2525
const ui64 cookie, std::unique_ptr<NActors::IEventBase>&& event, const TActorContext& ctx) {
2626
Counters.GetTabletCounters()->IncCounter(COUNTER_WRITE_FAIL);
27+
Counters.GetCSCounters().OnWriteOverload(overloadReason, writeSize);
2728
switch (overloadReason) {
2829
case EOverloadStatus::Disk:
2930
Counters.OnWriteOverloadDisk();
@@ -80,8 +81,8 @@ TColumnShard::EOverloadStatus TColumnShard::CheckOverloadedImmediate(const TInte
8081
return EOverloadStatus::Disk;
8182
}
8283
ui64 txLimit = Settings.OverloadTxInFlight;
83-
const ui64 writesLimit = HasAppData() ? AppDataVerified().ColumnShardConfig.GetWritingInFlightRequestsCountLimit() : 1000;
84-
const ui64 writesSizeLimit = HasAppData() ? AppDataVerified().ColumnShardConfig.GetWritingInFlightRequestBytesLimit() : (((ui64)128) << 20);
84+
const ui64 writesLimit = HasAppData() ? AppDataVerified().ColumnShardConfig.GetWritingInFlightRequestsCountLimit() : 1000000;
85+
const ui64 writesSizeLimit = HasAppData() ? AppDataVerified().ColumnShardConfig.GetWritingInFlightRequestBytesLimit() : (((ui64)1) << 30);
8586
if (txLimit && Executor()->GetStats().TxInFly > txLimit) {
8687
AFL_WARN(NKikimrServices::TX_COLUMNSHARD_WRITE)("event", "shard_overload")("reason", "tx_in_fly")("sum", Executor()->GetStats().TxInFly)(
8788
"limit", txLimit);

ydb/core/tx/columnshard/columnshard_impl.h

Lines changed: 1 addition & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -351,16 +351,7 @@ class TColumnShard: public TActor<TColumnShard>, public NTabletFlatExecutor::TTa
351351
return shift | Counter.Inc();
352352
}
353353

354-
enum class EOverloadStatus {
355-
ShardTxInFly /* "shard_tx" */,
356-
ShardWritesInFly /* "shard_writes" */,
357-
ShardWritesSizeInFly /* "shard_writes_size" */,
358-
InsertTable /* "insert_table" */,
359-
OverloadMetadata /* "overload_metadata" */,
360-
Disk /* "disk" */,
361-
None /* "none" */,
362-
OverloadCompaction /* "overload_compaction" */
363-
};
354+
using EOverloadStatus = EOverloadStatus;
364355

365356
// For syslocks
366357
void IncCounter(NDataShard::ECumulativeCounters counter, ui64 num = 1) const {

ydb/core/tx/columnshard/counters/columnshard.cpp

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
11
#include "columnshard.h"
2-
#include <ydb/core/base/appdata.h>
3-
#include <ydb/core/base/counters.h>
42

53
#include <ydb/library/actors/core/log.h>
64

@@ -11,6 +9,13 @@ TCSCounters::TCSCounters()
119
, WritingCounters(std::make_shared<TWriteCounters>(*this))
1210
, Initialization(*this)
1311
, TxProgress(*this) {
12+
for (auto&& i : GetEnumAllValues<EOverloadStatus>()) {
13+
AFL_VERIFY((ui32)i == WaitingOverloads.size());
14+
auto overloadCounters = CreateSubGroup("overload_type", ::ToString(i));
15+
WaitingOverloads.emplace_back(overloadCounters.GetDeriviative("Overload/Waiting/Count"));
16+
WriteOverloadCount.emplace_back(overloadCounters.GetDeriviative("Overload/Write/Count"));
17+
WriteOverloadBytes.emplace_back(overloadCounters.GetDeriviative("Overload/Write/Bytes"));
18+
}
1419
StartBackgroundCount = TBase::GetDeriviative("StartBackground/Count");
1520
TooEarlyBackgroundCount = TBase::GetDeriviative("TooEarlyBackground/Count");
1621
SetupCompactionCount = TBase::GetDeriviative("SetupCompaction/Count");
@@ -75,4 +80,15 @@ void TCSCounters::OnFailedWriteResponse(const EWriteFailReason reason) const {
7580
it->second->Add(1);
7681
}
7782

83+
void TCSCounters::OnWaitingOverload(const EOverloadStatus status) const {
84+
AFL_VERIFY((ui64)status < WaitingOverloads.size());
85+
WaitingOverloads[(ui64)status]->Inc();
86+
}
87+
88+
void TCSCounters::OnWriteOverload(const EOverloadStatus status, const ui32 size) const {
89+
AFL_VERIFY((ui64)status < WriteOverloadCount.size());
90+
WriteOverloadCount[(ui64)status]->Inc();
91+
WriteOverloadBytes[(ui64)status]->Add(size);
92+
}
93+
7894
}

ydb/core/tx/columnshard/counters/columnshard.h

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,18 +2,28 @@
22
#include "initialization.h"
33
#include "tx_progress.h"
44

5-
#include <ydb/library/signals/owner.h>
6-
7-
#include <ydb/core/tx/columnshard/counters/tablet_counters.h>
85
#include <ydb/core/tx/data_events/common/signals_flow.h>
96

7+
#include <ydb/library/signals/owner.h>
8+
109
#include <library/cpp/monlib/dynamic_counters/counters.h>
1110
#include <util/generic/hash_set.h>
1211

1312
namespace NKikimr::NColumnShard {
1413

14+
enum class EOverloadStatus {
15+
ShardTxInFly /* "shard_tx" */ = 0,
16+
ShardWritesInFly /* "shard_writes" */,
17+
ShardWritesSizeInFly /* "shard_writes_size" */,
18+
InsertTable /* "insert_table" */,
19+
OverloadMetadata /* "overload_metadata" */,
20+
Disk /* "disk" */,
21+
None /* "none" */,
22+
OverloadCompaction /* "overload_compaction" */
23+
};
24+
1525
enum class EWriteFailReason {
16-
Disabled /* "disabled" */,
26+
Disabled /* "disabled" */ = 0,
1727
PutBlob /* "put_blob" */,
1828
LongTxDuplication /* "long_tx_duplication" */,
1929
NoTable /* "no_table" */,
@@ -117,12 +127,19 @@ class TCSCounters: public TCommonCountersOwner {
117127
NMonitoring::TDynamicCounters::TCounterPtr WriteRequests;
118128
THashMap<EWriteFailReason, NMonitoring::TDynamicCounters::TCounterPtr> FailedWriteRequests;
119129
NMonitoring::TDynamicCounters::TCounterPtr SuccessWriteRequests;
130+
std::vector<NMonitoring::TDynamicCounters::TCounterPtr> WaitingOverloads;
131+
std::vector<NMonitoring::TDynamicCounters::TCounterPtr> WriteOverloadCount;
132+
std::vector<NMonitoring::TDynamicCounters::TCounterPtr> WriteOverloadBytes;
120133

121134
public:
122135
const std::shared_ptr<TWriteCounters> WritingCounters;
123136
const TCSInitialization Initialization;
124137
TTxProgressCounters TxProgress;
125138

139+
void OnWaitingOverload(const EOverloadStatus status) const;
140+
141+
void OnWriteOverload(const EOverloadStatus status, const ui32 size) const;
142+
126143
void OnStartWriteRequest() const {
127144
WriteRequests->Add(1);
128145
}

ydb/core/tx/columnshard/counters/ya.make

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ PEERDIR(
2626
ydb/library/actors/core
2727
)
2828

29-
GENERATE_ENUM_SERIALIZATION(columnshard.h)
29+
GENERATE_ENUM_SERIALIZATION_WITH_HEADER(columnshard.h)
3030
GENERATE_ENUM_SERIALIZATION(scan.h)
3131

3232
END()

ydb/core/tx/columnshard/tablet/write_queue.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ bool TWriteTasksQueue::Drain(const bool onWakeup, const TActorContext& ctx) {
3636
for (auto&& i : WriteTasks) {
3737
auto overloadStatus = Owner->CheckOverloadedWait(i.first);
3838
if (overloadStatus != TColumnShard::EOverloadStatus::None) {
39+
Owner->Counters.GetCSCounters().OnWaitingOverload(overloadStatus);
3940
countTasks += i.second.size();
4041
AFL_DEBUG(NKikimrServices::TX_COLUMNSHARD_WRITE)("event", "wait_overload")("status", overloadStatus)("path_id", i.first)(
4142
"size", i.second.size());

0 commit comments

Comments
 (0)