Computer-implemented method, computer system and device for testing
By using a single PCIe test card to perform parallel testing with multiple PCIe slots, the problem of wasted test card resources in existing technologies is solved, and efficient, low-power PCIe slot testing is achieved.
Patent Information
- Application Number
- CN202211288007.9
- Authority / Receiving Office
- CN · China
- Patent Type
- Patents(China)
- Current Assignee / Owner
- Priority Date
- 2022-06-30
- Filing Date
- 2022-10-20
- Publication Date
- 2025-11-28
- Estimated Expiration
- 2042-10-20
AI Technical Summary
In existing technologies, using multiple PCIe test cards to test multiple PCIe slots results in low efficiency and high power consumption, because each PCIe slot requires a separate test card, leading to a waste of port resources on the test card.
A single PCIe test card is connected to multiple PCIe slots via a custom cable. Parallel testing is performed using multiple ports on the test card. Each port generates a script and performs read and write operations. Parallel testing of multiple slots is achieved by adjusting parameters such as maximum payload size and memory address.
It enables efficient testing on multiple PCIe slots of the server, reducing the number of test cards and power consumption, while improving testing efficiency and resource utilization.
Smart Images

Figure CN117370083B_ABST
Abstract
Description
TECHNICAL FIELD
[0001] The present disclosure relates to testing of Peripheral Component Interconnect Express (PCIe) slots. BACKGROUND
[0002] A computing device having a plurality of Peripheral Component Interconnect Express (PCIe) slots can need to be tested in order to verify various characteristics of a given PCIe slot, including latency, bandwidth, and stability of the given PCIe slot. A PCIe test card can be used to diagnose, troubleshoot, and load test PCIe input / output (I / O) functionality of the computing device. Current configurations of PCIe test cards include a switch having a plurality of ports, where only a single port on the test card is used to saturate one of the plurality of PCIe slots on a computing device, such as a server. Thus, because only one single port on the test card is used, other ports on the test card remain unused. Further, one PCIe test card must be used per PCIe slot in order to perform testing on the plurality of PCIe slots of the server. SUMMARY
[0003] According to an aspect of the present disclosure, a computer-implemented method is provided, comprising: detecting a test card having a plurality of test ports coupled to a plurality of input / output (I / O) slots of a computing device; communicating with the plurality of test ports via the plurality of I / O slots of the computing device; generating a script for each test port by the computing device, where the script includes a series of read operations and write operations to be executed by the test card on a memory device associated with the computing device; and allowing the plurality of test ports to execute the script and perform corresponding read operations and write operations, thereby facilitating testing of the plurality of I / O slots of the computing device in parallel by the plurality of test ports of the test card; and modifying the script, where modifying the script includes modifying the script by a user via a display screen of the computing device or another computing entity by adjusting parameters, the parameters including at least one of a maximum payload size, a maximum read request size, and a memory address associated with the read operations and write operations.
[0004] According to another aspect of the disclosure, a computer system is provided, comprising: a processor; and a memory coupled to the processor and storing instructions that, when executed by the processor, cause the processor to perform a method comprising: detecting a test card having a plurality of test ports coupled to a plurality of input / output (I / O) slots of a computing device; communicating with the plurality of test ports via the plurality of I / O slots; generating, by the computing device, a script for each test port, wherein the script comprises a data pattern comprising read and write operations to be performed by the test card on a memory device associated with the computing device; and allowing the plurality of test ports to execute the script and perform the corresponding read and write operations included in the data pattern, thereby facilitating testing of the plurality of I / O slots of the computing device in parallel by the plurality of test ports of the test card; and modifying the script, wherein modifying the script comprises modifying the script by a user via a display screen of the computing device or another computing entity by adjusting parameters, the parameters comprising at least one of a maximum payload size, a maximum read request size, and a memory address associated with the read and write operations.
[0005] According to an aspect of the disclosure, an apparatus for testing is provided, comprising: a test card having a plurality of test ports; a computing device having a plurality of PCIe slots, wherein the plurality of test ports of the test card are coupled to the plurality of PCIe slots of the computing device; wherein the computing device generates a script for each test port of the plurality of test ports, wherein the script instructs a series of read and write operations to be performed by the test card on a non-volatile memory associated with the computing device; wherein, in parallel with the remaining test ports of the test ports, a respective test port will run the script by performing the series of read and write operations instructed by the script, thereby allowing bandwidth saturation by the plurality of test ports of the test card and verifying link health of the plurality of PCIe slots of the computing device; and wherein the computing device is associated with a display screen via which a user modifies the script by adjusting parameters, the parameters comprising at least one of a maximum payload size, a maximum read request size, and a memory address associated with the read and write operations. BRIEF DESCRIPTION OF DRAWINGS
[0006] Figure 1 A network environment is illustrated that uses a single PCIe test card to test a plurality of PCIe slots, according to an aspect of the present application.
[0007] Figure 2 illustrates an environment for testing multiple PCIe slots using multiple PCIe test cards, according to the prior art.
[0008] Figure 3A Figure 3 illustrates an environment for saturating and testing multiple PCIe slots using a single PCIe test card, according to an aspect of the present application, where the number of test ports is the same as the number of slots.
[0009] Figure 3B Figure 4 illustrates an environment for saturating and testing multiple PCIe slots using a single PCIe test card, according to an aspect of the present application, where the number of test ports is greater than the number of slots.
[0010] Figure 4 Figure 5 illustrates a first cable configuration between a single PCIe test card and multiple PCIe slots. Figure 3A
[0011] Figure 5 Figure 6 illustrates a second cable configuration between a single PCIe test card and multiple PCIe slots. Figure 3A
[0012] Figure 7 presents a screen displayed as part of a user interface flow, according to an aspect of the present application. Figure 6A
[0013] Figure 8 presents a screen displayed as part of a user interface flow, according to an aspect of the present application. Figure 6B
[0014] Figure 9 presents a screen displayed as part of a user interface flow, according to an aspect of the present application. Figure 6C
[0015] Figure 10 presents a flowchart illustrating a method of facilitating saturating multiple PCIe slots in a server through multiple ports in a single test card, according to an aspect of the present application. Figure 7 In the drawings, like reference numerals refer to like elements throughout.
[0016] DETAILED DESCRIPTION The following description is presented to enable any person skilled in the art to make and use the aspects and examples, and is provided in the context of particular applications and its requirements. Various modifications to the disclosed aspects will be readily apparent to those skilled in the art, and the general principles defined herein can be applied to other aspects and applications without departing from the spirit and scope of the disclosure. Thus, the aspects described herein are not intended to be limited to the aspects shown, but are to be accorded the widest scope consistent with the principles and features disclosed herein.
[0017]
[0018] Computing devices having multiple PCIe slots can need to be tested in order to verify various characteristics of a given PCIe slot, including latency, bandwidth, and stability of a given PCIe slot. PCIe test cards can be used to diagnose, troubleshoot, and load test PCIe input / output (I / O) functionality of a computing device. In the present disclosure, a test card or PCIe test card can include a "switch" that includes multiple "ports," as depicted below with respect to Figure 1 That is, the current configuration of a PCIe test card includes a switch having multiple ports. On a computing device (e.g., a server) having multiple PCIe slots, the current testing methodology allows for one PCIe test card to be inserted into each slot (via PCIe finger), with only a single port on a given PCIe test card (or switch) being used to saturate one of the multiple PCIe slots on the computing device. Thus, because only one single port on a given test card is used, other ports on the given test card remain unused. Moreover, one PCIe test card (i.e., multiple PCIe test cards) must be used per PCIe slot in order to perform testing on all of the multiple PCIe slots of the server.
[0019] Assuming the number of ports on a PCIe test card is M and the number of PCIe slots on a server is N, where typically M is greater than or equal to N, i.e., the number of ports on a PCIe test card is typically greater than or equal to the number of PCIe slots on a server. For example, a fifth generation PCIe switch on a given test card can have M = 10 ports, while an older server can have N = 3 PCIe slots, and a newer server can have N = [5..10] PCIe slots. This can result in the use of a total of N PCIe test cards in order to perform testing on each of the N PCIe slots, and because only one of the M ports is used on each of the total of N PCIe test cards, M-1 ports remain unused on each of the N PCIe test cards, as described below with respect to FIG. 2. This can result in an inefficient use of both components and power consumption associated with each PCIe test card.
[0020] Aspects of the instant application provide a system that addresses the inefficient use of current testing methods. In the described aspects, only one PCIe test card is needed to perform testing on multiple PCIe slots of a server. Instead of using a PCIe finger connection of multiple test cards to multiple PCIe slots (i.e., one test card per slot), the described aspects can provide for connection or coupling between some or all M ports of a single PCIe test card to all N PCIe slots on a server, as described below with respect to FIG. 3. This connection or coupling can be via custom PCIe cables, such as Y-shaped cables or individual cables, as described below with respect to FIG. 4. Such a configuration can allow the system to perform testing on N PCIe slots of a server using one single PCIe test card instead of a total of N PCIe test cards. Figure 4 and Figure 5 Such a configuration can allow the system to perform testing on N PCIe slots of a server using one single PCIe test card instead of a total of N PCIe test cards.
[0021] Thus, by reducing the number of PCIe test cards from N to 1, and by reducing the amount of power consumption when reducing the number of PCIe test cards (and corresponding switches on the PCIe test cards) from N to 1, the described aspects can result in a more efficient system and method for performing testing on PCIe slots of a server.
[0022] The term “server” is used in this disclosure to refer to a computing device, network entity, or other device. A server can include multiple slots. The term “slot” is used in this disclosure to refer to a socket of a printed circuit board or expansion card or other I / O related circuitry. The terms “slot” and “I / O slot” are used interchangeably in this disclosure. An example of a slot or I / O slot is a Peripheral Component Interconnect Express (PCIe) slot. A PCIe card or other PCIe component can be inserted into a “PCIe slot” on a server. PCIe slots, cards, and components can use an industry standard high-speed computer bus architecture.
[0023] The term “test card” is used in this disclosure to refer to a card that can be coupled to, connected to, or inserted into a slot of a server in order to perform testing of the slot. The terms “test card” and “PCIe test card” are used interchangeably in this disclosure, where a PCIe test card can be coupled to, connected to, or inserted into a PCIe slot of a server in order to perform testing of the slot, which can include verifying various characteristics of the PCIe slot, including latency, bandwidth, and stability of the PCIe slot. In this disclosure, a test card or PCIe test card can include a “switch,” and the term “port of the test card” can be used interchangeably with the term “port of the switch.”
[0024] The term "script" is used in this disclosure to refer to a set or sequence of instructions or a set or sequence of commands that can be sent to a port to set up or program a packet generator of the port to perform memory read and write operations. For example, the commands included in a script can include a data pattern, a maximum payload size, a maximum read request size, a memory address of a memory of a server to which or from which the packet generator transmits a read or write operation. The commands can also include initiating or starting the packet generator to program and begin performing the memory read and write operations.
[0025] Environment for testing PCIe slots using a single PCIe card
[0026] Figure 1 A network environment 100 that uses a single PCIe test card to test multiple PCIe slots is illustrated in accordance with an aspect of the present application. The environment 100 can include a device 104, an associated user 106, and peripheral input / output (I / O) user devices 108 (e.g., a display device 105, a keyboard 106, and a pointing device 107); servers 130 and 150; and test cards 120 and 140. The device 104, and the servers 130 and 150 can communicate with each other via a network 102.
[0027] Each server can include multiple slots (i.e., I / O slots or PCIe slots). For example, the server 130 can include slot_1 133; slot_2 134; slot_3 135; and slot_N 136. Similarly, the server 150 can include slot_1 153; slot_2 154; and slot_N 155. Each test card can include a switch that includes multiple ports. For example, the test card 120 can include a switch 122 that includes port_1 123; port_2 124; port_3 125; and port_M 126. Similarly, the test card 140 can include a switch 142 that includes port_1 143; port_2 144; port_3 145; and port_M 146.
[0028] Further, each port can include its own packet generator and local private buffer (e.g., volatile memory) that can store information associated with running a script or command for testing purposes. For example, port_l 123 on switch 122 of test card 120 can include a packet generator 110 that can be set or programmed to perform, for example, read and write operations, and a local private buffer 111 that can store a script / command 112. For example, script / command 112 can include a data pattern 113 that includes read / write operations or data to be written to memory, a maximum payload size 114, a maximum read request size 115, a memory address 116 to which data is written or from which data is read, data to be written to memory of server 117 (also depicted as data pattern 113), and data read from memory of server 118.
[0029] The number of test ports on each card can be coupled to the number of I / O slots of a computing device. If the number of test ports on test card 120 M = 10 and the number of slots on server 130 N = 10, each port on test card 120 can be coupled to a corresponding slot on server 130, with no unused ports. Port_l 123 can be coupled to slot_l 133; port_2 124 can be coupled to slot_2 134; port_3 125 can be coupled to slot_3 135; and port_M 126 can be coupled to slot_N 136.
[0030] The number of ports on a test card can be the same as or greater than the number of slots on a server. That is, a single test card can fully saturate all slots of a server, with all ports being used or some ports remaining unused. For example, if the number of test ports on test card 140 M = 10 and the number of slots on server 150 N = 3 (where M is greater than N), most (e.g., some but not all) ports on test card 140 can be coupled to corresponding slots on server 150, leaving some unused ports, but using a single test card (140) to achieve full saturation of N slots on server 150. Port_l 143 can be coupled to slot_l 153; port_2 144 can be coupled to slot_2 154; and port_3 145 can be coupled to slot_N 155.
[0031] Via the peripheral I / O user device 108, the user 106 can use the device 104 to operate the server 130, e.g., to remotely control the server 130 via the network 102 when connected to a server management software or baseboard management controller (not shown) of the server 130. The server 130 can be installed with a universal serial bus (USB) drive 137, which can include a software test tool 138, such as an.efi file. During operation, the user 106 can remotely power on the server 130 by sending a command 160 to the server 130. For example, upon receiving the command 160, the server 130 can boot the system (operation 162) to a unified extensible firmware interface (UEFI) shell, Windows, Linux, or other operating system, and the user 106 can subsequently remotely execute the software test tool (e.g.,.efi file) by sending a command 164 to the server 130. Upon receiving the command 164, the server 130 can run or execute the test tool (operation 166). For example, the server 130 can execute the.efi file, search for or detect test cards (operation 168), and return an indicator of the detected test cards, such as results 170.
[0032] The device 104 can receive the results 170 and display corresponding information on the display 105, similar to portions of the screen 600 depicted below with respect to Figure 6A The user 106 can select one or more slots to start testing by sending a command 172 to the server 130. Upon receiving the command 172, the server 130 can communicate with the ports via the slots (operation 174), e.g., by sending a script to the test card 120 to start testing on the selected one or more slots or one or more ports associated with the selected one or more slots. The test card 120 can program its packet generators 110 based on the script (operation 176 based on script / command 112) and execute the script, e.g., by using the packets generated by the packet generators 110 (operation 178 based on script / command 112), to perform corresponding read and write operations.
[0033] The server 130 can monitor the results of the script run by each port (operation 180), in this case, script / command 112 is run on port_l 123. For example, the server 130 can obtain the running count of the counter from the packet generator 110 of port_l 123 and proceed to send the results 182 to the device 104 to be displayed on the display 105. The following depicts example screens (including interactive user elements) as part of a user interface flow with respect to screens 600, 660, and 680 for Figure 6A 、 Figure 6B and Figure 6C
[0034] User 106 can also send a command to server 130 to stop a test on a selected port (such as port_l 123), which can cause server 130 to send a corresponding command to port_l 123 to stop executing script / command 112. While these communications are not explicitly labeled in Figure 1 communications can occur in a similar manner as sending command 172 to start a test on a selected port, as described above.
[0035] Additionally, user 106 can configure or modify a script by modifying specific parameters associated with the script or command, including adjusting the maximum payload size, maximum read request size, and memory address. For example, user 106 can modify script 112 for selected slot_l 123 and corresponding or coupled port_l 123 to adjust one of these parameters by sending command 184 to server 130. After receiving command 130, server 130 can modify the script or command (operation 186). In some aspects, server 130 can send a command to port_l 123 to stop running a test (if a test is currently running) and modify script / command 112 with the adjusted parameter. Port_l 123 can perform these modifications via its packet generator 110 that processes script / command 112 stored in port_l 123's local private buffer 111. In some aspects, device 104 / server 130 can automatically modify a previously generated script based on a predetermined set of test parameters. PCIe slot reach testing can be performed by fully saturating a server's slots using multiple ports of a single switch (i.e., a single test card).
[0036] While environment 100 depicts device 104 communicating with servers 130 and 150 via network 102, in some aspects, user 106 and peripheral I / O user device 108 can be coupled to or associated with a server. That is, device 104 and network 102 can be optional entities, such that commands and results described above as originating from or ending at device 104 can not pass through a network, but can be communicated directly by server 130 to user 106 and peripheral I / O device 108.
[0037] Comparison of testing PCIe slots using multiple PCIe cards (prior art) versus using a single PCIe card (described aspects)
[0038] Figure 2 illustrates an environment 200 that uses multiple PCIe test cards to test multiple PCIe slots, according to the prior art. The environment 200 can include a server 210 and multiple test cards 220, 230, 240, and 250. The server 210 can include multiple slots (i.e., I / O slots or PCIe slots): slot_1 211; slot_2 212; slot_3 213; and slot_N 214. Each test card can include a switch that includes multiple ports. For example, the test card 220 can include a switch 222 that includes: port_1 223; port_2 224; port_3 225; and port_M 226. The test card 230 can include a switch 232 that includes: port_1 233; port_2 234; port_3 235; and port_M 236. The test card 240 can include a switch 242 that includes: port_1 243; port_2 244; port_3 245; and port_M 246. The test card 250 can include a switch 252 that includes: port_1 253; port_2 254; port_3 255; and port_M 256.
[0039] A single test port of each card can be coupled to one of the multiple I / O slots of the computing device. If the number of test ports M = 10 for each of the test cards 220-250 and the number of slots N = 10 on the server 210, one port on each of the test cards 220-250 can be coupled to a single slot on the server 210, leaving M-1 = 9 unused ports on each of the test cards 220-250. Port_1 223 of the test card 220 can be coupled to slot_1 211; port_1 233 of the test card 230 can be coupled to slot_2 212; port_1 243 of the test card 240 can be coupled to slot_3 213; and port_1 253 of the test card 250 can be coupled to slot_N 214. Although the environment 200 depicts the first port of each test card coupled to a slot of the server 210, any single port of a test card can be coupled to a slot of the server 210.
[0040] Figure 3AAn environment 300 is illustrated that uses a single PCIe test card to saturate and test multiple PCIe slots, where the number of test ports is the same as the number of slots, in accordance with an aspect of the present application. Environment 300 can include a server 310 and a test card 320. Server 310 can include multiple slots (i.e., I / O slots or PCIe slots): slot_1 311; slot_2 312; slot_3 313; and slot_N 314. Test card 320 can include a switch 322 that includes multiple ports: port_1 323; port_2 324; port_3 325; and port_M 326.
[0041] The multiple test ports of test card 320 can be coupled to the multiple I / O slots 311-314 of server 310. If the number of test ports on test card 320 is M = 10 and the number of slots on server 310 is N = 10, each port on test card 320 can be coupled to a corresponding slot on server 310, with no unused ports on test card 320. Port_1 323 can be coupled to slot_1 311; port_2 324 can be coupled to slot_2 312; port_3 325 can be coupled to slot_3 313; and port_M 326 can be coupled to slot_N 314.
[0042] Figure 3B An environment 330 is illustrated that uses a single PCIe test card to saturate and test multiple PCIe slots, where the number of test ports is greater than the number of slots, in accordance with an aspect of the present application. Environment 330 can include a server 340 and test card 320 (as in Figure 3A Server 340 can include multiple slots (i.e., I / O slots or PCIe slots): slot_1 341; slot_2 342; and slot_N 343.
[0043] As described above with respect to Figure 1 The number of ports on a test card can be the same as or greater than the number of slots on a server. A single test card can fully saturate all slots of a server, with all ports used or some ports remaining unused. For example, if the number of test ports on test card 320 is M = 10 and the number of slots on server 340 is N = 3 (where M is greater than N), most (e.g., some but not all) of the ports on test card 320 can be coupled to corresponding slots on server 340, leaving some unused ports, but full saturation of N slots on server 340 can be achieved using a single test card (320). Port_1 323 can be coupled to slot_1 341; port_2 324 can be coupled to slot_2 342; and port_3 325 can be coupled to slot_N 343.
[0044] Cable configuration
[0045] Figure 4 The diagram shows... Figure 3A A first cable configuration 400 connects a single PCIe test card to multiple PCIe slots. The cable configuration 400 may include a Y-connector element 410. One side of the connector element 410 may include connections to each of the test ports on the test card 320 (e.g., connections 401, 402, 403, and 404 to ports 323, 324, 325, and 326, respectively). The other side of the connector element 410 may include individual cables or cable connections to each slot on the server 310 (e.g., cables or cable connections 411, 412, 413, and 414 to slots 311, 312, 313, and 314, respectively). The cable configuration 400 may be designed, customized, or implemented such that cables 411-414 can be directly inserted into their respective corresponding slots 311-314.
[0046] The described aspects allow software testing tools to execute and initiate tests on one or more selected slots or ports associated with one or more selected slots. For example, when slots 311-314 are selected, tests will begin from ports 323-326 by sending a script to test card 320. Test card 320 can be programmed with a packet generator for each of its respective ports based on the script. The script can be the same or different. That is, the testing tool can be programmed to execute or install the same or different scripts on multiple test ports, taking into account applications that may have different I / O styles. For example, some slots for applications associated with a large number of read operations (such as accessing video files) may need to be tested based on more write operations than write operations or read-only operations, while other slots for applications associated with a large number of write operations (such as storing data files) may need to be tested based on more write operations than read operations or write-only operations. These different application requirements can lead to different scripts being executed or installed on each test port.
[0047] Similar to the above about Figure 1 The monitoring described in server 130, server 310 can monitor the results of each (same or different) script run by each port, and display as follows: Figure 6A , Figure 6B and Figure 6C The results are shown below. These results can indicate the bandwidth saturation of the corresponding slot coupled to the test port and verify the link health status, as described below. Figure 6A The exemplary results shown are described in the figure.
[0048] Figure 5 The diagram shows... Figure 3A A second cable configuration 500 connects a single PCIe test card to multiple PCIe slots. Cable configuration 500 may include individual cables or cable connections (e.g., cables or cable connections 511, 512, 513, and 514 to slots 311, 312, 313, and 314 respectively) from each port on the test card 320 to each slot on the server 310. Similar to cable configuration 400, cable configuration 500 may be designed, customized, or implemented such that cables 511-514 can be directly inserted into their respective corresponding slots 311-314.
[0049] User interface tools and display results
[0050] Figure 6A A screen 600, as part of a user interface flow according to one aspect of this application, is presented. Screen 600 may include exemplary results from scripts running on test cards in multiple slots for a server, including scripts performing synchronous memory read and write operations, i.e., reading data from and writing data to memory devices associated with the server. The results may include information indicated by: line 630 for slot 02; line 632 for slot 05; line 634 for slot 06; line 636 for slot 09; and line 638 for slot 10. Information for each row or slot may include: the number of slots 602; megabytes per second (“MB / Sec”) 604 for both write operations “(W)” and read operations “(R)”, which may indicate the unit of the current data volume; the percentage bandwidth (“%Bdwdth”) 606 for both write operations “(W)” and read operations “(R)”, which may indicate the ratio of the current data volume to the maximum theoretical volume; link status 608, which may indicate, for example, the training speed and link width of the PCIe test card, the maximum payload size, and the maximum read request size; and a memory address 610 (“MemAddr”), which indicates the memory address in the PCIe test card that is offset from or added to for writing or reading data.
[0051] Element 605 (bounded by a bold line) indicates the MB / sec data corresponding to both the write (W) and read (R) operations. Similarly, element 607 (also bounded by a bold line) indicates the %Bwdth data corresponding to both the write (W) and read (R) operations.
[0052] The screen 600 can also include a link recovery count 640, which can indicate the number of times a PCIe test card entered recovery mode. For example, element 641 can indicate this value for each slot as “<slot number>: <PCIe test card entered recovery mode>,” e.g., “02:2” indicates that slot 02 entered recovery mode two times during the given test cycle, period, interval, or script, “05:2” indicates that slot 05 entered recovery mode two times during the given test cycle, period, interval, or script, etc.
[0053] The screen 600 can also include a script name 642, which includes version information with a “PBName_v1.11.” value. The screen 600 can further include a total I / O speed 644, which has a value of 146660 MB / Sec (as indicated by element 645). The value of element 645 can include the sum of the total number for both write and read operations in column 604. The MB / Sec number under column 604 and the percentage bandwidth of column 606 can be constantly and dynamically updated as the script is running, or as the test or test tool application on the computing device is running. The exemplary results on the screen 600 can correspond to a specific amount of time (e.g., in seconds or minutes) after the execution of the script was initiated. The test tool can run multiple scripts in a row, where each script can include: read and write operations (as depicted in the exemplary results of Figure 6A ), only read operations (as depicted in the exemplary results of Figure 6B ), or only write operations (as depicted in the exemplary results of Figure 6C ). The test tool can also run to install the same or different scripts on multiple ports of the detected test card. Further, using the test tool described in Figure 1 , a user can modify the maximum read request size, the maximum payload size, and the memory address, and then execute the test tool remotely by sending updated commands to the given server. The operations can proceed as described above with respect to the test tool described in Figure 1 .
[0054] The user can then view updated results based on the updated commands, which can be similar to Figure 6A , Figure 6B , and Figure 6Cindicative of the saturation of bandwidth (e.g., a percentage bandwidth 606 indicative of the ratio of the current amount of data to the maximum theoretical amount) and validation of link health, e.g., health associated with the link or connection between the test card and a given slot. Several items in the picture 600 can be indicative of link health. Link status 608 can be indicative of link health, e.g., the link status depicted as "<Status_02>" for the row 630 corresponding to slot 02 can be indicative of the speed and link width of the test card, the maximum payload size, and the maximum read request size. Total I / O speed 644 can also be indicative of link health (e.g., based on a particular expected threshold), and link recovery count 640 can also be indicative of link health (e.g., based on an expected number of times the test card enters recovery mode for a given slot). These expected numbers can be predetermined numbers or based on other predetermined thresholds, e.g., an expected total I / O speed and link recovery count.
[0055] Figure 6B A picture 660 is presented that displays exemplary results from running a script on a test card for a plurality of slots of a server as part of a user interface flow, in accordance with an aspect of the present application. The picture 660 can include exemplary results from running a script on a test card for a plurality of slots of a server, including a script that performs only memory read operations, i.e., data is read from a memory device associated with the server. These results can include information similar to that indicated by the rows 630-638. Figure 6A Elements 672 and 674 (bounded by bold alternating dash-dot lines) can be indicative of, respectively: MB / Sec for read operations (R); and %Bwdth data corresponding to read operations (R).
[0056] The picture 660 can also include a script name 662 that includes version information having a "PBName_vl.12." value. The picture 660 can further include a total I / O speed 664 having a value of 76950 MB / Sec (as indicated by element 665). The value of element 665 can include a sum of the total amounts in column 604, i.e., for read operations.
[0057] Figure 6C A picture is presented that displays exemplary results from running a script on a test card for a plurality of slots of a server as part of a user interface flow, in accordance with an aspect of the present application. The picture 680 can include exemplary results from running a script on a test card for a plurality of slots of a server, including a script that performs only memory write operations, i.e., data is written to a memory device associated with the server. These results can include information similar to that indicated by the rows 630-638. Figure 6AThe information indicated by lines 630-638. Element 692 and element 694 (bounded by dashed lines) can indicate, respectively: MB / Sec for the write operation (W); and %Bwdth data corresponding to the write operation (W).
[0058] The screen 680 can also include a script name 682 that includes version information having a "PBName_vl.13." value. The screen 680 can further include a total I / O speed 684 having a value of 86130 MB / Sec (as indicated by element 685). The value of element 685 can include a sum of the total number in column 604, i.e., for the write operation.
[0059] Method for facilitating saturating multiple PCIe slots through multiple ports
[0060] Figure 7 A flowchart illustrating a method 700 of facilitating saturating a plurality of PCIe slots in a server through a plurality of ports in a single test card in accordance with an aspect of the present application is presented. During operation, a system detects a test card having a plurality of test ports coupled to a plurality of input / output (I / O) slots of a computing device (operation 702). The system communicates with the plurality of test ports via the plurality of I / O slots of the computing device (operation 704). The system generates a script for each test port by the computing device, where the script includes a series of read operations and write operations to be performed by the test card on a memory device associated with the computing device (operation 706). The system allows the plurality of test ports to execute the script and perform the corresponding read operations and write operations, thereby facilitating testing the plurality of I / O slots of the computing device in parallel through the plurality of test ports of the test card (operation 708).
[0061] Generally, the disclosed aspects provide a method and system of saturating a plurality of PCIe slots in a server through a plurality of ports in a single switch. In an aspect of the present application, a system detects a test card having a plurality of test ports coupled to a plurality of input / output (I / O) slots of a computing device. The system communicates with the plurality of test ports via the plurality of I / O slots of the computing device. The system generates a script for each test port by the computing device, where the script includes a series of read operations and write operations to be performed by the test card on a memory device associated with the computing device. The system allows the plurality of test ports to execute the script and perform the corresponding read operations and write operations, thereby facilitating testing the plurality of I / O slots of the computing device in parallel through the plurality of test ports of the test card.
[0062] In a variation of the aspect, the plurality of test ports are coupled with the plurality of I / O slots using a first cable having a Y-connector that connects from the test card to a first plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device.
[0063] In a further variation, the plurality of test ports are coupled with the plurality of I / O slots using a second cable having a second plurality of cable connectors that connect from the test card to a third plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device.
[0064] In a further variation, the test card is a Peripheral Component Interconnect Express (PCIe) test card and the I / O slots of the computing device include PCIe slots of the computing device.
[0065] In a further variation, the first number of the plurality of test ports is greater than or equal to the second number of the plurality of I / O slots.
[0066] In a further variation, the test card includes a switch that includes the plurality of test ports.
[0067] In a further variation, the series of read operations and write operations indicated by the script of the respective test port are used to saturate bandwidth and verify link health of the respective I / O slot to which the respective test port is coupled.
[0068] In a further variation, wherein prior to allowing the plurality of test ports to execute the script and perform the corresponding read operations and write operations, the system installs the script or a different script on each of the plurality of test ports and performs at least one of: the corresponding read operation; and the corresponding write operation.
[0069] In a further variation, installing the script includes storing, by the respective test port, in a volatile memory of the respective test port, at least one of: a memory address associated with the memory device, wherein the respective memory address is associated with one of the read operation and the write operation; data associated with the read operation and the write operation; and a data pattern that indicates the series of read operations and write operations.
[0070] In a further variation, installing the script on each of the plurality of test ports is in response to a user generating a command to install the script on the plurality of test ports, and the user is associated with the computing device or another computing entity.
[0071] In a further variation, after allowing the plurality of test ports to execute the script and perform the corresponding read operations and write operations, the system performs the following. The system displays, on a display screen of the computing device or another computing entity, results of the plurality of test ports executing the script and performing the corresponding read operations and write operations. The system modifies, by a user via the display screen, the script to include a modified series of read operations and write operations based on the displayed results. The system transmits the modified script to the plurality of test ports. The system allows the plurality of test ports to execute the modified script and perform the corresponding read operations and write operations, thereby facilitating further testing of the plurality of I / O slots of the computing device in parallel through the plurality of test ports of the test card.
[0072] In another aspect of the application, a computer system includes a processor and a memory coupled to the processor and storing instructions that, when loaded by the processor into a test card, cause the test card to perform a method as described above.
[0073] In yet another aspect of the application, an apparatus includes a test card having a plurality of test ports and a computing device having a plurality of PCIe slots. The plurality of test ports of the test card are coupled to the plurality of PCIe slots of the computing device. The computing device generates a script for each of the plurality of test ports. The script indicates a series of read operations and write operations to be performed by the test card on a non-volatile memory associated with the computing device. In parallel with the remaining ones of the test ports, the respective test port is to run the script by performing the series of read operations and write operations indicated by the script, thereby allowing saturation of the plurality of PCIe slots of the computing device through the plurality of test ports of the test card.
[0074] The foregoing description of aspects has been presented for the purposes of illustration and description. It is not intended to be exhaustive or to limit the aspects described herein to the precise form disclosed. Accordingly, many modifications and variations are possible in light of the above teachings. Further, the disclosures herein are not intended to limit the aspects described herein to the precise forms disclosed. The scope of these aspects is defined by the appended claims.
Claims
1. A computer-implemented method, comprising: Test a test card with multiple test ports, which are coupled to multiple input / output I / O slots of a computing device; The device communicates with the multiple test ports via multiple I / O slots of the computing device. The computing device generates a script for each test port, wherein the script includes a series of read and write operations to be performed by the test card on a memory device associated with the computing device; and The multiple test ports are allowed to execute the script and perform corresponding read and write operations. This facilitates the parallel testing of the multiple I / O slots of the computing device through the multiple test ports of the test card; and Modifying the script, wherein modifying the script includes: the user modifying the script by adjusting parameters via a display screen of the computing device or another computing entity, the parameters including at least one of a maximum payload size, a maximum read request size, and a memory address associated with the read operation and the write operation.
2. The method as described in claim 1, wherein The plurality of test ports are coupled to the plurality of I / O slots using a first cable having a Y-connector, the Y-connector connecting the test card to a first plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device.
3. The method as described in claim 1, wherein, The plurality of test ports are coupled to the plurality of I / O slots using a first cable having a first plurality of cable connectors, the first plurality of cable connectors connecting the test card to a second plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device.
4. The method as described in claim 1, wherein The test card is a peripheral component interconnect fast PCIe test card, and The I / O slots of the computing device include the PCIe slots of the computing device.
5. The method as described in claim 1, wherein The first number of the plurality of test ports is greater than or equal to the second number of the plurality of I / O slots.
6. The method as described in claim 1, wherein The test card includes a switch, and the switch includes the plurality of test ports.
7. The method as described in claim 1, wherein The series of read and write operations, as instructed by the script on the corresponding test port, are used to saturate the bandwidth and verify the link health of the corresponding I / O slot coupled to the corresponding test port.
8. The method of claim 1, wherein, Before allowing the multiple test ports to execute the script and perform the corresponding read and write operations, the method further includes: Install the script or a different script on each of the plurality of test ports; and Perform at least one of the following: the corresponding read operation; and the corresponding write operation.
9. The method of claim 8, wherein, Installing the script includes storing at least one of the following via the volatile memory of the corresponding test port: The memory address associated with the memory device, wherein the corresponding memory address is associated with one of the read operation and the write operation; The data associated with the read operation and the write operation; and The data pattern indicating the series of read and write operations.
10. The method as described in claim 8, in, Installing the script on each of the plurality of test ports is in response to a user generating a command to install the script on the plurality of test ports, and The user is associated with the computing device or another computing entity.
11. The method of claim 10, wherein, After allowing the multiple test ports to execute the script and perform the corresponding read and write operations, the method further includes: The results of the execution of the script and the corresponding read and write operations by the plurality of test ports are displayed on the display screen of the computing device or the other computing entity. Modifying the script further includes at least one of the following: The user modifies specific parameters associated with the script via the display screen; or The computing device automatically modifies the script based on a predetermined set of test parameters; and In response to the modification of the script: The modified script is transmitted to the multiple test ports; and The modified script is allowed to be executed on the multiple test ports, and the corresponding read and write operations are performed based on the adjusted parameters or at least one of the predetermined test parameter groups. This facilitates further parallel testing of the multiple I / O slots of the computing device through the multiple test ports of the test card.
12. A computer system, comprising: processor; as well as A memory coupled to the processor and storing instructions that, when executed by the processor, cause the processor to perform a method, the method comprising: Test a test card with multiple test ports, which are coupled to multiple input / output I / O slots of a computing device; It communicates with the multiple test ports via multiple I / O slots; The computing device generates a script for each test port, wherein the script includes a data pattern comprising read and write operations to be performed by the test card on a memory device associated with the computing device; and The multiple test ports are allowed to execute the script and perform the corresponding read and write operations included in the data mode. This facilitates the parallel testing of the multiple I / O slots of the computing device through the multiple test ports of the test card; and Modifying the script, wherein modifying the script includes: the user modifying the script by adjusting parameters via a display screen of the computing device or another computing entity, the parameters including at least one of a maximum payload size, a maximum read request size, and a memory address associated with the read operation and the write operation.
13. The computer system of claim 12, wherein, The plurality of test ports are coupled to the plurality of I / O slots using at least one of the following: A first cable having a Y-connector connects the test card to a first plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device. as well as The second cable has a second plurality of cable connectors, which connect the test card to a third plurality of cables and cable connectors for each of the plurality of I / O slots on the computing device.
14. The computer system as described in claim 12, in, The test card is a peripheral component interconnect fast PCIe test card, and The I / O slots of the computing device include the PCIe slots of the computing device.
15. The computer system as described in claim 12, in, The data pattern included in the script of the corresponding test port is used to saturate the bandwidth and verify the link health of the corresponding I / O slot coupled to the corresponding test port. The data pattern includes the read and write operations to be performed by the test card.
16. The computer system of claim 12, wherein, Before allowing the plurality of test ports to execute the script and perform the corresponding read and write operations included in the data mode, the method further includes: Install the script or a different script on each of the plurality of test ports; and Perform at least one of the following: the corresponding read operation; and the corresponding write operation.
17. The computer system of claim 16, wherein, Installing the script includes storing at least one of the following via volatile memory on the corresponding test port: The memory address associated with the memory device, wherein the corresponding memory address is associated with one of the read operation and the write operation; The data associated with the read operation and the write operation; and A data pattern that indicates a series of read and write operations.
18. The computer system as described in claim 16, in, Installing the script on each of the plurality of test ports is in response to a user generating a command to install the script on the plurality of test ports, and The user is associated with the computing device or another computing entity.
19. The computer system of claim 18, wherein, After allowing the multiple test ports to execute the script and perform the corresponding read and write operations, the method further includes: The results of the execution of the script and the corresponding read and write operations by the plurality of test ports are displayed on the display screen of the computing device or the other computing entity. Modifying the script further includes at least one of the following: The user modifies specific parameters associated with the script via the display screen; or The computing device automatically modifies the script based on a predetermined set of test parameters; and In response to the modification of the script: The modified script is transmitted to the multiple test ports; and The modified script is allowed to be executed on the multiple test ports, and the corresponding read and write operations are performed based on the adjusted parameters or at least one of the predetermined test parameter groups. This facilitates further parallel testing of the multiple I / O slots of the computing device through the multiple test ports of the test card.
20. An apparatus for testing, comprising: The test card has multiple test ports; A computing device having multiple PCIe slots, The plurality of test ports of the test card are coupled to the plurality of PCIe slots of the computing device; The computing device generates a script for each of the plurality of test ports. The script indicates a series of read and write operations to be performed by the test card on the non-volatile memory associated with the computing device; In parallel with the remaining test ports, the corresponding test port will run the script by executing the series of read and write operations instructed by the script. This allows bandwidth saturation through the multiple test ports of the test card to verify the link health of the multiple PCIe slots of the computing device; and The computing device is associated with a display screen, through which the user modifies the script by adjusting parameters, including at least one of the following: maximum payload size, maximum read request size, and memory addresses associated with the read and write operations.
Citation Information
Patent Citations
Concurrent testing of PCI express devices on a server platform
CN107423169A
Interposer and intelligent multiplexer to provide a plurality of peripherial buses
US20140013024A1