A method for testing IO performance of storage device

By performing IO load testing and imbalance landing point detection on storage devices in a load testing environment, an imbalance measurement model is built, which solves the problem that the existing technology is difficult to evaluate the stability and reliability of storage devices under high loads, and realizes the performance of equipment Accurate evaluation and fault identification improve the stability and performance of the equipment.

CN117746956BActive Publication Date: 2025-01-03GUANGDONG GUANLING TECHNOLOGY CO LTD
View PDF 0 Cites 0 Cited by

Patent Information

Application Number
CN202410090131.7
Authority / Receiving Office
CN · China
Patent Type
Patents(China)
Current Assignee / Owner
Filing Date
2024-01-23
Publication Date
2025-01-03
Estimated Expiration
2044-01-23

AI Technical Summary

Technical Problem

Existing storage device performance testing methods are difficult to fully reflect the real IO performance in most application scenarios, especially during high load and continuous operation, it is difficult to detect device abnormalities in time, resulting in delays in reading and writing data or failures.

Method used

Build a load testing environment, conduct IO load testing on storage devices, record performance data, conduct unbalanced landing point detection, build an imbalance measurement model, use real-time IOPS data to evaluate the stability and reliability of the equipment under high loads, and promptly identify performance fluctuations and Fault.

Benefits of technology

Effectively evaluate the IO performance of the storage device, promptly detect abnormalities, avoid data read and write delays or failures, and improve the performance and stability of the device.

✦ Generated by Eureka AI based on patent content.

Smart Images

  • Figure CN117746956B_ABST
    Figure CN117746956B_ABST
Patent Text Reader

Abstract

The present invention relates to the field of performance testing. The present invention provides an IO performance testing method for a storage device, which includes building a load testing environment, configuring a storage device in the load testing environment, performing an IO load test on the storage device, recording performance data of the storage device during the IO load test, performing imbalance point detection on the performance data, obtaining imbalance data, and constructing an imbalance measurement model using the imbalance data. The method can effectively evaluate the IO performance of the storage device, and timely discover possible anomalies in the storage device, construct an imbalance measurement model using real-time IOPS data to detect the stability and reliability of the storage device under high-load reading and writing conditions, and judge whether there are some instantaneous performance fluctuations in the storage device during continuous operation, thereby maintaining the storage device to avoid data reading and writing delays or failures, and fully improve the performance and stability of the storage device.
Need to check novelty before this filing date? Find Prior Art

Description

Technical Field

[0001] The present invention relates to the field of performance testing, and in particular to an IO performance testing method for a storage device. Background Art

[0002] As a core component of modern computer systems, storage devices are responsible for data storage and reading and writing. With the continuous development of storage device technology, its capacity and reading and writing speed have been greatly improved. In the wide use of computers, the IO performance of storage devices has become one of the key indicators of computer hardware components. At the same time, with the popularization of data centers, the IO performance of storage devices is directly related to the overall high availability and stability of data center systems.

[0003] Evaluating the performance of storage devices is the key to ensuring the overall performance of computer hardware. Currently, common storage device performance testing methods include benchmark testing and stress testing. Benchmark testing is to test storage devices in idle state to evaluate the device's extreme performance; stress testing is to test storage devices under high load to evaluate the device's performance under different extreme conditions.

[0004] Benchmark tests and stress tests are widely used to evaluate the performance indicators of storage devices, such as read and write speeds and latency. However, these testing methods often have limitations and are difficult to fully reflect the true IO performance of storage devices in most application scenarios. For example, during the loading process of a large simulation model, the storage device needs to have high-speed continuous read and write performance to ensure the loading speed of the model, while the benchmark test results obtained in the idle state are usually of poor reference to the performance requirements required by the above usage scenarios. At the same time, stress testing is greatly affected by extreme loads and application environments, and it is difficult to reflect the performance of storage devices in the continuous working process. Therefore, a more realistic, accurate, and repeatable IO performance test method is the key to measuring whether a storage device has the characteristics of high durability, high reliability, and high stability. Summary of the invention

[0005] The purpose of the present invention is to provide a method for testing the IO performance of a storage device to solve one or more technical problems existing in the prior art and at least provide a beneficial option or create conditions.

