1# SmartPerf User Guide
2
3## Introduction
4
5SmartPerf Device is a reliable, easy-to-use performance and power consumption test tool. In this tool, you can monitor the performance and power consumption of your application and device with quantitative indicators, such as FPS, CPU, GPU, RAM, and Temp.<br> <!--Del-->Targeted at devices with or without screens, SmartPerf Device provides two modes: Device-hap and Device-daemon. <br>Device-hap is applicable to devices with screens and provides a visualized, intuitive UI that simplifies your operations. You can start and pause a test with a floating window, view performance data in real time, and save the test results for further analysis. <!--DelEnd--><br>Device-daemon is applicable to devices with and without screens and works with shell commands.
6
7### The following are the available indicators:
8- CPU: The tool reads the frequencies and usage of CPU cores on the test device on a per second basis to measure the CPU usage of the target application. Sustained high CPU may lead to overheating.
9- GPU: The tool reads the GPU frequency and load information of the test device on a per second basis to measure the GPU usage of the target application. High GPU usage can lead to performance drops and application slowdowns.
10- FPS: The tool reads the frame rate, in frames per second (FPS), of the target application to measure the smoothness of the application image. A higher FPS generally means smoother visuals.
11- POWER: The tool reads the current and voltage of the test device on a per second basis.
12- TEMP: The tool reads the temperature information of the test device on a per second basis, including the battery temperature and system chip temperature.
13- RAM: The tool reads the RAM usage of the target application on a per second basis.
14- snapshot: The tool takes a screenshot of the application UI every 2 seconds.
15
16## Principles
17
18The figure below demonstrates the main functions of SmartPerf Device. Set data collection items and parameters on Device-hap, start the application, and then send data requests for KPIs (such as FPS, RAM, and Trace) from Device-hap to Device-daemon through messages. Device-daemon collects, persists, and analyzes data as requested<!--Del-->, and then sends the data to Device-hap for display<!--DelEnd-->.
19
20![SmartPerf](figures/SmartPerfStru.png)
21
22## Constraints
23
241. Device-daemon and <!--Del-->Device-hap<!--DelEnd--> are pre-installed since API version 9.
25
262. Device-daemon must be connected to a hardware device<!--Del-->, and Device-hap can only be used on devices with a screen<!--DelEnd-->.
27
283. Before using the Device-Daemon, configure the [HDC environment](https://gitee.com/openharmony/developtools_hdc).
29
30## Performing Performance Testing
31
32<!--Del-->
33## SmartPerf Device-hap
34
35The RK3568 development board is used as an example below.
36
37### Obtaining the Application List
38
39Start SmartPerf Device-hap. On the home screen, click **Select an app**.
40
41<img src="figures/SmartPerfConfig1.png" alt="SmartPerfConfig1" style="zoom:67%;" />
42<img src="figures/SmartPerfConfig2.png" alt="SmartPerfConfig2" style="zoom:67%;" />
43<img src="figures/SmartPerfConfig3.png" alt="SmartPerfConfig3" style="zoom: 67%;" />
44
45### Setting Collection Parameters
46
47After the target application is selected, return to the start page and set the test indicators. You can also change the test name (which includes the name of the target application and the test time and will be displayed in the report), and specify whether to capture traces and whether to enable the screenshot feature. When you are done, click the **Start** button at the bottom.
48
49### Using the Floating Window to Manage Data Collection.
50
51To start collection, touch **Start** in the floating window. To pause, touch the timer in the floating window. To resume, touch the timer again. To view the collected data in real time, double-touch the timer. To stop, touch and hold the timer.<br>You can drag the floating window to anywhere you like.
52
53<img src="figures/SmartPerfControl1.png" alt="SmartPerfControl1" style="zoom: 67%;" />
54<img src="figures/SmartPerfControl2.png" alt="SmartPerfControl2" style="zoom: 67%;" />
55
56### Viewing the Report
57
58Click **Report** to access the report list. Touch a report to view its details.
59
60<img src="figures/SmartPerfReport1.png" alt="SmartPerfReport1" style="zoom: 67%;" />
61<img src="figures/SmartPerfReport2.png" alt="SmartPerfReport2" style="zoom: 67%;" />
62<!--DelEnd-->
63
64## SmartPerf Device-daemon
65
66### Basic Collection Commands
67
68| Command  |Mandatory| Description                  |
69| :-----| :-----| :--------------------- |
70| -N    |Yes| Sets the number of collection times (once per second).   |
71| -PKG  |No| Sets the bundle name.               |
72| -c    |No| Collects the CPU frequency and usage. If the application bundle name is set, the collected information covers both the system and the target application. If the application bundle name is not set, the collected information covers the system only.    |
73| -g    |No| Collects the GPU frequency and load information.  |
74| -f    |No| Collects the screen refresh rate and frame rate of the target application. The application bundle name must be specified.       |
75| -profilerfps |No| Collects the frame rate of the current page.         |
76| -t    |No| Collects temperature information.          |
77| -p    |No| Collects current and voltage information.               |
78| -r    |No| Collects the RAM usage. If the application bundle name is set, the collected information covers both the system and the target application. If the application bundle name is not set, the collected information covers the system only.            |
79| -snapshot |No| Takes screenshots.            |
80| -net |No| Collects the network speed.             |
81| -VIEW |No| Sets the view layer. You must obtain the layer name first.               |
82| -screen |No| Collects the screen resolution and refresh rate.              |
83| -d    |No| Collects the DDR data.                |
84| -sections|No| Sets segment-based collection.         |
85<!--RP1--><!--RP1End-->
86
87### Commands for Starting or Stopping Data Collection
88
89| Command  |Mandatory| Description                  |
90| :-----|:-----| :--------------------- |
91| -start |Yes| Starts collection. This command can be followed by basic collection commands.            |
92| -stop |Yes| Stops collection. A report is generated when collection is complete.             |
93
94### Example
95You need to run the commands in the shell. You can check whether the daemon process is running, view the help information, run the collection command to collect data and view the collection result.
96
97#### Switching to Shell
98
99  ```
100  C:\Users\issusser>hdc shell
101  #
102  ```
103
104
105#### Starting and Viewing the Daemon Process
106
107  ```
108  C:\Users\issusser>hdc shell
109  // Start the daemon process.
110  # SP_daemon 
111  // Check whether the daemon process is running.
112  # ps -ef | grep SP_daemon
113  root          1584     1 0 21:50:05 ?     00:00:00 SP_daemon
114  root          1595  1574 3 21:51:02 pts/0 00:00:00 grep SP_daemon
115  #
116  ```
117
118#### Viewing the Help Information
119
120<!--RP2-->
121
122  ```
123  # SP_daemon --help
124  OpenHarmony performance testing tool SmartPerf command-line version
125  Usage: SP_daemon <options> <arguments>
126  options:
127  -N             set the collection times(default value is 0) range[1,2147483647], for example: -N 10
128  -PKG           set package name, must add, for example: -PKG ohos.samples.ecg
129  -c             get device CPU frequency and CPU usage, process CPU usage and CPU load ..
130  -g             get device GPU frequency and GPU load 
131  -f             get app refresh fps(frames per second) and fps jitters and refreshrate
132  -profilerfps   get refresh fps and timestamp
133  -sections      set collection time period(using with profilerfps)
134  -t             get remaining battery power and temperature..
135  -p             get battery power consumption and voltage
136  -r             get process memory and total memory
137  -snapshot      get screen capture
138  -net           get uplink and downlink traffic
139  -start         collection start command
140  -stop          collection stop command
141  -VIEW          set layler, for example: -VIEW DisplayNode
142  -screen        get screen resolution
143  -OUT           set csv output path
144  -d             get device DDR information
145  example:
146  SP_daemon -N 20 -c -g -t -p -r -net -snapshot -d
147  SP_daemon -N 20 -PKG ohos.samples.ecg -c -g -t -p -f -r -net -snapshot -d
148  SP_daemon -start -c
149  SP_daemon -stop
150  SP_daemon -screen
151    
152  command exec finished!
153  #
154  ```
155<!--RP2End-->
156
157#### Running the Collection Commands
158
159  - Collect twice the frequency and usage of CPU cores.
160
161  ```
162  # SP_daemon -N 2 -c
163
164  order:0 timestamp=1501923846459
165  order:1 cpu0Frequency=408000
166  order:2 cpu0Usage=7.142857
167  order:3 cpu0idleUsage=92.857143
168  order:4 cpu0ioWaitUsage=0.000000
169  order:5 cpu0irqUsage=0.000000
170  order:6 cpu0niceUsage=0.000000
171  order:7 cpu0softIrqUsage=0.000000
172  order:8 cpu0systemUsage=5.102041
173  order:9 cpu0userUsage=2.040816
174  ...
175
176  command exec finished!
177  #
178  ```
179
180  - Collect twice the frequency and usage of CPU cores and CPU usage and load of processes.
181
182  ```
183  # SP_daemon -N 2 -PKG ohos.samples.ecg -c
184
185  order:0 timestamp=1705043036099
186  order:1 ProcAppName=ohos.samples.ecg
187  order:2 ProcCpuLoad=0.008766
188  order:3 ProcCpuUsage=0.025100
189  order:4 ProcId=8815
190  order:5 ProcSCpuUsage=0.000000
191  order:6 ProcUCpuUsage=0.025100
192  order:7 cpu0Frequency=1430000
193  order:8 cpu0Usage=29.032258
194  order:9 cpu0idleUsage=70.967742
195  order:10 cpu0ioWaitUsage=0.000000
196  order:11 cpu0irqUsage=2.150538
197  order:12 cpu0niceUsage=0.000000
198  order:13 cpu0softIrqUsage=0.000000
199  order:14 cpu0systemUsage=15.053763
200  order:15 cpu0userUsage=11.827957
201  ...
202
203  command exec finished!
204  #
205  ```
206  >**NOTE**
207  >
208  >- Make sure you are on the application screen when running this command.
209
210  - Collect once the GPU frequency and load of the system.
211
212  ```
213  # SP_daemon -N 1 -g
214
215  order:0 timestamp=1705041456507
216  order:1 gpuFrequency=279000000
217  order:2 gpuLoad=12.000000
218
219  command exec finished!
220  #
221  ```
222
223  - Collect twice the system temperature.
224
225  ```
226  # SP_daemon -N 2 -t
227
228  order:0 timestamp=1705042469378
229  order:1 Battery=36.000000
230  order:2 shell_back=38.962000
231  order:3 shell_frame=37.962000
232  order:4 shell_front=42.663000
233  order:5 soc_thermal=48.645000
234  order:6 system_h=38.277000
235
236  order:0 timestamp=1705042470389
237  order:1 Battery=36.000000
238  order:2 shell_back=38.962000
239  order:3 shell_frame=37.962000
240  order:4 shell_front=42.663000
241  order:5 soc_thermal=48.486000
242  order:6 system_h=38.277000
243
244  command exec finished!
245  #
246  ```
247
248  - Collect once the current and voltage of the system.
249
250  ```
251  # SP_daemon -N 1 -p
252
253  order:0 timestamp=1705041491090
254  order:1 currentNow=-255
255  order:2 voltageNow=4377614
256
257  command exec finished!
258  #
259  ```
260
261  - Collect twice the memory information of the system.
262
263  ```
264  # SP_daemon -N 2 -r
265  order:0 timestamp=1705041562521
266  order:1 memAvailable=7339224
267  order:2 memFree=7164708
268  order:3 memTotal=11641840
269
270  order:0 timestamp=1705041563527
271  order:1 memAvailable=7339136
272  order:2 memFree=7164684
273  order:3 memTotal=11641840
274
275  command exec finished!
276  #
277  ```
278
279  - Collect the memory information of the system and a specified application once.
280
281  ```
282  # SP_daemon -N 1 -PKG ohos.samples.ecg -r
283
284  order:0 timestamp=1720427095197
285  order:1 arktsHeapPss=17555
286  order:2 gpuPss=7021
287  order:3 graphicPss=163320
288  order:4 heapAlloc=120344
289  order:5 heapFree=14362
290  order:6 heapSize=133436
291  order:7 memAvailable=2757504
292  order:8 memFree=190852
293  order:9 memTotal=11742716
294  order:10 nativeHeapPss=49102
295  order:11 privateClean=1100020
296  order:12 privateDirty=175169
297  order:13 pss=422172
298  order:14 sharedClean=89348
299  order:15 sharedDirty=19084
300  order:16 stackPss=1588
301  order:17 swap=122076
302  order:18 swapPss=122076
303
304
305  command exec finished!
306  #
307  ```
308  >**NOTE**
309  >
310  >- Make sure you are on the application screen when running this command.
311  >- This command integrates the **-m** command of historical version, which collects data such as arktsHeapPss, gpuPss, graphicPss.
312
313  - Take two screenshots.
314
315  ```
316  # SP_daemon -N 2 -snapshot
317
318  order:0 timestamp=1705041753321
319  order:1 capture=data/local/tmp/capture/screenCap_1705041753321.png
320
321  /data/local/tmp/capture created!
322
323  order:0 timestamp=1705041754324
324  order:1 capture=NA
325
326  command exec finished!
327  #
328  ```
329  >**NOTE**
330  >
331  >- Screenshots are collected every 2 seconds.
332  >
333  >-  
334  >
335  >- When the collection is complete, you can view the screenshots in **data/local/tmp/capture**.
336  >
337  >- To export the screenshots to drive D, open a new CLI and run the **hdc file recv data/local/tmp/capture/screenCap_1700725192774.png D:\** command.
338
339  - Collect the network speeds twice.
340
341  ```
342  # SP_daemon -N 2 -net
343
344  order:0 timestamp=1705041904832
345  order:1 networkDown=0
346  order:2 networkUp=0
347
348  order:0 timestamp=1705041905870
349  order:1 networkDown=22931
350  order:2 networkUp=2004
351
352  command exec finished!
353  #
354  ```
355
356  - Collect the frame rate of the target application five times.
357
358  ```
359  # SP_daemon -N 5 -PKG ohos.samples.ecg -f
360
361  order:0 timestamp=1705306472232
362  order:1 fps=43
363  order:2 fpsJitters=602261688;;8352083;;8267708;;8305209;;8298437;;8308854;;8313542;;8569271;;8061458;;8300521;;8308333;;8309896;;8429167;;8241667;;8258333;;8318229;;8312500;;8304167;;41760937;;16418750;;8298959;;8319270;;8308334;;8313541;;8302605;;8320312;;8298958;;8326042;;8321354;;8301042;;8310417;;8309895;;8308855;;8331250;;8286458;;8343229;;8278125;;8311458;;8306250;;8312500;;8320834;;8346875;;8283333
364  order:3 refreshrate=120
365
366  order:0 timestamp=1705306473234
367  order:1 fps=40
368  order:2 fpsJitters=674427313;;8191145;;8310417;;8319271;;8301562;;8318750;;8302084;;8314062;;8333334;;8283854;;8307812;;8311979;;8310417;;8307813;;8309375;;8323958;;8306250;;8308333;;8317709;;8296875;;8721875;;7895833;;8320833;;8340625;;8276563;;8409896;;8216145;;8310938;;8301042;;8362500;;8252604;;8317708;;8376042;;8256250;;8292187;;8303125;;8313542;;8310417;;8520312
369  order:3 refreshrate=120
370  ...
371
372  command exec finished!
373  #
374  ```
375  >**NOTE**
376  >
377  >- When running this command, make sure you are on the application screen, and then swipe on the screen or switch between screens.
378  >- When dynamic refresh rate (DRR) is enabled, the refresh rate changes in real time (multiple changes may occur within one second). The value of **refreshrate** is collected at a timestamp.
379  >
380
381  - Collect the frame rate of the specified view layer for 10 times.
382
383  ```
384  # SP_daemon -N 10 -VIEW DisplayNode -f
385  order:0 timestamp=1705306822850
386  order:1 fps=15
387  order:2 fpsJitters=876291843;;8314062;;8308334;;8314583;;8310417;;8308333;;8326042;;8314583;;8292708;;8492709;;8143750;;8340104;;8294271;;8302604;;8297396
388  order:3 refreshrate=120
389 
390  order:0 timestamp=1705306823852
391  order:1 fps=12
392  order:2 fpsJitters=906667363;;8279167;;8311458;;8315625;;8291146;;8313021;;8323438;;8293750;;8303125;;8313541;;8301563;;8317708
393  order:3 refreshrate=120
394  ...
395
396  command exec finished!
397  #
398  ```
399  >**NOTE**
400  >
401  >- **DisplayNode** indicates the name of the specified layer.
402  >
403  >- When using this command to collect data, you need to operate the page on the specified layer.
404  >
405  >- This command cannot be used to collect data with the frame rate of the specified application (**SP_daemon -N 20 -PKG ohos.samples.ecg -f** or **SP_daemon -N 20 -VIEW DisplayNode -f**).
406
407  - Collect DDR information once.
408
409  ```
410  # SP_daemon -N 1 -d
411  
412  order:0 timestamp=1710916175201
413  order:1 ddrFrequency=1531000000
414  
415  command exec finished!
416  #
417  ```
418  <!--RP3--><!--RP3End-->
419
420  - Collect the full information of the system, including the CPU, GPU, temperature, current, voltage, memory, DDR, network speed, and screenshot information.
421
422  ```
423  # SP_daemon -N 10 ohos.samples.ecg -c -g -t -p -f -r -d -net -snapshot
424
425  order:0 timestamp=1705042018276
426  order:1 cpu0Frequency=490000
427  order:2 cpu0Usage=33.000000
428  order:3 cpu0idleUsage=67.000000
429  order:4 cpu0ioWaitUsage=0.000000
430  order:5 cpu0irqUsage=1.000000
431  order:6 cpu0niceUsage=0.000000
432  order:7 cpu0softIrqUsage=0.000000
433  order:8 cpu0systemUsage=14.000000
434  order:9 cpu0userUsage=18.000000
435  ...
436  order:115 gpuFrequency=279000000
437  order:116 gpuload=61.000000
438  order:117 Battery=28.000000
439  order:118 shell_back=31.529000
440  order:119 shell_frame=30.529000
441  order:120 shell_front=30.548000
442  order:121 soc_thermal=49.624000
443  order:122 system_h=30.150000
444  order:123 currentNow=278
445  order:124 voltageNow=4250532
446  order:125 memAvailable=6354252
447  order:126 memFree=5971776
448  order:127 memTotal=11530092
449  order:128 ddrFrequency=1531000000
450  order:129 networkDown=0
451  order:130 networkUp=0
452  order:131 capture=data/local/tmp/capture/screenCap_1711190737580.png
453
454  ...
455
456  command exec finished!
457  #
458  ```
459
460  - Collect the full information of the specified application, including the CPU, GPU, temperature, current, voltage, frame rate, memory, DDR, network speed, and screenshot information.
461
462   <!--RP4-->
463  ```
464  # SP_daemon -N 10 -PKG ohos.samples.ecg -c -g -t -p -f -r -d -net -snapshot
465
466  order:0 timestamp=1705042018276
467  order:1 ProcAppName=ohos.samples.ecg
468  order:2 ProcCpuLoad=0.000001
469  order:3 ProcCpuUsage=0.000000
470  order:4 ProcId=13131
471  order:5 ProcSCpuUsage=0.000000
472  order:6 ProcUCpuUsage=0.000000
473  order:7 cpu0Frequency=418000
474  order:8 cpu0Usage=27.884616
475  order:9 cpu0idleUsage=72.115385
476  order:10 cpu0ioWaitUsage=0.000000
477  order:11 cpu0irqUsage=0.961538
478  order:12 cpu0niceUsage=0.000000
479  order:13 cpu0softIrqUsage=0.000000
480  order:14 cpu0systemUsage=12.500000
481  order:15 cpu0userUsage=14.423077
482  ...
483  order:115 gpuFrequency=279000000
484  order:116 gpuload=61.000000
485  order:117 Battery=28.000000
486  order:118 shell_back=31.529000
487  order:119 shell_frame=30.529000
488  order:120 shell_front=30.548000
489  order:121 soc_thermal=49.624000
490  order:122 system_h=30.150000
491  order:123 currentNow=278
492  order:124 voltageNow=4250532
493  order:125 fps=3
494  order:126 fpsJitters=881659966;;108846354;;8289583
495  order:127 refreshrate=120
496  order:128 arktsHeapPss=16464
497  order:129 gpuPss=7021
498  order:130 graphicPss=163320
499  order:131 heapAlloc=118870
500  order:132 heapFree=14076
501  order:133 heapSize=131948
502  order:134 memAcailable=2776508
503  order:135 memFree=258668
504  order:136 memTotal=11742716
505  order:137 nativeHeapPss=45361
506  order:138 privateClean=104828
507  order:139 privateDirty=175189
508  order:140 pss=419476
509  order:141 sharedClean=87744
510  order:142 sharedDirty=19084
511  order:143 stackPss=1592
512  order:144 swap=125408
513  order:145 swapPss=125408
514  order:146 ddrFrequency=749000000
515  order:147 networkDown=7893
516  order:148 networkUp=1546
517  order:149 capture=data/local/tmp/capture/screenCap_1711190737580.png
518
519  ...
520
521  command exec finished!
522  #
523  ```
524   <!--RP4End-->
525
526  >**NOTE**
527  >
528  >- Make sure you are on the application screen when running this command.
529  >
530
531  - Collect the frame rate of the current page.
532
533  ```
534  # SP_daemon -profilerfps 10
535  set num:10 success
536  fps:0|1711692357278
537  fps:0|1711692358278
538  fps:1|1711692359278
539  fps:0|1711692360278
540  fps:0|1711692361278
541  fps:0|1711692362278
542  fps:0|1711692363278
543  fps:0|1711692364278
544  fps:26|1711692365278
545  fps:53|1711692366278
546  SP_daemon exec finished!
547  #
548  ```
549  >**NOTE**
550  >
551  >- This command must be executed separately, and its collection result is not written into the **data.csv** file.
552  >
553
554  - Collect the frame rate by time segment.
555
556  ```
557  # SP_daemon -profilerfps 100 -sectrions 10
558  set num:100 success
559  fps:0|1711692393278
560  fps:0|1711692394278
561  fps:0|1711692395278
562  fps:44|1711692396278
563  sectionsFps:0|1711692396278
564  sectionsFps:0|1711692396378
565  sectionsFps:40|1711692396478
566  sectionsFps:60|1711692396578
567  sectionsFps:60|1711692396678
568  sectionsFps:60|1711692396778
569  sectionsFps:60|1711692396878
570  sectionsFps:40|1711692396978
571  sectionsFps:60|1711692397078
572  sectionsFps:60|1711692397178
573  fps:51|1711692397278
574
575  ...
576
577  SP_daemon exec finished!
578  #
579  ```
580  >**NOTE**
581  >
582  >- In the preceding information, 100 indicates the number of collection times, which can be set to a positive integer. 10 indicates a segment. Currently, the value ranges from 1 to 10 (positive integer).
583  >
584  >- This command must be executed separately, and its collection result is not written into the **data.csv** file.
585
586  - Start and stop the service.
587
588  ```
589  Start data collection.
590  # SP_daemon -start -c
591  SP_daemon Collection begins
592  command exec finished!
593  #
594  
595  Stop data collection.
596  # SP_daemon -stop
597  SP_daemon Collection ended
598  Output Path: data/local/tmp/smartperf/1/t_index_info_csv
599  command exec finished!
600  #
601
602  ```
603  >**NOTE**
604  >
605  >- To start data collection of the system, run the **SP_daemon -start -c -g -t -p -r -d -net -snapshot** command.
606  >
607  >- To start data collection of the system and process, run the **SP_daemon -start -PKG ohos.samples.ecg -c -g -t -p -f -r -d -net -snapshot** command. 
608  >
609  >- Run the start command to start collection, operate the device or application, and then run the stop command to stop collection.
610  >
611  >- The results for the start and stop command are saved to the **data/local/tmp/smartperf/1/t_index_info.csv** file. You can also run the **hdc file recv** command to export the report. For example, run the **hdc file recv data/local/tmp/smartperf/1/t_index_info.csv D:\** command to export the report to drive D.
612  >
613
614  - Obtain the screen resolution.
615
616  ```
617  # SP_daemon -screen
618  activeMode: 1260x2720, refreshrate=120
619  command exec finished!
620  #
621  ```
622  >**NOTE**
623  >
624  >- **activeMode** indicates the current screen resolution, and **refreshrate** indicates the screen refresh rate.
625  >
626  >- This command must be executed separately, and its collection result is not written into the **data.csv** file.
627
628#### Exporting and Viewing Collection Results
629Before exporting and viewing the collection result, you need to run the preceding collection commands.
630
631  - By default, the collection results are saved to **/data/local/tmp/data.csv**.
632
633  - To check the path to the test result file:
634    ```
635    C:\Users\issusser>hdc shell
636    # cd data/local/tmp
637    # ls
638    data.csv
639    #
640    ```
641
642  - To export the test result file:
643    ```
644    C:\Users\issusser>hdc file recv data/local/tmp/data.csv D:\
645    [I][2023-11-08 16:16:41] HdcFile::TransferSummary success
646    FileTransfer finish, Size:429, File count = 1, time:6ms rate:71.50kB/s
647
648    C:\Users\issusser>
649    ```
650
651  - Open the **data.csv** file to view data.
652
653    The table below describes the data fields in the **data.csv** file.
654
655    | Data Field   | Description            |Remarks|
656    | :-----| :--------------------- |:-----|
657    | cpuFrequency      | CPU core frequency.       |Unit: Hz|
658    | cpuUasge          | CPU core usage.         |%|
659    | cpuidleUsage      | CPU usage in idle state.       |%|
660    | cpuioWaitUsage    | CPU usage of I/O wait.       |%|
661    | cpuirqUsage       | CPU usage of hardware interrupts.        |%|
662    | cpuniceUsage      | CPU usage of user level processes with lower scheduling priority.   |%|
663    | cpusoftIrqUsage   | CPU usage of software interrupts.        |%|
664    | cpusystemUsage    | CPU usage in kernel mode.     |%|
665    | cpuuserUsage      | CPU usage in user mode.          |%|
666    | ProcId            | PID.               |
667    | ProcAppName       | App package name.               ||
668    | ProcCpuLoad       | Process CPU load.       |%|
669    | ProcCpuUsage      | CPU usage of the process.         |%|
670    | ProcUCpuUsage     | CPU usage of the process in user mode.    |%|
671    | ProcSCpuUsage     | CPU usage of the process in kernel mode.    |%|
672    | gpuFrequ          | GPU frequency of the system.         |%|
673    | gpuLoad           | GPU load of the system.     |%|
674    | currentNow        | Current value.      |Unit: mA|
675    | voltageNow        | Voltage value.      |Unit: μV|
676    | fps               | Number of frames per second.             |Unit: FPS|
677    | fpsJitters        | Frame interval.       |Unit: ns|
678    | refreshrate       | Screen refresh rate.           |Unit: Hz|
679    | networkDown       | Downstream rate.             |Unit: byte/s|
680    | networkUp         | Uplink rate.             |Unit: byte/s|
681    | ddrFrequency      | DDR frequency.              |Unit: Hz|
682    | shell_front       | Front cover temperature.             |Unit: °C|
683    | shell_frame       | Frame temperature.             |Unit: °C|
684    | shell_back        | Rear cover temperature.             |Unit: °C|
685    | soc_thermal       | SoC temperature.         |Unit: °C|
686    | system_h          | System temperature.            |Unit: °C|
687    | Battery           | Battery temperature.            |Unit: °C|
688    | memAvailable      | Available memory of the system.        |Unit: KB|
689    | memFree           | Free memory of the system.        |Unit: KB|
690    | memTotal          | Total memory of the system.          |Unit: KB|
691    | pss               | Proportional set size (PSS) of the process.     |Unit: KB|
692    | sharedClean       | Shared unwritten pages.     |Unit: KB|
693    | sharedDirty       | Shared rewritten pages.     |Unit: KB|
694    | priviateClean     | Private unwritten pages.     |Unit: KB|
695    | privateDirty      | Private rewritten pages.     |Unit: KB|
696    | swapTotal         | Total swap memory.         |Unit: KB|
697    | swapPss           | Swapped PSS.       |Unit: KB|
698    | HeapSize          | Heap size.          |Unit: KB|
699    | HeapAlloc         | Heap size that can be allocated.   |Unit: KB|
700    | HeapFree          | Remaining heap size.     |Unit: KB|
701    | gpuPss            | Used GPU size.    |Unit: KB|
702    | graphicPss        | Used graphics memory size.    |Unit: KB|
703    | arktsHeapPss      | Used ArkTS memory size.   |Unit: KB|
704    | nativeHeapPss     | Used native memory size.  |Unit: KB|
705    | stackPss          | Used stack memory size.      |Unit: KB|
706    | timeStamp         | Timestamp.           |Collection time.|
707    <!--RP5--><!--RP5End-->
708