Assumption: The trace you are viewing an NVMe trace and decoded to NVM command level. However the technique is applicable in general to other technologies too.
Searching for a file directory structure
To find a directory structure in the trace, we can look for the string “FILE0” in the payload as a way to find file system directory entries. Entering the mask and match field in the TLP Data Pattern search tool as shown in the figure below will look for this search string. Note the Mask on the second dWord is set to 0xFF000000 so only the ASCII character 0x30 ‘0’ is matched in this dWord and subsequent characters are ignored, where the mask 0xFFFFFFFF on the first dWord ensures all characters are matched.
It is likely there will be several such strings in the trace so you can use the F3 button or the search again icon to progress to the next occurance. When it appears near a file name you are interested in scroll up to the NVMe Command prior to the Memory Write transaction found in the search.
Searching for a specific starting LBA
To search for a specific LBA we can use the data pattern search too. Commonly the partition table for the first partition will start in LBA 0x00000000:0000003F we can search for this simply by using the LBA search tool at the NVMe level. Click the search icon or select Find from the Search menu, then pull down the top line and select NVMe commands
Select the LBA option in the Event groups and enter the LBA you want, you can also choose to search from the start of the trace or from the current position etc using the direction and origin controls on the right.
Tip: if you check the ‘Find All’ option the tool will extract every access to this LBA into a separate window so you can quickly measure the delta time between the accesses.
A more general way of achieving the same thing would again be to use the Data Pattern Match at the packet level and scroll up. In this case it would look something like the figure below. Make note of the endian control too so ensure the formatting is as expected.
Note: |
The examples shown in this technical brief were based on using version 7.2 of the PCIe Protocol Suite. Some changes to the layout may be made in future versions and new features and tools added, but the general functionality described here should still be available too. |