[0006] The present invention relates to the field of performance testing. The present invention provides an IO performance testing method for a storage device, which includes building a load testing environment, configuring a storage device in the load testing environment, performing an IO load test on the storage device, recording performance data of the storage device during the IO load test, performing imbalance point detection on the performance data, obtaining imbalance data, and constructing an imbalance measurement model using the imbalance data. The method can effectively evaluate the IO performance of the storage device, and timely discover possible anomalies in the storage device, construct an imbalance measurement model using real-time IOPS data to detect the stability and reliability of the storage device under high-load reading and writing conditions, and judge whether there are some instantaneous performance fluctuations in the storage device during continuous operation, thereby maintaining the storage device to avoid data reading and writing delays or failures, and fully improve the performance and stability of the storage device.

[0007] In order to achieve the above object, according to one aspect of the present invention, a method for testing IO performance of a storage device is provided, the method comprising the following steps:

[0008] S100, building a load test environment and configuring storage devices in the load test environment;

[0009] S200, performing an IO load test on the storage device, and recording performance data of the storage device during the IO load test;

[0010] S300, performing imbalance point detection on the performance data to obtain imbalance data;

[0011] S400, constructing an imbalance determination model using the imbalance data.

[0012] Furthermore, in step S100, a load test environment is built, and the method for configuring a storage device in the load test environment is specifically: configuring a physical host, using the physical host as a test environment, connecting a storage device to the test environment, and creating at least one partition on the storage device after connecting to the test environment.

[0013] Optionally, the components of the physical host include at least a motherboard, a processor, a CPU radiator, a memory stick, a graphics card, and a power supply, and the various components are connected to each other in a corresponding connection manner; wherein the memory specification of the motherboard is DDR4 memory or DDR5 memory, the processor has a built-in three-level cache, the capacity of the three-level cache is greater than or equal to 16MB (MBbyte), the capacity of the memory stick is greater than or equal to 8GB (Gigabyte), and the graphics card is a core graphics card.

[0014] Furthermore, in step S200, an IO load test is performed on the storage device, and the method for recording the performance data of the storage device during the IO load test is specifically as follows: partition preprocessing is performed on the storage device, a load test of duration T is performed on the storage device after the partition preprocessing is completed by IOmeter, and the real-time IOPS (number of reads and writes per second) of the storage device during the load test is recorded, and the real-time IOPS during the load test is used as the performance data of the storage device during the IO load test; the T is set to [30,120] minutes.

[0015] Furthermore, the partition preprocessing step specifically includes: filling the storage device with zeros in a sequential writing manner until the storage device is full, clearing the data on the storage device, filling the storage device with zeros in a random writing manner until the storage device is full, clearing the data on the storage device a second time (i.e., clearing the data again), and using the storage device that has completed the second data clearing as the storage device after the partition preprocessing is completed.

[0016] Optionally, the method of performing a load test on the storage device after partition preprocessing is completed through IOmeter is specifically as follows: in IOmeter, select the storage device in the Targets option, and set the value of the Sectors parameter in the Maximum_Disk_Size option to 33554432 (4k alignment under 16GB test capacity), set the Starting_Disk_Sectors option to 0, set the per_target parameter in the Outstanding I / Os option to 64, set the Write_IO_Data_Pattern option to Full_random, check Record_last_update_results_to_file in the Results_Display option (record the real-time IOPS in the load test at intervals of one second), and click the Start Test button to start the load test.

[0017] Furthermore, in step S300, the method of performing imbalance point detection on the performance data to obtain the imbalance data is specifically as follows:

[0018] S301, read all the data in the performance data (the performance data consists of the IOPS value of the storage device per second during the load test), create a blank array perf[], write each data in the performance data into the array perf[] in the order of the recording time of the data, and use perf(i) to represent the i-th element in the array perf[], i=1,2,…,N, N is all the elements in the array perf[], initialize an integer variable j, the initial value of the variable j is set to 1, the value range of the variable j is [1,N], create an array woo[] with a length of N, initialize the values ​​of all elements in the array woo[] to 0, record woo(i) as the i-th element in the array woo[], traverse the variable j from j=1, and go to S302; wherein the value of N is the total number of seconds of the duration T;

[0019] S302, record pra(j) = 1-N*(perf(j) / mea(perf)), and assign the current value of pra(j) to woo(j) (i.e., change the current value of woo(j) to the current value of pra(j)), and go to S303; wherein mea(perf) represents the average value of all elements in the array perf[];

