# tpsperf-bench **Repository Path**: BCID-Okey/tpsperf-bench ## Basic Information - **Project Name**: tpsperf-bench - **Description**: Performance benchmark tool for BCID-ETHEREUM. - **Primary Language**: NodeJS - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2019-05-17 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README Proof-of-Authority Performance Benchmark Tool ================= This is a useful tool for benchmarking the impact of network changes on performance. This tool is only used for relative benchmarking. Real-world performance will vary depending on many factors: - Transaction size and type - Node geo-location - Transaction load balancing - Node size - Memory - CPU - Disk type - Network I/O #### mockTransactions.js This tool will a send large quantity specific okey transactions while interval. These transactions are submitted in batches. Batch size is configurable. The transaction submitter will wait one second between batch submissions. #### perfGauge.js This tool will listen for blocks and calculate the transactions per second as blocks are created. Current TPS will be displayed in the console using `clui`. Some transactions are sampled from each block to ensure they are successful. Once 50 blocks have been seen, the aggregate results are printed out and the program terminates. #### Usage `yarn` or `npm install` node mockTransactions.js \[REQUESTS_PER_BATCH\] \[RPC_ENDPOINT\] node perfGauge.js \[RPC_ENDPOINT\] ![perfGauge results](./media/poa-perf.PNG) #### Hardware Benchmarking Results ##### Methodology - Performance Runner Machine - Ubuntu 18.04 - Standard D8s v3 (8 vcpus, 32 GB memory) - 1000 transaction batches, 100 ms between batches - 50 block sample - Sampled .1% of transactions to ensure success - Deployment Topology - 2 VMs West US, 2 VMs in East US - Transactions were submitted to the West US instance from a West US machine - Query latency was measured from the East US instance via my dev machine ##### Results ![benchmark results](./media/benchmark-results.PNG)