API Reference
API List
msMemScope provides open APIs to help users analyze memory and identify memory problems.
The analyzer is the new offline analysis module of msMemScope and is responsible for all offline analysis functions. You can import analyzer from msMemScope to implement memory leak analysis and custom inefficient memory identification.
msMemScope provides two methods for offline analysis: quick analysis APIs (recommended) and analyzer-based offline analysis.
-
Quick analysis APIs
The table below describes msMemScope's quick analysis APIs.
API Description list_analyzers Outputs all memory analysis types supported by msMemScope. get_analyzer_config Views the parameters required for running a specific memory analysis type. analyze Conducts a quick analysis. It supports memory leak analysis and custom inefficient memory identification. check_leaks Supports memory leak analysis. check_inefficient Identifies inefficient memory in a customized way. -
analyzer
You can import analyzer from msMemScope for offline analysis. Table 2 analyzer API description describes the involved APIs. However, this mode is not recommended due to complex code implementation.
The example code is as follows:
# Import analyzer and the corresponding config for memory leak detection. from msmemscope.analyzer import LeaksAnalyzer, LeaksConfig # Declare parameters and generate config. leaks_config = LeaksConfig( input_path="user/memscope.csv", # Use the actual path for input_path. mstx_info="test", start_index=0 ) # Generate an analyzer instance for analysis. leaks_analyzer=LeaksAnalyzer() leaks_analyzer.analyze(leaks_config) # Import analyzer of inefficient memory analysis and the corresponding config. from msmemscope.analyzer import InefficientConfig, InefficientAnalyzer # Declare parameters and generate config. ineff_config = InefficientConfig( input_path="user/ineff.csv", # Use the actual path for input_path. mem_size=0, inefficient_type=["early_allocation","late_deallocation","temporary_idleness"], idle_threshold=3000 ) # Generate an analyzer instance for analysis. ineff_analyzer=InefficientAnalyzer() ineff_analyzer.analyze(ineff_config)Table 2 analyzer API description
API Description LeaksAnalyzer Memory leak analyzer LeaksConfig Memory leak analysis parameters InefficientConfig Inefficiency memory analysis parameters InefficientAnalyzer Inefficiency memory analyzer
list_analyzers
Function
This API outputs all memory analysis types supported by msMemScope and supports printing. Currently, only memory leak analysis and inefficient memory identification are supported.
Prototype
list_analyzers() -> List[str]
Parameter Description
| Parameter | Input/Output | Description |
|---|---|---|
| List[str] | Output | String list |
Returns
After the API is executed, the memory analysis types supported by msMemScope are displayed.
Example
import msmemscope
config_list = msmemscope.list_analyzers()
print(config_list)
get_analyzer_config
Function
This API views the parameters required for running a specific memory analysis type.
Prototype
get_analyzer_config(analyzer_type: str) -> Dict[str, Any]
Parameter Description
| Parameter | Input/Output | Description |
|---|---|---|
| str | Input | A string that indicates the memory analysis type. For details, see the output result of list_analyzers, such as leaks or inefficient. |
| Dict[str, Any] | Output | A dictionary that contains all parameters and can be directly printed. |
Returns
Dictionary of all parameters, which can be directly printed.
After the API is executed, the input parameters required for a specific memory analysis type are directly output.
Example
import msmemscope
leaks_para = msmemscope.get_analyzer_config("leaks")
print(leaks_para)
ineff_para = msmemscope.get_analyzer_config("inefficient")
print(ineff_para)
analyze
Function
This is an external analysis API provided by msMemScope. It supports memory leak analysis and custom inefficient memory identification.
-
Memory leak analysis
This API provides offline analysis on memory leaks in a specified range, supports offline analysis for the dumped .csv files generated by msMemScope, and triggers an alarm when memory leaks in the specified range are detected. Currently, this function applies only to HAL memory leak analysis.
Before using this API, you need to mark the specified range using mstx and start the user process using msMemScope to obtain the dumped .csv file. Then, you can use the API to input the .csv file to be analyzed, instrumentation information, and start index for offline leak analysis.
-
Custom inefficient memory identification
Parameters can be customized to identify inefficient memory offline in the dumped .csv or .db file generated by msMemScope. You can flexibly set the memory block threshold, inefficient memory type, and temporary idle API interval based on the custom parameter specifications, thus accurately identifying inefficient memory in the dumped .csv or .db file.
Note
If the input .csv or .db file already has inefficient memory identification results, using the custom identification function will not remove them. The new identification results will be added instead. If you need to perform the custom inefficient memory identification function for multiple times, you are advised to back up the original file.
Prototype
analyze(analyzer_type: str, **kwargs):
Parameter Description
-
Memory leak analysis
leaks: see check_leaks for details.
-
Custom inefficient memory identification
inefficient: see check_inefficient for details.
Returns
N/A
After the API is executed, the analysis result is displayed.
Example
import msmemscope
msmemscope.analyze("leaks", input_path="user/memscope.csv", mstx_info="test",start_index=0)
msmemscope.analyze("inefficient",
input_path="user/ineff.csv",mem_size=0,
inefficient_type=["early_allocation","late_deallocation","temporary_idleness"],
idle_threshold=3000
)
# Use the actual path for input_path.
check_leaks
Function
This is a quick memory leak analysis API provided by msMemScope.
Prototype
check_leaks(input_path: str, mstx_info: str, start_index: int)
Parameter Description
All input parameters must be obtained based on list_analyzers and get_analyzer_config.
| Parameter | Input/Output | Description |
|---|---|---|
| input_path | Input | Path of the .csv file collected using msMemScope. The absolute path is required. |
| mstx_info | Input | mstx text information used for mark instrumentation, which is used to identify the range of leak analysis. |
| start_index | Input | Index of mstx instrumentation for starting leak analysis. |
Returns
N/A
After the API is executed, the memory leak analysis result is displayed.
Example
import msmemscope
msmemscope.check_leaks(input_path="user/memscope.csv",mstx_info="test",start_index=0)
# Use the actual path for input_path.
check_inefficient
Function
This is a quick analysis API provided by msMemScope for custom inefficient memory identification.
Prototype
check_inefficient(input_path: str, mem_size: int = 0, inefficient_type: List[str] = None, idle_threshold: int = 3000) # If no input is provided, the default value is used.
Parameter Description
All input parameters must be obtained based on list_analyzers and get_analyzer_config.
| Parameter | Input/Output | Description |
|---|---|---|
| input_path | Input | Path of the .csv or .db file for which offline inefficient memory identification is required. |
| mem_size | Input | Inefficient memory threshold (unit: Bytes). Memory blocks below this threshold will not output results. |
| inefficient_type | Input | Inefficient memory types for determining evaluation policies. Only user-concerned types are outputted. Currently, the following types are supported: - early_allocation - late_deallocation - temporary_idleness |
| idle_threshold | Input | Threshold of the temporary idle inefficient memory API, which can be set as required. |
Returns
N/A
After the API is executed, the analysis process is printed and displayed. The identification result is written to the original file.
Example
import msmemscope
msmemscope.check_inefficient(input_path="user/ineff.csv",mem_size=0,
inefficient_type=["early_allocation","late_deallocation","temporary_idleness"],idle_threshold=3000
)
# Use the actual path for input_path.