[0020] S303, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S302; if the current value of variable j is equal to or greater than N, go to S304;

[0021] S304, mea(woo[]) is used to represent the mean of all elements in the array woo[], a blank array mas[] is created, the value of the variable j is reset to 1, and the process goes to S305;

[0022] S305, determine whether the current value of |1 / (1-perf(j))| is less than |mea(woo[])| / perf(j);

[0023] Let A1 = |1 / (1-perf(j))|, let A2 = |mea(woo[])| / perf(j); if A1 < A2, then add the current value of woo(j) to the array mas[]; where |1 / (1-perf(j))| means taking the absolute value of 1 / (1-perf(j)), and |mea(woo[])| means taking the absolute value of mea(woo[]);

[0024] Go to S306;

[0025] S306, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S305; if the current value of variable j is equal to or greater than N, go to S307;

[0026] S307, let the number of all elements in the array mas[] be N1, and use mas(i1) to represent the i1th element in the array mas[], i1=1,2,…,N1, and take N1 data mas(1), mas(2),…,mas(N1) as unbalanced data.

[0027] The beneficial effect of this step is as follows: since IOPS is one of the key indicators for measuring whether the performance of a storage device is good or not, during the continuous operation of the storage device, if a large number of local data anomalies appear in the real-time IOPS data, it means that the storage device has a fault record during the operation, thereby causing data damage or loss; the method of this step collects the performance data of the storage device during the load test and uses it to perform imbalance point detection. The imbalance point detection can filter out the data that appears to be imbalanced in the performance data, and then accurately identify the frequency of failures and performance bottlenecks of the storage device during the operation process, and at the same time provide good data support for building an imbalance measurement model.

[0028] Furthermore, in step S400, the method of constructing the imbalance determination model using the imbalance data is specifically as follows:

[0029] S401, create a blank array ove[], initialize variables j1, j2, and j3 respectively, set the initial values ​​of j1 and j2 to 1, set the value ranges of j1 and j2 to [1, N1], set the initial value of j3 to 0, N1 is the number of all elements in the array mas[], traverse variables j1 and j2 starting from j1=1 and j2=1, and go to S402;

[0030] S402, in the array mas[], compare the current value of mas(j1) with the current value of mas(j2); if mas(j1)>mas(j2), increase the value of j3 by 1;

[0031] Go to S403;

[0032] S403, if the value of the current variable j2 is less than N1, then increase the value of j2 by 1 and go to S402; if the value of the current variable j2 is equal to or greater than N1, then add the value of the current variable j3 to the array ove[] and go to S404;

[0033] S404, if the current value of variable j1 is less than N1, the value of variable j3 is reset to 0, the value of variable j2 is reset to 1, and the value of variable j1 is increased by 1, and the process goes to S402; if the current value of variable j1 is equal to or greater than N1, the process goes to S405;

[0034] S405, using ove(i1) to represent the i1th element in the array ove[] (the array ove[] and the array mas[] have the same length), establish the imbalance measurement model Imba(x):

[0035]

[0036] Among them, sum(mas) represents the sum of all elements in the array mas[], and x is the model variable.

[0037] The beneficial effect of this step is: when the flash memory particles or cache units of the storage device have bad blocks or a significant speed drop, the storage device is prone to frequent performance degradation at multiple times under high-load read and write conditions, resulting in data read and write delays or failures, etc. The method of this step uses imbalanced data to construct an imbalance measurement model, and uses the imbalance measurement model to determine whether there are a large number of instantaneous performance fluctuations in the device during continuous operation. By timely detecting and diagnosing possible faults in the storage device, the availability and stability of the storage device are further improved.

[0038] Furthermore, in step S400, using the imbalance data to construct an imbalance determination model further includes: performing M IO load tests on the storage hard disk to obtain M groups of performance data, calculating the average value of each group of performance data in the M groups of performance data, and using ext(i3) to represent the average value of the i3th group of performance data in the M groups of performance data, i3=1,2,…,M; wherein M is set to [10,30];

[0039] The method for performing a load test on a storage hard disk is as follows: performing a load test on the storage device for a duration of T through IOmeter, recording the real-time IOPS (number of reads and writes per second) of the storage device during the load test, and using the real-time IOPS during the load test as the performance data of the storage device during the IO load test;

