  Hyperledger Fabric is one of the most popular permissioned blockchain
platforms. Although many existing works on the overall system performance of
Hyperledger Fabric are available, a decomposition of each phase in Hyperledger
Fabric remains to be explored. Admittedly, the overall system performance of
Hyperledger Fabric might provide an end-user with satisfied performance
information when invoking a transaction; however, it is far from informative
when deploying a distributed system with specific performance goals, except for
understanding each phase in Hyperledger Fabric. In this paper, we develop a
measurement framework to characterize each phase's transaction and block data
in Hyperledger Fabric based on the Fabric SDK Nodejs, where we thoroughly
analyze and open source the implementation details of the measurement
framework. We evaluate the performance of Hyperledger Fabric and have some
interesting observations; 1. The number of CPU cores has a linear impact on the
throughput of an endorsing peer. 2. The Raft-based ordering service shows good
scalability with the number of ordering service nodes. 3. The communication
latencies between the client and service in Hyperledger Fabric are significant.
We then identify each phase's dominant latency in Hyperledger Fabric via
primitive operation analysis and propose a stochastic computation model for
performance analysis. We also use the alpha-beta communication model to analyze
the corresponding communication latency. Finally, we validate the accuracy of
the performance model on both local and cloud clusters. The experiment results
and the performance model help guide the deployment of the Hyperledger Fabric
service.
