Rate This Document
Findability
Accuracy
Completeness
Readability

Introduction to the Kunpeng DevKit

The Kunpeng DevKit provides a series of tools covering application porting, testing, diagnosis, and tuning, enabling you to quickly build high-performance Kunpeng-compatible software. It facilitates application porting to the more efficient Kunpeng computing platform, which streamlines the development process. The Kunpeng DevKit offers:

  • Development environments in multiple programming languages, such as C, C++, Java, and Python.
  • Optimized libraries, porting, and performance test tools, helping you exploit the advantages of the Kunpeng architecture and build high-performance applications on the Kunpeng platform.
  • Reference documents and code samples to help with Kunpeng application development.
  • Online technical support and a communication platform for troubleshooting and exchanges with other developers.

The Kunpeng DevKit includes the following tools:

Table 1 Tools included in the Kunpeng DevKit

Tool

Description

System Migration

Offers wizard-driven, automatic migration across OSs, databases, middleware, and applications.

NOTE:

The System Migration tool is available only on the Kunpeng platform. In a full installation package scenario, System Migration is integrated in the Porting Advisor.

Porting Advisor

Scans and analyzes x86 Linux software and ports it to Kunpeng Linux, offering a range of capabilities such as software porting assessment, source code porting, and software package rebuild.

Affinity Analyzer

Checks software code on the Kunpeng 920 platform to improve software quality and optimize memory access performance, offering a range of capabilities such as 64-bit running mode check, byte alignment check, cache line alignment check, and static memory consistency check.

System Profiler

Collects and analyzes performance data in multiple scenarios, and provides tuning suggestions based on the tuning system. It offers a series of capabilities such as tuning assistant, comparative analysis, HPC cluster check, HPC application analysis, and overall analysis.

Java Profiler

Analyzes and optimizes the performance of Java programs running on Kunpeng servers, and supports real-time and sampling profiling.

System Diagnosis

Quickly locates and diagnoses component exceptions, identifies memory usage problems in the source code. It offers a series of capabilities such as memory usage diagnosis, memory overwriting diagnosis, network I/O diagnosis, and storage I/O diagnosis.

Related Concepts

Table 2 Concepts

Concept

Description

SO dependency library

Linux shared object files, named in filename.so.version format, for example, libname.so.1.1.1.

Dependency dictionary

A list that the Porting Advisor uses to record the SO files, software supported by the Kunpeng platform, and the installation status (installation from binary packages or installation from source code). You can download and update the dependency dictionary.

Software build project file

The common software build tools of C/C++/ASM/Fortran/Go are Make and CMake, and the corresponding build files are Makefile and CMakeLists.txt.

IPC

Instructions per cycle (IPC) is the average number of instructions executed by a CPU in each clock cycle. It reflects the smoothness of CPU execution. If a four-transmitter Kunpeng 920 processor executes four instructions in each clock cycle when its pipeline operates in full load, the IPC is 4.0. An IPC value closer to 4.0 indicates that the program uses the processor features to a greater extent.

CPU Cycles performance event

Based on the event sampling principle and performance events, performance analysis can be performed on performance metrics related to processors and operating systems. This metric can be used to locate performance bottlenecks and hotspot code.

CPU Cycles is the default performance event, which is also called clock tick. The sampling is performed based on tick interrupts. That is, sampling is triggered when a tick interrupt occurs, and the current context of the program is determined in the sampling point.

USE

The Utilization, Saturation, and Errors (USE) method is used to analyze the utilization, saturation, and errors of all resources to identify performance bottlenecks.

  • Resources: physical components of servers, including CPUs, memory, storage devices, and network devices. The software that provides similar metrics can also be considered as a resource.
  • Utilization: indicates the percentage of time that resources are used for service work within a specified period.
  • Saturation: indicates the degree to which resources cannot accept more work (the kernel usually has a waiting queue).
  • Error: indicates the number of error events.

Real-time profiling

Real-time profiling is a dynamic application analysis method, including the analysis on target JVMs and Java programs. It is used to analyze the internal distribution of resource consumption, method calling frequency, and time consumption during application running. This method is often used to assist application performance bottleneck locating and performance tuning.

Real-time profiling obtains the calling status of all methods in specific code by instrumenting the classes and methods of programs, which may greatly affect the application performance.

Sampling profiling

Sampling profiling is to collect internal activities and performance events of the JVM through data sampling, and performs offline analysis through data recording and playback. Sampling profiling does not require you to modify the application code, which has little impact on performance. It is suitable for large-scale Java programs. The precision of sampling profiling is lower than that of real-time profiling because the former only collects data periodically.

Upper-layer application workload

Workload analysis is to dynamically modify upper-layer application code and embed hooks to collect specific application performance data, helping to obtain the code performance and locate specific code.