[0040] Input ext(1), ext(2), …, ext(M) as model variables x into the imbalance determination model Imba(x) to obtain M values ​​Imba(ext(1)), Imba(ext(2)), …, Imba(ext(M)), and record ImbaA = [Imba(ext(1)) + Imba(ext(2)) + … ++ Imba(ext(M))] / M (i.e., the mean of the M values);

[0041] If the absolute value of the difference between any two values ​​in Imba(ext(1)), Imba(ext(2)), ..., Imba(ext(M)) is greater than ImbaA, the flash memory particles of the storage device are replaced.

[0042] The beneficial effects of this step are: by real-time monitoring and recording the load of the storage device, multiple IO load tests are performed on the storage hard disk, the test data is input into the imbalance determination model, and the model results are used to accurately identify whether the storage device has performance fluctuations and read and write speed imbalances during operation, thereby reducing the risk of data read and write delays or failures. At the same time, by timely replacing flash memory particles to ensure the service life of the storage device, the work efficiency and performance of the storage device are greatly improved.

[0043] The beneficial effects of the present invention are as follows: the method can effectively evaluate the IO performance of a storage device, and timely discover possible anomalies in the storage device, and use real-time IOPS data to build an imbalance measurement model to detect the stability and reliability of the storage device under high-load reading and writing conditions. By judging whether there are certain instantaneous performance fluctuations in the continuous operation of the storage device, the storage device can be maintained to avoid data reading and writing delays or failures, thereby fully improving the performance and stability of the storage device. BRIEF DESCRIPTION OF THE DRAWINGS

[0044] The above and other features of the present invention will become more obvious by describing in detail the embodiments shown in the accompanying drawings. The same reference numerals in the accompanying drawings of the present invention represent the same or similar elements. Obviously, the accompanying drawings described below are only some embodiments of the present invention. For those skilled in the art, other accompanying drawings can be obtained based on these accompanying drawings without creative work. In the accompanying drawings:

[0045] Figure 1 Shown is a flow chart of an IO performance testing method for a storage device. DETAILED DESCRIPTION

[0046] The following will be combined with the embodiments and drawings to clearly and completely describe the concept, specific structure and technical effects of the present invention, so as to fully understand the purpose, scheme and effect of the present invention. It should be noted that the embodiments and features in the embodiments of this application can be combined with each other without conflict.

[0047] In the description of the present invention, "several" means one or more, "more" means more than two, "greater than", "less than", "exceed" etc. are understood as not including the number itself, and "above", "below", "within" etc. are understood as including the number itself. If there is a description of "first" or "second", it is only used for the purpose of distinguishing the technical features, and cannot be understood as indicating or implying the relative importance or implicitly indicating the number of the indicated technical features or implicitly indicating the order of the indicated technical features.

[0048] like Figure 1 FIG. 1 is a flow chart of a method for testing the IO performance of a storage device according to the present invention. Figure 1 A method for testing the IO performance of a storage device according to an embodiment of the present invention will be described below.

[0049] The present invention provides a method for testing the IO performance of a storage device, the method comprising the following steps:

[0050] S100, building a load test environment and configuring storage devices in the load test environment;

[0051] S200, performing an IO load test on the storage device, and recording performance data of the storage device during the IO load test;

[0052] S300, performing imbalance point detection on the performance data to obtain imbalance data;

[0053] S400, constructing an imbalance determination model using the imbalance data.

[0054] Furthermore, in step S100, a load test environment is built, and the method for configuring a storage device in the load test environment is specifically: configuring a physical host, using the physical host as a test environment, connecting a storage device to the test environment, and creating at least one partition on the storage device after connecting to the test environment.

[0055] Optionally, the components of the physical host include at least a motherboard, a processor, a CPU radiator, a memory stick, a graphics card, and a power supply, and the various components are connected to each other in a corresponding connection manner; wherein the memory specification of the motherboard is DDR4 memory or DDR5 memory, the processor has a built-in three-level cache, the capacity of the three-level cache is greater than or equal to 16MB (MBbyte), the capacity of the memory stick is greater than or equal to 8GB (Gigabyte), and the graphics card is a core graphics card.

