CN112905407A - 一种基于预编译合约的区块链性能检测方法及系统 - Google Patents
一种基于预编译合约的区块链性能检测方法及系统 Download PDFInfo
- Publication number
- CN112905407A CN112905407A CN202011586814.XA CN202011586814A CN112905407A CN 112905407 A CN112905407 A CN 112905407A CN 202011586814 A CN202011586814 A CN 202011586814A CN 112905407 A CN112905407 A CN 112905407A
- Authority
- CN
- China
- Prior art keywords
- node
- data
- performance detection
- precompiled
- contract
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/3006—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开提供了一种基于预编译合约的区块链性能检测方法及系统,获取当前节点的进程PID数据;根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程的CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监控数据,得到最终的区块链性能检测结果;本公开利用区块链智能合约天然具有的性质,无需安装额外的监控系统,达到同时监控所有节点的能力,给后期的部署运维带来极大的方便;同时支持很细粒度的系统操作,避开EVM的限制,可以做到无限扩展。
Description
技术领域
本公开涉及区块链技术领域,特别涉及一种基于预编译合约的区块链性能 检测方法及系统。
背景技术
本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有 技术。
区块链技术的落地应用在各行业越来越广泛,相应也出现很多开源的区块 链应用技术。但基于区块链的监控需求一般都是开发一套单独系统去读取本地 物理服务器的CPU使用率、网络流量、磁盘实时传输率等信息。
发明人发现,很多机构有加入节点群组的需求,但是并不希望安装除了节 点之外的其他系统模块,因此,对于节点的系统性能就无法形成有效监控,而 单节点的性能问题势必影响区块链整体的节点速度,无法对整个区块链群组进 行监控。
发明内容
为了解决现有技术的不足,本公开提供了一种基于预编译合约的区块链性 能检测方法及系统,利用预编译合约或者内置合约绕过EVM直接由宿主机运 行,proc文件系统在运行时访问内核内部数据结构和改变内核设置,直接获取 节点所在宿主机的性能参数,利用共识机制每个节点保存所有节点数据并落盘, 通过统一调用各个节点合约获取数据并汇总和加工,实现了对整个区块链系统 的性能检测。
为了实现上述目的,本公开采用如下技术方案:
本公开第一方面提供了一种基于预编译合约的区块链性能检测方法。
一种基于预编译合约的区块链性能检测方法,包括以下步骤:
获取当前节点的进程PID数据;
根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程 的CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;
通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监 控数据,得到最终的区块链性能检测结果。
本公开第二方面提供了一种基于预编译合约的区块链性能检测系统。
一种基于预编译合约的区块链性能检测系统,包括:
数据获取模块,被配置为:获取当前节点的进程PID数据;
数据处理模块,被配置为:根据获取的进程PID数据,利用节点内的预编 译合约,获取当前节点线程的CPU、内存、磁盘和网络传输数据,得到当前进 程下当前节点的监控数据;
区块链性能检测模块,被配置为:通过各个节点共识,每个节点保存所有 节点性能数据,汇聚每个节点的监控数据,得到最终的区块链性能检测结果。
本公开第三方面提供了一种计算机可读存储介质,其上存储有程序,该程 序被处理器执行时实现如本公开第一方面所述的基于预编译合约的区块链性能 检测方法中的步骤。
本公开第四方面提供了一种电子设备,包括存储器、处理器及存储在存储 器上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开第 一方面所述的基于预编译合约的区块链性能检测方法中的步骤。
与现有技术相比,本公开的有益效果是:
1、本公开所述的方法、系统、介质或电子设备,利用预编译合约或者内置 合约绕过EVM直接由宿主机运行,proc文件系统在运行时访问内核内部数据结 构和改变内核设置,直接获取节点所在宿主机的性能参数,利用共识机制每个 节点保存所有节点数据并落盘,通过统一调用各个节点合约获取数据并汇总和 加工,实现了对整个区块链系统的性能检测。
2、本公开所述的方法、系统、介质或电子设备,利用区块链智能合约天然 具有的性质,无需安装额外的监控系统,达到同时监控所有节点的能力,给后 期的部署运维带来极大的方便;同时支持很细粒度的系统操作,避开EVM的限 制,可以做到无限扩展。
本公开附加方面的优点将在下面的描述中部分给出,部分将从下面的描述 中变得明显,或通过本公开的实践了解到。
附图说明
构成本公开的一部分的说明书附图用来提供对本公开的进一步理解,本公 开的示意性实施例及其说明用于解释本公开,并不构成对本公开的不当限定。
图1为本公开实施例1提供的利用预编译合约的底层执行能力获取物理机 信息示意图。
图2为本公开实施例1提供的汇总监控整个区块链群组示意图。
具体实施方式
下面结合附图与实施例对本公开作进一步说明。
应该指出,以下详细说明都是示例性的,旨在对本公开提供进一步的说明。 除非另有指明,本文使用的所有技术和科学术语具有与本公开所属技术领域的 普通技术人员通常理解的相同含义。
需要注意的是,这里所使用的术语仅是为了描述具体实施方式,而非意图 限制根据本公开的示例性实施方式。如在这里所使用的,除非上下文另外明确 指出,否则单数形式也意图包括复数形式,此外,还应当理解的是,当在本说 明书中使用术语“包含”和/或“包括”时,其指明存在特征、步骤、操作、器 件、组件和/或它们的组合。
在不冲突的情况下,本公开中的实施例及实施例中的特征可以相互组合。
实施例1:
如图1和图2所示,本公开实施例1提供了一种基于预编译合约的区块链性能 检测方法,包括以下步骤:
S1:编写C++预编译合约,获取整个机器CPU、内存、磁盘、网络传输等 情况。
S1.1:CPU使用率计算:
(a):从/proc/stat采样两个足够短的时间间隔的CPU快照,分别记作t1,t2, 其中t1和t2的结构均为:(user、nice、system、idle、iowait、irq、softirq、stealstolen、 guest)的9元组;
(b):计算总的CPU时间片totalCPUTime
把第一次的所有CPU使用情况求和,得到S1,把第二次的所有CPU使用情况 求和,得到S2,S2-S1得到这个时间间隔内的所有时间片,即totalCPUTime=S2-S1;
(c)计算空闲时间idle,如idle对应第N列的数据,用第二次的第N列-第一 次的第N列即可:
idle=第二次的第N列-第一次的第N列;
(d)计算CPU使用率:
PCPU=100*(totalCPUTime-idle)/totalCPUTime。
S1.2:内存使用状况计算:
读取/proc/meminfo文件,MemTotal为总内存,MemFree为空闲内存。
S1.3:网络流量状况:
读取/proc/net/dev文件,Receive为接收流量,Transmit为发出流量。
S1.4:磁盘数据状况:
利用statfs函数获取系统磁盘的整体使用状态,通过迭代直接获取节点下rocksDB数据大小。
S2:根据当前节点PID,获取节点线程的CPU、内存、磁盘、网络。
S2.1:获取区块链系统的当前进程PID;
S2.2:读取/proc/PID/stat、/proc/PID/meminfo、/proc/PID/net/dev下的数据;
重复S1.1、S1.2、S1.3的步骤即为当前进程下的监控数据。
S3:重新编译部署节点,通过共识,每个节点保存所有节点性能数据,通 过调用合约汇聚每个节点的信息,统一展示在平台上。
实施例2:
本公开实施例2提供了一种基于预编译合约的区块链性能检测系统,包括:
数据获取模块,被配置为:获取当前节点的进程PID数据;
数据处理模块,被配置为:根据获取的进程PID数据,利用节点内的预编译 合约,获取当前节点线程的CPU、内存、磁盘和网络传输数据,得到当前进程 下当前节点的监控数据;
区块链性能检测模块,被配置为:通过各个节点共识,每个节点保存所有 节点性能数据,汇聚每个节点的监控数据,得到最终的区块链性能检测结果。
所述系统的工作方法与实施例1提供的基于预编译合约的区块链性能检测 方法相同,这里不再赘述。
实施例3:
本公开实施例3提供了一种计算机可读存储介质,其上存储有程序,该程序 被处理器执行时实现如本公开实施例1所述的基于预编译合约的区块链性能检 测方法中的步骤,所述步骤为:
获取当前节点的进程PID数据;
根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程的 CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;
通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监 控数据,得到最终的区块链性能检测结果。
详细步骤与实施例1提供的基于预编译合约的区块链性能检测方法相同,这 里不再赘述。
实施例4:
本公开实施例4提供了一种电子设备,包括存储器、处理器及存储在存储器 上并可在处理器上运行的程序,所述处理器执行所述程序时实现如本公开实施 例1所述的基于预编译合约的区块链性能检测方法中的步骤,所述步骤为:
获取当前节点的进程PID数据;
根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程的 CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;
通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监 控数据,得到最终的区块链性能检测结果。
详细步骤与实施例1提供的基于预编译合约的区块链性能检测方法相同,这 里不再赘述。
本领域内的技术人员应明白,本公开的实施例可提供为方法、系统、或计 算机程序产品。因此,本公开可采用硬件实施例、软件实施例、或结合软件和 硬件方面的实施例的形式。而且,本公开可采用在一个或多个其中包含有计算 机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器和光学存储 器等)上实施的计算机程序产品的形式。
本公开是参照根据本公开实施例的方法、设备(系统)、和计算机程序产 品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或 方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结 合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或 其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可 编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个 流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备 以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的 指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流 程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使 得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处 理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个 流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程, 是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算 机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。 其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory, ROM)或随机存储记忆体(RandomAccessMemory,RAM)等。
以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领 域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之 内。
Claims (10)
1.一种基于预编译合约的区块链性能检测方法,其特征在于:包括以下步骤:
获取当前节点的进程PID数据;
根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程的CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;
通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监控数据,得到最终的区块链性能检测结果。
2.如权利要求1所述的基于预编译合约的区块链性能检测方法,其特征在于:
读取/proc/PID/stat、/proc/PID/meminfo和/proc/PID/net/dev下的数据,得到当前节点线程的CPU、内存、磁盘和网络传输数据。
3.如权利要求2所述的基于预编译合约的区块链性能检测方法,其特征在于:
利用预编译合约,得到节点线程的CPU使用率,包括:
从/proc/PID/stat采样两个足够短的时间间隔的CPU快照;
把第一次的所有CPU使用情况求和,把第二次的所有CPU使用情况求和,两次求和的差值作为此时间间隔内的所有时间片total;
计算空闲时间idle,CPU的使用率为:100*(total-idle)/total。
4.如权利要求2所述的基于预编译合约的区块链性能检测方法,其特征在于:
利用预编译合约,得到节点线程的内存数据,包括:
读取/proc/PID/meminfo文件,MemTotal为总内存,MemFree为空闲内存。
5.如权利要求2所述的基于预编译合约的区块链性能检测方法,其特征在于:
利用预编译合约,得到节点线程的磁盘数据,包括:
读取/proc/PID/net/dev文件,Receive为接收流量,Transmit为发出流量。
6.如权利要求2所述的基于预编译合约的区块链性能检测方法,其特征在于:
利用预编译合约,得到节点线程的网络传输数据,包括:
用statfs函数获取系统磁盘的整体使用状态,通过迭代直接获取节点下rocksDB数据大小。
7.如权利要求2所述的基于预编译合约的区块链性能检测方法,其特征在于:
通过调用各个节点内置的预编译合约汇聚每个节点的监控数据。
8.一种基于预编译合约的区块链性能检测系统,其特征在于:包括:
数据获取模块,被配置为:获取当前节点的进程PID数据;
数据处理模块,被配置为:根据获取的进程PID数据,利用节点内的预编译合约,获取当前节点线程的CPU、内存、磁盘和网络传输数据,得到当前进程下当前节点的监控数据;
区块链性能检测模块,被配置为:通过各个节点共识,每个节点保存所有节点性能数据,汇聚每个节点的监控数据,得到最终的区块链性能检测结果。
9.一种计算机可读存储介质,其上存储有程序,其特征在于,该程序被处理器执行时实现如权利要求1-7任一项所述的基于预编译合约的区块链性能检测方法中的步骤。
10.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的程序,其特征在于,所述处理器执行所述程序时实现如权利要求1-7任一项所述的基于预编译合约的区块链性能检测方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011586814.XA CN112905407A (zh) | 2020-12-28 | 2020-12-28 | 一种基于预编译合约的区块链性能检测方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011586814.XA CN112905407A (zh) | 2020-12-28 | 2020-12-28 | 一种基于预编译合约的区块链性能检测方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112905407A true CN112905407A (zh) | 2021-06-04 |
Family
ID=76111813
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011586814.XA Pending CN112905407A (zh) | 2020-12-28 | 2020-12-28 | 一种基于预编译合约的区块链性能检测方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112905407A (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110493080A (zh) * | 2019-08-19 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种区块链节点监控方法、装置及电子设备和存储介质 |
CN111625418A (zh) * | 2020-05-12 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 一种进程监控方法及装置 |
CN111786818A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种区块链共识节点状态监控方法和装置 |
-
2020
- 2020-12-28 CN CN202011586814.XA patent/CN112905407A/zh active Pending
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110493080A (zh) * | 2019-08-19 | 2019-11-22 | 腾讯科技(深圳)有限公司 | 一种区块链节点监控方法、装置及电子设备和存储介质 |
CN111625418A (zh) * | 2020-05-12 | 2020-09-04 | 深圳前海微众银行股份有限公司 | 一种进程监控方法及装置 |
CN111786818A (zh) * | 2020-06-16 | 2020-10-16 | 杭州溪塔科技有限公司 | 一种区块链共识节点状态监控方法和装置 |
Non-Patent Citations (1)
Title |
---|
无: "使用shell脚本采集系统cpu、内存、磁盘、网络等信息", 《无》 * |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11640465B2 (en) | Methods and systems for troubleshooting applications using streaming anomaly detection | |
Rosenblum et al. | Using coverage information to predict the cost-effectiveness of regression testing strategies | |
CN1321368C (zh) | 管理具有给定类型的工作荷载的计算资源的方法 | |
Hac | A distributed algorithm for performance improvement through file replication, file migration, and process migration | |
Herodotou et al. | Mapreduce programming and cost-based optimization? crossing this chasm with starfish | |
US11579933B2 (en) | Method for establishing system resource prediction and resource management model through multi-layer correlations | |
Gaikwad et al. | Anomaly detection for scientific workflow applications on networked clouds | |
CN109710376A (zh) | 容器集群管理系统的动态调度方法和装置 | |
WO2012026938A1 (en) | Isolation of problems in a virtual environment | |
CN111158887B (zh) | 一种集中式数据分布式处理方法及装置 | |
CN109308170A (zh) | 一种数据处理方法及装置 | |
da Silva et al. | Self-healing of workflow activity incidents on distributed computing infrastructures | |
CN110233802A (zh) | 一种构建一主链多侧链的区块链架构的方法 | |
US8180716B2 (en) | Method and device for forecasting computational needs of an application | |
CN114911615B (zh) | 微服务运行时智能预测调度的方法及应用 | |
CN113360270A (zh) | 一种数据清洗任务处理方法及装置 | |
CN110377519B (zh) | 大数据系统的性能容量测试方法、装置、设备及存储介质 | |
CN113590285A (zh) | 一种用于线程池参数动态设置的方法、系统及设备 | |
CN112905407A (zh) | 一种基于预编译合约的区块链性能检测方法及系统 | |
WO2023165512A1 (zh) | 一种故障文件保存方法及相关装置 | |
CN116909714A (zh) | 任务运行时的慢节点检测方法、装置、电子设备和介质 | |
CN117435335A (zh) | 算力调度方法、装置、计算机设备和存储介质 | |
CN116662001A (zh) | 一种事件处理方法及装置 | |
CN110362387B (zh) | 分布式任务的处理方法、装置、系统和存储介质 | |
Xiang et al. | Optimizing job reliability through contention-free, distributed checkpoint scheduling |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |