From 80a9ad7125235442dfd43c9d621785c64ef70cad Mon Sep 17 00:00:00 2001 From: SpyCheese Date: Tue, 17 Oct 2023 16:14:31 +0300 Subject: [PATCH] Improve tps-counter, add it to github builds --- .github/workflows/ubuntu-22.04-compile.yml | 4 ++-- .github/workflows/ubuntu-compile.yml | 4 ++-- tps-counter/tps-counter.cpp | 20 ++++++++++++++++++-- 3 files changed, 22 insertions(+), 6 deletions(-) diff --git a/.github/workflows/ubuntu-22.04-compile.yml b/.github/workflows/ubuntu-22.04-compile.yml index fc13701e5..905ff73df 100644 --- a/.github/workflows/ubuntu-22.04-compile.yml +++ b/.github/workflows/ubuntu-22.04-compile.yml @@ -40,12 +40,12 @@ jobs: cd build cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$rootPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$rootPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator proxy-liteserver + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state emulator proxy-liteserver tps-counter - name: Find & copy binaries run: | mkdir artifacts - cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* build/utils/proxy-liteserver artifacts + cp build/storage/storage-daemon/storage-daemon build/storage/storage-daemon/storage-daemon-cli build/crypto/fift build/crypto/tlbc build/crypto/func build/crypto/create-state build/validator-engine-console/validator-engine-console build/tonlib/tonlib-cli build/tonlib/libtonlibjson.so.0.5 build/http/http-proxy build/rldp-http-proxy/rldp-http-proxy build/dht-server/dht-server build/lite-client/lite-client build/validator-engine/validator-engine build/utils/generate-random-id build/utils/json2tlo build/adnl/adnl-proxy build/emulator/libemulator.* build/utils/proxy-liteserver build/tps-counter/tps-counter artifacts chmod +x artifacts/* cp -R crypto/smartcont artifacts/ cp -R crypto/fift/lib artifacts/ diff --git a/.github/workflows/ubuntu-compile.yml b/.github/workflows/ubuntu-compile.yml index 6907606d4..a29fae4d2 100644 --- a/.github/workflows/ubuntu-compile.yml +++ b/.github/workflows/ubuntu-compile.yml @@ -44,12 +44,12 @@ jobs: buildPath=`pwd` cmake -GNinja -DOPENSSL_FOUND=1 -DOPENSSL_INCLUDE_DIR=$buildPath/openssl_1_1_1/include -DOPENSSL_CRYPTO_LIBRARY=$buildPath/openssl_1_1_1/libcrypto.a -DCMAKE_BUILD_TYPE=Release -DPORTABLE=1 -DTON_ARCH= -DCMAKE_CXX_FLAGS="-mavx2" .. - ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator proxy-liteserver + ninja storage-daemon storage-daemon-cli fift func tonlib tonlibjson tonlib-cli validator-engine lite-client pow-miner validator-engine-console generate-random-id json2tlo dht-server http-proxy rldp-http-proxy adnl-proxy create-state create-hardfork emulator proxy-liteserver tps-counter - name: Find & copy binaries run: | mkdir artifacts-${{ matrix.os }} - cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* build-${{ matrix.os }}/utils/proxy-liteserver artifacts-${{ matrix.os }} + cp build-${{ matrix.os }}/storage/storage-daemon/storage-daemon build-${{ matrix.os }}/storage/storage-daemon/storage-daemon-cli build-${{ matrix.os }}/crypto/fift build-${{ matrix.os }}/crypto/tlbc build-${{ matrix.os }}/crypto/func build-${{ matrix.os }}/crypto/create-state build-${{ matrix.os }}/validator-engine-console/validator-engine-console build-${{ matrix.os }}/tonlib/tonlib-cli build-${{ matrix.os }}/tonlib/libtonlibjson.so.0.5 build-${{ matrix.os }}/http/http-proxy build-${{ matrix.os }}/rldp-http-proxy/rldp-http-proxy build-${{ matrix.os }}/dht-server/dht-server build-${{ matrix.os }}/lite-client/lite-client build-${{ matrix.os }}/validator-engine/validator-engine build-${{ matrix.os }}/utils/generate-random-id build-${{ matrix.os }}/utils/json2tlo build-${{ matrix.os }}/adnl/adnl-proxy build-${{ matrix.os }}/emulator/libemulator.* build-${{ matrix.os }}/utils/proxy-liteserver build-${{ matrix.os }}/tps-counter/tps-counter artifacts-${{ matrix.os }} chmod +x artifacts-${{ matrix.os }}/* cp -R crypto/smartcont artifacts-${{ matrix.os }} cp -R crypto/fift/lib artifacts-${{ matrix.os }} diff --git a/tps-counter/tps-counter.cpp b/tps-counter/tps-counter.cpp index d1e571fc8..46f0ffe7e 100644 --- a/tps-counter/tps-counter.cpp +++ b/tps-counter/tps-counter.cpp @@ -44,6 +44,7 @@ std::string global_config; int msplit = 0; int duration = 16; int start_delay = 30; +int max_shards = 1000000000; td::Bits256 to_bits256(const std::string& s) { td::Bits256 x; @@ -153,9 +154,14 @@ class TpsCounter : public td::actor::Actor { block::ShardConfig sh_conf; CHECK(sh_conf.unpack(vm::load_cell_slice_ref(root))); auto ids = sh_conf.get_shard_hash_ids(true); + int rem = max_shards; for (auto id : ids) { + if (rem == 0) { + break; + } auto ref = sh_conf.get_shard_hash(ton::ShardIdFull(id)); if (ref.not_null()) { + --rem; auto block = ref->top_block_id(); LOG(INFO) << " " << block.id.to_str(); add_id(block); @@ -194,7 +200,12 @@ class TpsCounter : public td::actor::Actor { } auto R2 = fetch_tl_object(R.ok(), true); if (R2.is_error()) { - LOG(WARNING) << R2.error(); + auto R3 = fetch_tl_object(R.ok(), true); + if (R3.is_ok()) { + LOG(WARNING) << shard.to_str() << " Liteserver error: " << R3.ok()->code_ << " " << R3.ok()->message_; + } else { + LOG(WARNING) << shard.to_str() << " " << R2.error(); + } td::actor::send_closure(SelfId, &TpsCounter::send_query_retr, std::move(q2), shard, std::move(promise)); return; } @@ -321,7 +332,8 @@ class TpsCounter : public td::actor::Actor { OneStat qrt[4]; Stat() { int s = msplit; - for (int i = 0; i < (1 << s); ++i) { + int rem = max_shards; + for (int i = 0; i < (1 << s) && rem > 0; ++i, --rem) { shards[ShardIdFull(0, (td::uint64)(i * 2 + 1) << (64 - s - 1))]; } } @@ -384,6 +396,10 @@ int main(int argc, char* argv[]) { start_delay = td::to_integer_safe(arg).move_as_ok(); CHECK(start_delay >= 0); }); + p.add_option('M', "max-shards", "use only first X shards (default=unlimited)", [&](td::Slice arg) { + max_shards = td::to_integer_safe(arg).move_as_ok(); + CHECK(start_delay >= 0); + }); p.add_option('h', "help", "prints a help message", [&]() { char b[10240]; td::StringBuilder sb(td::MutableSlice{b, 10000});