[0056] Furthermore, in step S200, an IO load test is performed on the storage device, and the method for recording the performance data of the storage device during the IO load test is specifically as follows: partition preprocessing is performed on the storage device, a load test of duration T is performed on the storage device after the partition preprocessing is completed by IOmeter, and the real-time IOPS (number of reads and writes per second) of the storage device during the load test is recorded, and the real-time IOPS during the load test is used as the performance data of the storage device during the IO load test; the T is set to [30,120] minutes.

[0057] Furthermore, the partition preprocessing step specifically includes: filling the storage device with zeros in a sequential writing manner until the storage device is full, clearing the data on the storage device, filling the storage device with zeros in a random writing manner until the storage device is full, clearing the data on the storage device a second time, and using the storage device that has completed the secondary data clearing as the storage device after the partition preprocessing is completed.

[0058] Optionally, the method of performing a load test on the storage device after partition preprocessing is completed through IOmeter is specifically as follows: in IOmeter, select the storage device in the Targets option, and set the value of the Sectors parameter in the Maximum_Disk_Size option to 33554432 (4k alignment under 16GB test capacity), set the Starting_Disk_Sectors option to 0, set the per_target parameter in the Outstanding I / Os option to 64, set the Write_IO_Data_Pattern option to Full_random, check Record_last_update_results_to_file in the Results_Display option (record the real-time IOPS in the load test at intervals of one second), and click the Start Test button to start the load test.

[0059] Furthermore, in step S300, the method of performing imbalance point detection on the performance data to obtain the imbalance data is specifically as follows:

[0060] S301, read all the data in the performance data (the performance data consists of the IOPS value of the storage device per second during the load test), create a blank array perf[], write each data in the performance data into the array perf[] in the order of the recording time of the data, and use perf(i) to represent the i-th element in the array perf[], i=1,2,…,N, N is all the elements in the array perf[], initialize an integer variable j, the initial value of the variable j is set to 1, the value range of the variable j is [1,N], create an array woo[] with a length of N, initialize the values ​​of all elements in the array woo[] to 0, record woo(i) as the i-th element in the array woo[], traverse the variable j from j=1, and go to S302; wherein the value of N is the total number of seconds of the duration T;

[0061] S302, record pra(j) = 1-N*(perf(j) / mea(perf)), and assign the current value of pra(j) to woo(j) (i.e., change the current value of woo(j) to the current value of pra(j)), and go to S303; wherein mea(perf) represents the average value of all elements in the array perf[];

[0062] S303, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S302; if the current value of variable j is equal to or greater than N, go to S304;

[0063] S304, mea(woo[]) is used to represent the mean of all elements in the array woo[], a blank array mas[] is created, the value of the variable j is reset to 1, and the process goes to S305;

[0064] S305, determine whether the current value of |1 / (1-perf(j))| is less than |mea(woo[])| / perf(j);

[0065] Let A1 = |1 / (1-perf(j))|, let A2 = |mea(woo[])| / perf(j); if A1 < A2, then add the current value of woo(j) to the array mas[]; where |1 / (1-perf(j))| means taking the absolute value of 1 / (1-perf(j)), and |mea(woo[])| means taking the absolute value of mea(woo[]);

[0066] Go to S306;

[0067] S306, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S305; if the current value of variable j is equal to or greater than N, go to S307;

[0068] S307, let the number of all elements in the array mas[] be N1, and use mas(i1) to represent the i1th element in the array mas[], i1=1,2,…,N1, and take N1 data mas(1), mas(2),…,mas(N1) as unbalanced data.

[0069] Furthermore, in step S400, the method of constructing the imbalance determination model using the imbalance data is specifically as follows:

[0070] S401, create a blank array ove[], initialize variables j1, j2, and j3 respectively, set the initial values ​​of j1 and j2 to 1, set the value ranges of j1 and j2 to [1, N1], set the initial value of j3 to 0, N1 is the number of all elements in the array mas[], traverse variables j1 and j2 starting from j1=1 and j2=1, and go to S402;

[0071] S402, in the array mas[], compare the current value of mas(j1) with the current value of mas(j2); if mas(j1)>mas(j2), increase the value of j3 by 1;

[0072] Go to S403;

[0073] S403, if the value of the current variable j2 is less than N1, then increase the value of j2 by 1 and go to S402; if the value of the current variable j2 is equal to or greater than N1, then add the value of the current variable j3 to the array ove[] and go to S404;

