You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Refactor documentation for profiling out-of-tree and in-tree kernel modules with Streamline, improving clarity in command syntax, instructions, and image descriptions.
Copy file name to clipboardExpand all lines: content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/4_sl_profile_oot.md
+3-7Lines changed: 3 additions & 7 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -46,20 +46,16 @@ Run gator on the target to start system-wide capture mode:
46
46
47
47

48
48
49
-
Open Streamline and choose **TCP mode**:
50
-
51
-
Enter your target hostname or IP address.
49
+
Open Streamline and choose **TCP mode**. Enter your target hostname or IP address.
52
50

53
51
54
52
Select **Select counters** to open the counter configuration dialogue.
55
53
56
54
Add `L1 data Cache: Refill` and `L1 Data Cache: Access` and enable Event-Based Sampling (EBS) for both of them as shown in the screenshot and select **Save**.
57
55
58
-
{{% notice Further reading %}}
59
56
To learn more about counters, see the Arm Developer [Counter Configuration Guide](https://developer.arm.com/documentation/101816/latest/Capture-a-Streamline-profile/Counter-Configuration).
60
57
61
58
To learn more about EBS, see the [Streamline User Guide](https://developer.arm.com/documentation/101816/9-7/Capture-a-Streamline-profile/Counter-Configuration/Setting-up-event-based-sampling).
62
-
{{% /notice %}}
63
59
64
60

65
61
@@ -95,7 +91,7 @@ In the **Functions** tab, look for the function `char_dev_cache_traverse()`. You
95
91
96
92
To view the call path for `char_dev_cache_traverse()`, right-click the function name and select **Select in Call Paths**.
97
93
98
-
This opens the **Call Paths** tab, where you can trace which functions called `char_dev_cache_traverse()`. In the **Locations** column, you'll see the sequence of calls—starting from the userspace `echo` command and ending in your kernel module `mychardrv.ko`. This helps you understand how execution flows from userspace into your kernel code, making it easier to spot where performance issues might begin.
94
+
This opens the **Call Paths** tab, where you can trace which functions called `char_dev_cache_traverse()`. In the **Locations** column, you'll see the sequence of calls which start from the userspace `echo` command and ending in your kernel module `mychardrv.ko`. This helps you understand how execution flows from userspace into your kernel code, making it easier to spot where performance issues might begin.
99
95

100
96
101
97
Because you built your kernel module with debug information, Streamline highlights the exact lines of code that cause cache misses. This makes it easy to see which parts of your code need optimization.
@@ -104,5 +100,5 @@ Double-tap the function name to open the **Code** tab. The top section highlight
104
100

105
101
106
102
{{% notice Note %}}
107
-
You might need to configure path prefix substitution in the **Code** tab to view the source code correctly. For information on how to set this up and for more information about code analysis, see the [Streamline user guide](https://developer.arm.com/documentation/101816/latest/Analyze-your-capture/Analyze-your-code?lang=en).
103
+
You might need to configure path prefix substitution in the **Code** tab to view the source code correctly. For information on how to set this up and for more information about code analysis, see the [Streamline User Guide](https://developer.arm.com/documentation/101816/latest/Analyze-your-capture/Analyze-your-code?lang=en).
Copy file name to clipboardExpand all lines: content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/5_intree_kernel_driver.md
+15-15Lines changed: 15 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -17,26 +17,26 @@ Go to your kernel source directory, which in this case is located in Buildroot's
17
17
18
18
Copy the `mychardrv.c` file created earlier to `drivers/char` directory:
19
19
20
-
```bash
21
-
cd drivers/char
22
-
cp <mychardrv.c file> ./mychardrv.c
23
-
```
20
+
```bash
21
+
cd drivers/char
22
+
cp <mychardrv.c file> ./mychardrv.c
23
+
```
24
24
Add the following configuration to the bottom of the `Kconfig` file to make the kernel configuration system aware of the the new driver you just added:
25
25
26
-
```plaintext
27
-
config MYCHAR_DRIVER
28
-
tristate "My Character Driver"
29
-
default y
30
-
help
31
-
A simple character device driver for testing.
32
-
endmenu
33
-
```
26
+
```plaintext
27
+
config MYCHAR_DRIVER
28
+
tristate "My Character Driver"
29
+
default y
30
+
help
31
+
A simple character device driver for testing.
32
+
endmenu
33
+
```
34
34
35
35
You also need to modify the `Makefile` in the current directory to make it build the object file for `mychardrv.c`. Add the following line to it:
Copy file name to clipboardExpand all lines: content/learning-paths/embedded-and-microcontrollers/streamline-kernel-module/6_sl_profile_intree.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -25,9 +25,9 @@ After you select **vmlinux** as the capture image in the **Capture settings** di
25
25
Now, start the capture session. Streamline collects profiling data from the in-tree kernel driver and the rest of the kernel. When the capture completes, analyze the results using the same workflow as before.
26
26
27
27
You can review function-level metrics, explore call paths, and identify performance hotspots within both your driver and the kernel.
28
-
 "Streamline function tab displaying profiling data for vmlinux"
28
+

29
29
30
30
Because you selected the `vmlinux` image, Streamline displays both your driver functions and all other kernel functions sampled during profiling. This lets you see how your driver interacts with the rest of the kernel.
31
31
32
32
You can also explore the complete call path for any sampled function. This helps you understand how execution flows through your driver and the kernel, making it easier to identify performance bottlenecks or unexpected behavior.
33
-

33
+

0 commit comments