掌桥专利:专业的专利平台
掌桥专利
首页

一种基于预编译合约的区块链性能检测方法及系统

文献发布时间:2023-06-19 11:16:08


一种基于预编译合约的区块链性能检测方法及系统

技术领域

本公开涉及区块链技术领域,特别涉及一种基于预编译合约的区块链性能 检测方法及系统。

背景技术

本部分的陈述仅仅是提供了与本公开相关的背景技术,并不必然构成现有 技术。

区块链技术的落地应用在各行业越来越广泛,相应也出现很多开源的区块 链应用技术。但基于区块链的监控需求一般都是开发一套单独系统去读取本地 物理服务器的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快照,分别记作t

(b):计算总的CPU时间片totalCPUTime

把第一次的所有CPU使用情况求和,得到S

(c)计算空闲时间idle,如idle对应第N列的数据,用第二次的第N列-第一 次的第N列即可:

idle=第二次的第N列-第一次的第N列;

(d)计算CPU使用率:

P

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)等。

以上所述仅为本公开的优选实施例而已,并不用于限制本公开,对于本领 域的技术人员来说,本公开可以有各种更改和变化。凡在本公开的精神和原则 之内,所作的任何修改、等同替换、改进等,均应包含在本公开的保护范围之 内。

相关技术
  • 一种基于预编译合约的区块链性能检测方法及系统
  • 一种区块链上智能合约的性能检测方法
技术分类

06120112859903