[0074] S404, if the current value of variable j1 is less than N1, the value of variable j3 is reset to 0, the value of variable j2 is reset to 1, and the value of variable j1 is increased by 1, and the process goes to S402; if the current value of variable j1 is equal to or greater than N1, the process goes to S405;

[0075] S405, using ove(i1) to represent the i1th element in the array ove[] (the array ove[] and the array mas[] have the same length), establish the imbalance measurement model Imba(x):

[0076]

[0077] Among them, sum(mas) represents the sum of all elements in the array mas[], and x is the model variable.

[0078] Furthermore, in step S400, using the imbalance data to construct an imbalance determination model further includes: performing M IO load tests on the storage hard disk to obtain M groups of performance data, calculating the average value of each group of performance data in the M groups of performance data, and using ext(i3) to represent the average value of the i3th group of performance data in the M groups of performance data, i3=1,2,…,M; wherein M is set to [10,30];

[0079] The method for performing a load test on a storage hard disk is as follows: performing a load test on the storage device for a duration of T through IOmeter, recording the real-time IOPS (number of reads and writes per second) of the storage device during the load test, and using the real-time IOPS during the load test as the performance data of the storage device during the IO load test;

[0080] Input ext(1), ext(2), …, ext(M) as model variables x into the imbalance determination model Imba(x) to obtain M values ​​Imba(ext(1)), Imba(ext(2)), …, Imba(ext(M)), and record ImbaA = [Imba(ext(1)) + Imba(ext(2)) + … ++ Imba(ext(M))] / M (i.e., the mean of the M values);

[0081] If the absolute value of the difference between any two values ​​in Imba(ext(1)), Imba(ext(2)), ..., Imba(ext(M)) is greater than ImbaA, the flash memory particles of the storage device are replaced.

[0082] The present invention relates to the field of performance testing. The present invention provides an IO performance testing method for a storage device, builds a load testing environment, configures a storage device in the load testing environment, performs an IO load test on the storage device, records the performance data of the storage device during the IO load test, performs imbalance point detection on the performance data, obtains imbalance data, and uses the imbalance data to build an imbalance measurement model. The method can effectively evaluate the IO performance of the storage device, and timely discover possible anomalies in the storage device, use real-time IOPS data to build an imbalance measurement model to detect the stability and reliability of the storage device under high-load reading and writing conditions, and judge whether there are some instantaneous performance fluctuations in the storage device during continuous operation, and then maintain the storage device to avoid data reading and writing delays or failures, and fully improve the performance and stability of the storage device. Although the description of the present invention has been quite detailed and particularly describes several of the embodiments, it is not intended to be limited to any of these details or embodiments or any special embodiments, so as to effectively cover the predetermined scope of the present invention. In addition, the above describes the present invention with embodiments that the inventor can foresee, and the purpose is to provide a useful description, and those non-substantial changes to the present invention that have not yet been foreseen can still represent equivalent changes to the present invention.

Claims

