From 1d07a9e6ebb4d88fdf8ff0f93bdb89f0641101c7 Mon Sep 17 00:00:00 2001 From: "pavel.uhanov" <pavel.uhanov@demlabs.net> Date: Mon, 8 Jul 2024 13:04:32 +0000 Subject: [PATCH] support-11005 --- dap-sdk | 2 +- modules/net/dap_chain_ledger.c | 8 +++---- modules/net/dap_chain_net.c | 4 +--- modules/net/dap_chain_node.c | 28 +++++++++++++++++++++++ modules/net/include/dap_chain_ledger.h | 2 +- modules/type/blocks/dap_chain_cs_blocks.c | 7 +++++- 6 files changed, 41 insertions(+), 10 deletions(-) diff --git a/dap-sdk b/dap-sdk index 634bf59c2a..95eff772b4 160000 --- a/dap-sdk +++ b/dap-sdk @@ -1 +1 @@ -Subproject commit 634bf59c2a94a7dec82fcd9304e2f160b3419c45 +Subproject commit 95eff772b40056a7fab20438556257ee1ac7bd78 diff --git a/modules/net/dap_chain_ledger.c b/modules/net/dap_chain_ledger.c index feb006a659..36c08bc8e9 100644 --- a/modules/net/dap_chain_ledger.c +++ b/modules/net/dap_chain_ledger.c @@ -5608,7 +5608,7 @@ unsigned dap_ledger_count(dap_ledger_t *a_ledger) * @param a_ts_to * @return */ -uint64_t dap_ledger_count_from_to(dap_ledger_t * a_ledger, dap_time_t a_ts_from, dap_time_t a_ts_to) +uint64_t dap_ledger_count_from_to(dap_ledger_t * a_ledger, dap_nanotime_t a_ts_from, dap_nanotime_t a_ts_to) { uint64_t l_ret = 0; dap_ledger_private_t *l_ledger_pvt = PVT(a_ledger); @@ -5616,17 +5616,17 @@ uint64_t dap_ledger_count_from_to(dap_ledger_t * a_ledger, dap_time_t a_ts_from, pthread_rwlock_rdlock(&l_ledger_pvt->ledger_rwlock); if ( a_ts_from && a_ts_to) { HASH_ITER(hh, l_ledger_pvt->ledger_items , l_iter_current, l_item_tmp){ - if ( l_iter_current->tx->header.ts_created >= a_ts_from && l_iter_current->tx->header.ts_created <= a_ts_to ) + if ( l_iter_current->ts_added >= a_ts_from && l_iter_current->ts_added <= a_ts_to ) l_ret++; } } else if ( a_ts_to ){ HASH_ITER(hh, l_ledger_pvt->ledger_items , l_iter_current, l_item_tmp){ - if ( l_iter_current->tx->header.ts_created <= a_ts_to ) + if ( l_iter_current->ts_added <= a_ts_to ) l_ret++; } } else if ( a_ts_from ){ HASH_ITER(hh, l_ledger_pvt->ledger_items , l_iter_current, l_item_tmp){ - if ( l_iter_current->tx->header.ts_created >= a_ts_from ) + if ( l_iter_current->ts_added >= a_ts_from ) l_ret++; } } else { diff --git a/modules/net/dap_chain_net.c b/modules/net/dap_chain_net.c index 1dc2e92778..f3ebff86c0 100644 --- a/modules/net/dap_chain_net.c +++ b/modules/net/dap_chain_net.c @@ -1199,8 +1199,6 @@ static int s_cli_net(int argc, char **argv, void **reply) time_t l_from_ts = mktime(&l_from_tm); time_t l_to_ts = mktime(&l_to_tm); // Produce strings - char l_from_str_new[50]; - char l_to_str_new[50]; strftime(l_from_str_new, sizeof(l_from_str_new), c_time_fmt,&l_from_tm ); strftime(l_to_str_new, sizeof(l_to_str_new), c_time_fmt,&l_to_tm ); json_object *l_jobj_stats = json_object_new_object(); @@ -1222,7 +1220,7 @@ static int s_cli_net(int argc, char **argv, void **reply) json_object_object_add(l_jobj_stats, "from", l_jobj_from); json_object_object_add(l_jobj_stats, "to", l_jobj_to); log_it(L_INFO, "Calc TPS from %s to %s", l_from_str_new, l_to_str_new); - uint64_t l_tx_count = dap_ledger_count_from_to ( l_net->pub.ledger, l_from_ts, l_to_ts); + uint64_t l_tx_count = dap_ledger_count_from_to ( l_net->pub.ledger, l_from_ts * 1000000000, l_to_ts * 1000000000); long double l_tpd = l_to_ts == l_from_ts ? 0 : (long double) l_tx_count / (long double) ((long double)(l_to_ts - l_from_ts) / 86400); char *l_tpd_str = dap_strdup_printf("%.3Lf", l_tpd); diff --git a/modules/net/dap_chain_node.c b/modules/net/dap_chain_node.c index f48a4fcce0..3ab907653d 100644 --- a/modules/net/dap_chain_node.c +++ b/modules/net/dap_chain_node.c @@ -290,10 +290,38 @@ void dap_chain_node_mempool_process_all(dap_chain_t *a_chain, bool a_force) dap_chain_net_t *l_net = dap_chain_net_by_id(a_chain->net_id); if (!a_force && !l_net->pub.mempool_autoproc) return; +#ifdef DAP_TPS_TEST + FILE *l_file = fopen("/opt/cellframe-node/share/ca/mempool_start.txt", "r"); + if (l_file) { + fclose(l_file); + l_file = fopen("/opt/cellframe-node/share/ca/mempool_finish.txt", "r"); + if(!l_file) { + log_it(L_TPS, "Wait mempool"); + return; + } + log_it(L_TPS, "Mempool ready"); + fclose(l_file); + l_file = fopen("/opt/cellframe-node/share/ca/tps_start.txt", "r"); + if (!l_file) { + l_file = fopen("/opt/cellframe-node/share/ca/tps_start.txt", "w"); + char l_from_str[50]; + const char c_time_fmt[]="%Y-%m-%d_%H:%M:%S"; + struct tm l_from_tm = {}; + time_t l_ts_now = time(NULL); + localtime_r(&l_ts_now, &l_from_tm); + strftime(l_from_str, sizeof(l_from_str), c_time_fmt, &l_from_tm); + fputs(l_from_str, l_file); + } + fclose(l_file); + } +#endif char *l_gdb_group_mempool = dap_chain_net_get_gdb_group_mempool_new(a_chain); size_t l_objs_size = 0; dap_global_db_obj_t *l_objs = dap_global_db_get_all_sync(l_gdb_group_mempool, &l_objs_size); if (l_objs_size) { +#ifdef DAP_TPS_TEST + log_it(L_TPS, "Get %zu datums from mempool", l_objs_size); +#endif for (size_t i = 0; i < l_objs_size; i++) { if (!l_objs[i].value_len) continue; diff --git a/modules/net/include/dap_chain_ledger.h b/modules/net/include/dap_chain_ledger.h index e6d04d4ad2..9e6ff60313 100644 --- a/modules/net/include/dap_chain_ledger.h +++ b/modules/net/include/dap_chain_ledger.h @@ -338,7 +338,7 @@ void dap_ledger_purge(dap_ledger_t *a_ledger, bool a_preserve_db); * Return number transactions from the cache */ unsigned dap_ledger_count(dap_ledger_t *a_ledger); -uint64_t dap_ledger_count_from_to(dap_ledger_t * a_ledger, dap_time_t a_ts_from, dap_time_t a_ts_to); +uint64_t dap_ledger_count_from_to(dap_ledger_t * a_ledger, dap_nanotime_t a_ts_from, dap_nanotime_t a_ts_to); /** * Check whether used 'out' items diff --git a/modules/type/blocks/dap_chain_cs_blocks.c b/modules/type/blocks/dap_chain_cs_blocks.c index 977a85e400..ec33832dbd 100644 --- a/modules/type/blocks/dap_chain_cs_blocks.c +++ b/modules/type/blocks/dap_chain_cs_blocks.c @@ -2241,6 +2241,9 @@ static size_t s_callback_add_datums(dap_chain_t *a_chain, dap_chain_datum_t **a_ size_t l_datum_processed = 0; pthread_rwlock_wrlock(&l_blocks_pvt->rwlock); +#ifdef DAP_TPS_TEST + log_it(L_TPS, "Start tps %zu datums add", a_datums_count); +#endif for (size_t i = 0; i < a_datums_count; ++i) { dap_chain_datum_t *l_datum = a_datums[i]; size_t l_datum_size = dap_chain_datum_size(l_datum); @@ -2259,10 +2262,12 @@ static size_t s_callback_add_datums(dap_chain_t *a_chain, dap_chain_datum_t **a_ l_blocks->block_new->hdr.cell_id.uint64 = a_chain->cells->id.uint64; l_blocks->block_new->hdr.chain_id.uint64 = l_blocks->chain->id.uint64; } - l_blocks->block_new_size = dap_chain_block_datum_add(&l_blocks->block_new, l_blocks->block_new_size, l_datum, l_datum_size); l_datum_processed++; } +#ifdef DAP_TPS_TEST + log_it(L_TPS, "Finish tps %zu datums add", a_datums_count); +#endif pthread_rwlock_unlock(&l_blocks_pvt->rwlock); return l_datum_processed; } -- GitLab