1. A method for testing the IO performance of a storage device, characterized in that: The method comprises the following steps: S100, building a load test environment and configuring storage devices in the load test environment; S200, performing an IO load test on the storage device, and recording performance data of the storage device during the IO load test; S300, performing imbalance point detection on the performance data to obtain imbalance data; S400, constructing an imbalance determination model using the imbalance data; In step S300, the method of performing imbalance point detection on the performance data to obtain the imbalance data is specifically as follows: S301, read all the data in the performance data, create a blank array perf[], write each data in the performance data into the array perf[] in the order of the recording time of the data, use perf[i] to represent the i-th element in the array perf[], i=1,2,…,N, N is all the elements in the array perf[], initialize an integer variable j, the initial value of the variable j is set to 1, the value range of the variable j is [1,N], create an array woo[] with a length of N, initialize the values ​​of all elements in the array woo[] to 0, record woo[i] as the i-th element in the array woo[], traverse the variable j from j=1, and go to S302; wherein the value of N is the total number of seconds of the duration T; S302, record pra[j]=1-N*(perf[j] / mea(perf)), and assign the current value of pra[j] to woo[j], and go to S303; where mea(perf) represents the average value of all elements in the array perf[]. S303, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S302; if the current value of variable j is equal to or greater than N, go to S304; S304, using mea(woo[]) to represent the mean of all elements in the array woo[], creating a blank array mas[], resetting the value of the variable j to 1, and going to S305; S305, determine whether the current value of |1 / (1-perf[j])| is less than |mea(woo[])| / perf[j]; Let A1 = |1 / (1-perf[j])|, let A2 = |mea(woo[])| / perf[j]; if A1 < A2, then add the current value of woo[j] to the array mas[]; where |1 / (1-perf[j])| means taking the absolute value of 1 / (1-perf[j]), and |mea(woo[])| means taking the absolute value of mea(woo[]); Go to S306; S306, if the current value of variable j is less than N, increase the value of variable j by 1 and go to S305; if the current value of variable j is equal to or greater than N, go to S307; S307, record the number of all elements in the array mas[] as N1, use mas[i1] to represent the i1th element in the array mas[], i1=1,2,…,N1, and take N1 data mas[1],mas[2],…,mas[N1] as unbalanced data; In step S400, the method of constructing the imbalance determination model using the imbalance data is specifically as follows: S401, create a blank array ove[], initialize variables j1, j2, and j3 respectively, set the initial values ​​of j1 and j2 to 1, set the value ranges of j1 and j2 to [1, N1], set the initial value of j3 to 0, N1 is the number of all elements in the array mas[], traverse variables j1 and j2 starting from j1=1 and j2=1, and go to S402; S402, in the array mas[], compare the current value of mas[j1] with the current value of mas[j2]; if mas[j1]>mas[j2], increase the value of j3 by 1; Go to S403; S403, if the value of the current variable j2 is less than N1, then increase the value of j2 by 1 and go to S402; if the value of the current variable j2 is equal to or greater than N1, then add the value of the current variable j3 to the array ove[] and go to S404; S404, if the current value of variable j1 is less than N1, the value of variable j3 is reset to 0, the value of variable j2 is reset to 1, and the value of variable j1 is increased by 1, and the process goes to S402; if the current value of variable j1 is equal to or greater than N1, the process goes to S405; S405, using ove[i1] to represent the i1th element in the array ove[], establish the imbalance determination model Imba(x): ; Where sum(mas) represents the sum of all elements in the array mas[], and x is the model variable; In step S400, using the imbalance data to construct an imbalance measurement model also includes: performing M IO load tests on the storage hard disk to obtain M groups of performance data, calculating the average value of each group of performance data in the M groups of performance data, and using ext[i3] to represent the average value of the i3th group of performance data in the M groups of performance data, i3=1,2,…,M; wherein M is set to [10,30]; The method for performing a load test on a storage hard disk is as follows: performing a load test on a storage device for a duration of T through IOmeter, recording the real-time IOPS of the storage device during the load test, and using the real-time IOPS during the load test as the performance data of the storage device during the IO load test; Input ext[1], ext[2], …, ext[M] as model variables x into the imbalance determination model Imba(x) to obtain M values ​​Imba(ext[1]), Imba(ext[2]), …, Imba(ext[M]), where ImbaA=[Imba(ext[1])+Imba(ext[2])+…+Imba(ext[M])] / M; If the absolute value of the difference between any two values ​​in Imba(ext[1]), Imba(ext[2]), ..., Imba(ext[M]) is greater than ImbaA, the flash memory particles of the storage device are replaced.

2. The IO performance testing method of a storage device according to claim 1, characterized in that: In step S100, a load test environment is built, and the method for configuring a storage device in the load test environment is specifically: configuring a physical host, using the physical host as a test environment, connecting a storage device to the test environment, and creating at least one partition on the storage device after connecting to the test environment.

3. The IO performance testing method of a storage device according to claim 1, characterized in that: In step S200, an IO load test is performed on the storage device, and the method for recording the performance data of the storage device during the IO load test is specifically as follows: partition preprocessing is performed on the storage device, a load test of duration T is performed on the storage device after the partition preprocessing is completed by IOmeter, the real-time IOPS of the storage device during the load test process is recorded, and the real-time IOPS during the load test process is used as the performance data of the storage device during the IO load test process; T is set to [30,120] minutes.

4. The IO performance testing method of a storage device according to claim 3, characterized in that: The steps of the partition preprocessing specifically include: filling the storage device with zeros in a sequential writing manner until the storage device is full, clearing the data on the storage device, filling the storage device with zeros in a random writing manner until the storage device is full, clearing the data on the storage device a second time, and using the storage device that has completed the secondary data clearing as the storage device after the partition preprocessing is completed.