1# SmartPerf Device性能工具使用指导
2
3## 工具简介
4
5SmartPerf Device是一款基于系统开发的性能功耗测试工具,操作简单易用。该工具可以监测性能、功耗相关指标,包括FPS、CPU、GPU、RAM、Temp等,通过量化的指标项了解应用、整机性能状况。
6
7<!--Del-->在开发过程中,会使用到有屏或无屏设备,对此SmartPerf Device提供了两种方式:分别是Device-hap端和Device-daemon端。Device-hap端适用于有屏设备,支持可视化操作。测试时是通过悬浮窗的开始和暂停来实时展示性能指标数据,保存后可生成数据报告,在报告中可分析各指标数据详情。<!--DelEnd-->Device-daemon端支持shell命令行方式,同时适用于有屏和无屏设备。
8
9### 指标说明
10
11- CPU:每秒读取一次设备节点下CPU大中小核的频点和各核使用率,衡量应用占用CPU资源的情况,占用过多的CPU资源会导致芯片发烫。
12- GPU:每秒读取一次设备节点下GPU的频点和负载信息,衡量应用占用GPU资源的情况,当GPU占用过多时,会导致性能下降,应用程序的运行速度变慢。
13- FPS:应用界面每秒刷新次数,衡量应用画面的流畅度,FPS越高通常表示图像流畅度越好,用户体验也越好。
14- TEMP:每秒读取一次设备节点下GPU温度、系统芯片温度信息。
15- RAM:每秒读取一次应用进程的实际物理内存,衡量应用的内存占比情况。
16- snapshot:每2秒截取一张应用界面截图。
17
18## 实现原理
19
20下图展示了SmartPerf Device工具的主要功能组成。Device-hap端设置好采集项和采集参数后,启动应用,FPS、RAM、Trace等指标通过消息发送给Device-daemon端,Device-daemon端进行数据采集、持久化和数据分析<!--Del-->,将生成的报告回传给Device-hap端,Device-hap端进行可视化显示<!--DelEnd-->。
21
22![图片说明](figures/SmartPerfStru.png)
23
24## 约束与限制
25
261. Device-daemon端<!--Del-->、Device-hap端<!--DelEnd-->在API 9版本开始预置使用。
27
282. Device-daemon端执行需连接硬件设备<!--Del-->,Device-hap端需在有屏幕设备使用<!--DelEnd-->。
29
303. Device-daemon端执行前需完成[hdc环境配置](https://gitee.com/openharmony/developtools_hdc)31
32<!--Del-->
33
34## SmartPerf Device-hap端
35
36下面的操作步骤和界面内容以RK3568设备为例。
37
38### 获取应用列表
39
40点击设备上"SmartPerf Device-hap端"应用图标,进入"首页",点击"请选择一个应用",在应用列表页选择需要测试的应用。
41
42![图片说明](figures/SmartPerfConfig1.png)
43![图片说明](figures/SmartPerfConfig2.png)
44![图片说明](figures/SmartPerfConfig3.png)
45
46### 设置采集参数
47
48应用选择完成后回到开始测试页面,根据实际业务需要,配置"测试指标"。同时,可修改测试名称(测试名称包含测试的应用名称和测试时间,会呈现在报告列表中),是否抓取trace,选择是否开启截图。配置完成后,点击底部"开始测试"按钮。
49
50### 悬浮窗控制采集
51
52点击悬浮窗"start"开始采集,点击悬浮窗"计时器"(如下图中00:07)暂停采集。再次点击"计时器",继续开始采集。双击"计时器",实时展示采集数据。长按"计时器",结束采集。<br>整个过程中,可拖动悬浮框调整悬浮框位置。
53
54![图片说明](figures/SmartPerfControl1.png)
55![图片说明](figures/SmartPerfControl2.png)
56
57### 查看报告
58
59点击"报告",查看测试报告列表。点击项目,进入报告详情页,查看测试指标项详情。
60
61![图片说明](figures/SmartPerfReport1.png)
62![图片说明](figures/SmartPerfReport2.png)
63<!--DelEnd-->
64
65<!--RP1-->
66## SmartPerf Device-daemon端
67<!--RP1End-->
68
69### 采集前提
70
71#### 进入shell
72
73  ```
74  C:\Users\issusser>hdc shell
75  #
76  ```
77
78#### 拉起和查看daemon进程
79
80  ```
81  C:\Users\issusser>hdc shell
82  // 拉起daemon进程
83  # SP_daemon
84  // 查看daemon进程是否存在
85  # ps -ef | grep SP_daemon
86  root          1584     1 0 21:50:05 ?     00:00:00 SP_daemon
87  root          1595  1574 3 21:51:02 pts/0 00:00:00 grep SP_daemon
88  #
89  ```
90
91#### 执行和查看帮助命令
92
93<!--RP3-->
94
95  ```
96  # SP_daemon --help
97  OpenHarmony performance testing tool SmartPerf command-line version
98   Usage: SP_daemon [options] [arguments]
99
100   options:
101    -N              set the collection times(default value is 0) range[1,2147483647], for example: -N 10
102    -PKG            set package name, must add, for example: -PKG ohos.samples.ecg
103    -c              get device CPU frequency and CPU usage, process CPU usage and CPU load ..
104    -g              get device GPU frequency and GPU load
105    -f              get app refresh fps(frames per second) and fps jitters and refreshrate
106    -profilerfps    get refresh fps and timestamp
107    -sections       set collection time period(using with profilerfps)
108    -t              get remaining battery power and temperature..
109    -p              get battery power consumption and voltage(Not supported by some devices)
110    -r              get process memory and total memory
111    -snapshot       get screen capture
112    -net            get uplink and downlink traffic
113    -start          collection start command
114    -stop           collection stop command
115    -VIEW           set layler, for example: -VIEW DisplayNode
116    -OUT            set csv output path.
117    -d              get device DDR information
118    -screen         get screen resolution
119    -deviceinfo     get device information
120    -server         start a process to listen to the socket message of the start and stop commands
121    -clear          clear the process ID
122    -ohtestfps      used by the validator to obtain the fps, the collection times can be set
123    -editorServer   start a process to listen to the socket message of the editor
124    -recordcapacity get the battery level difference
125    --version       get version
126    --help          get help
127    -editor         scenario-based collection identifier, parameter configuration items can be added later
128    responseTime   get the page response delay after an application is operated
129    completeTime   get the page completion delay after an application is operated
130    fpsohtest      used by the validator to obtain the fps
131    example1:
132    SP_daemon -N 20 -c -g -t -p -r -net -snapshot -d
133    SP_daemon -N 20 -PKG ohos.samples.ecg -c -g -t -p -f -r -net -snapshot -d
134    SP_daemon -start -c
135    SP_daemon -stop
136    example2: These parameters need to be used separately
137    SP_daemon -screen
138    SP_daemon -deviceinfo
139    SP_daemon -server
140    SP_daemon -clear
141    SP_daemon -ohtestfps 10
142    SP_daemon -editorServer
143    SP_daemon -recordcapacity
144    example3: These parameters need to be used separately
145    SP_daemon -editor responseTime ohos.samples.ecg app name
146    SP_daemon -editor completeTime ohos.samples.ecg app name
147    SP_daemon -editor fpsohtest
148
149
150
151    command exec finished!
152   #
153  ```
154<!--RP3End-->
155
156### 基础采集
157
158#### 通过-N开启采集
159
160| 命令参数   |必选| 说明                   |
161| :-----| :-----| :--------------------- |
162| -N    |是| 设置采集次数,一秒采集一次    |
163| -PKG  |否| 设置包名                |
164| -c    |否| 采集cpu的频点和使用率。<br>设置应用包名时,采集整机和应用CPU信息 <br>不设置应用包名时,采集整机CPU信息     |
165| -g    |否| 采集gpu的频点和负载信息   |
166| -f    |否| 采集指定应用的fps以及屏幕刷新率,必须设置应用包名        |
167| -t    |否| 采集GPU温度、系统芯片温度           |
168| -r    |否| 采集内存。<br>设置应用包名时,采集整机和应用内存信息 <br>不设置应用包名时,采集整机内存信息             |
169| -snapshot |否| 屏幕截图             |
170| -net |否| 采集网络速率              |
171| -VIEW |否| 设置图层,需要先获取应用图层名                |
172| -d    |否| 采集DDR                 |
173| -sections|否| 设置分段采集          |
174<!--RP2--><!--RP2End-->
175
176##### 使用示例
177
178- 采集2次整机CPU大中小核频率、各核使用率
179
180  ```
181    # SP_daemon -N 2 -c
182
183    order:0 timestamp=1503078645909
184    order:1 cpu0Frequency=1992000
185    order:2 cpu0Usage=34.042553
186    order:3 cpu0idleUsage=65.957447
187    order:4 cpu0ioWaitUsage=0.000000
188    order:5 cpu0irqUsage=0.000000
189    order:6 cpu0niceUsage=0.000000
190    order:7 cpu0softIrqUsage=0.000000
191    order:8 cpu0systemUsage=15.957447
192    order:9 cpu0userUsage=18.085106
193    order:10 cpu1Frequency=1992000
194    order:11 cpu1Usage=43.877551
195    order:12 cpu1idleUsage=56.122449
196    order:13 cpu1ioWaitUsage=0.000000
197    order:14 cpu1irqUsage=0.000000
198    order:15 cpu1niceUsage=0.000000
199    order:16 cpu1softIrqUsage=0.000000
200    order:17 cpu1systemUsage=17.346939
201    order:18 cpu1userUsage=26.530612
202    order:19 cpu2Frequency=1992000
203    order:20 cpu2Usage=38.043478
204    order:21 cpu2idleUsage=61.956522
205    order:22 cpu2ioWaitUsage=0.000000
206    order:23 cpu2irqUsage=0.000000
207    order:24 cpu2niceUsage=0.000000
208    order:25 cpu2softIrqUsage=0.000000
209    order:26 cpu2systemUsage=11.956522
210    order:27 cpu2userUsage=26.086957
211    order:28 cpu3Frequency=1992000
212    order:29 cpu3Usage=68.421053
213    order:30 cpu3idleUsage=31.578947
214    order:31 cpu3ioWaitUsage=0.000000
215    order:32 cpu3irqUsage=0.000000
216    order:33 cpu3niceUsage=0.000000
217    order:34 cpu3softIrqUsage=0.000000
218    order:35 cpu3systemUsage=13.684211
219    order:36 cpu3userUsage=54.736842
220
221    ...
222
223    command exec finished!
224    #
225  ```
226
227- 采集2次整机CPU大中小核频率、各核使用率以及进程CPU使用率、负载
228
229  ```
230    # SP_daemon -N 2 -PKG com.ohos.settings -c
231
232
233
234    order:0 timestamp=1503078694916
235    order:1 ProcAppName=com.ohos.settings
236    order:2 ProcCpuLoad=0
237    order:3 ProcCpuUsage=0
238    order:4 ProcId=0
239    order:5 ProcSCpuUsage=0
240    order:6 ProcUCpuUsage=0
241    order:7 cpu0Frequency=1992000
242    order:8 cpu0Usage=31.868132
243    order:9 cpu0idleUsage=68.131868
244    order:10 cpu0ioWaitUsage=0.000000
245    order:11 cpu0irqUsage=0.000000
246    order:12 cpu0niceUsage=0.000000
247    order:13 cpu0softIrqUsage=0.000000
248    order:14 cpu0systemUsage=15.384615
249    order:15 cpu0userUsage=16.483516
250    order:16 cpu1Frequency=1992000
251    order:17 cpu1Usage=44.791667
252    order:18 cpu1idleUsage=55.208333
253    order:19 cpu1ioWaitUsage=0.000000
254    order:20 cpu1irqUsage=0.000000
255    order:21 cpu1niceUsage=0.000000
256    order:22 cpu1softIrqUsage=0.000000
257    order:23 cpu1systemUsage=13.541667
258    order:24 cpu1userUsage=31.250000
259    order:25 cpu2Frequency=1992000
260    order:26 cpu2Usage=37.894737
261    order:27 cpu2idleUsage=62.105263
262    order:28 cpu2ioWaitUsage=0.000000
263    order:29 cpu2irqUsage=0.000000
264    order:30 cpu2niceUsage=0.000000
265    order:31 cpu2softIrqUsage=1.052632
266    order:32 cpu2systemUsage=13.684211
267    order:33 cpu2userUsage=23.157895
268    order:34 cpu3Frequency=1992000
269    order:35 cpu3Usage=81.632653
270    order:36 cpu3idleUsage=18.367347
271    order:37 cpu3ioWaitUsage=0.000000
272    order:38 cpu3irqUsage=0.000000
273    order:39 cpu3niceUsage=0.000000
274    order:40 cpu3softIrqUsage=0.000000
275    order:41 cpu3systemUsage=15.306122
276    order:42 cpu3userUsage=66.326531
277
278    ...
279
280    command exec finished!
281    #
282  ```
283
284  >**说明**
285  >
286  >- 使用该命令采集时需进入被测应用内。
287
288- 采集1次整机GPU频率和负载
289
290  ```
291    # SP_daemon -N 1 -g
292
293
294
295    order:0 timestamp=1503078740268
296    order:1 gpuFrequency=200000000
297    order:2 gpuLoad=38.000000
298
299    command exec finished!
300    #
301  ```
302
303- 采集2次整机温度
304
305  ```
306    # SP_daemon -N 2 -t
307
308    order:0 timestamp=1502720711191
309    order:1 gpu-thermal=42500.000000
310    order:2 soc-thermal=43.125000
311
312
313    order:0 timestamp=1502720712191
314    order:1 gpu-thermal=41875.000000
315    order:2 soc-thermal=42.500000
316
317    command exec finished!
318    #
319  ```
320
321- 采集2次整机内存
322
323  ```
324    # SP_daemon -N 2 -r
325    order:0 timestamp=1705041562521
326    order:1 memAvailable=7339224
327    order:2 memFree=7164708
328    order:3 memTotal=11641840
329
330    order:0 timestamp=1705041563527
331    order:1 memAvailable=7339136
332    order:2 memFree=7164684
333    order:3 memTotal=11641840
334
335    command exec finished!
336    #
337  ```
338
339- 采集1次整机和指定应用进程内存
340
341  ```
342    # SP_daemon -N 1 -PKG ohos.samples.ecg -r
343
344    order:0 timestamp=1720427095197
345    order:1 arktsHeapPss=17555
346    order:2 gpuPss=7021
347    order:3 graphicPss=163320
348    order:4 heapAlloc=120344
349    order:5 heapFree=14362
350    order:6 heapSize=133436
351    order:7 memAvailable=2757504
352    order:8 memFree=190852
353    order:9 memTotal=11742716
354    order:10 nativeHeapPss=49102
355    order:11 privateClean=1100020
356    order:12 privateDirty=175169
357    order:13 pss=422172
358    order:14 sharedClean=89348
359    order:15 sharedDirty=19084
360    order:16 stackPss=1588
361    order:17 swap=122076
362    order:18 swapPss=122076
363
364
365    command exec finished!
366    #
367  ```
368  >**说明**
369  >
370  >- 使用该命令采集时需进入被测应用内。
371  >- 该命令集成了历史版本-m的数据(arktsHeapPss、gpuPss、graphicPss...)。
372
373- 采集2次截图
374
375  ```
376    # SP_daemon -N 2 -snapshot
377
378    order:0 timestamp=1705041753321
379    order:1 capture=data/local/tmp/capture/screenCap_1705041753321.png
380
381    /data/local/tmp/capture created!
382
383    order:0 timestamp=1705041754324
384    order:1 capture=NA
385
386    command exec finished!
387    #
388  ```
389  >**说明**
390  >
391  >- 截图采集是2秒截取一次。
392  >
393  >- 截图报告存放路径为:data/local/tmp/capture394  >
395  >- 采集结束后:进入 data/local/tmp/capture 查看生成的截图。
396  >
397  >- 导出截图到D盘:重启一个命令行工具执行命令: hdc file recv data/local/tmp/capture/screenCap_1700725192774.png D:\。
398
399- 采集2次网络速率
400
401  ```
402    # SP_daemon -N 2 -net
403
404    order:0 timestamp=1705041904832
405    order:1 networkDown=0
406    order:2 networkUp=0
407
408    order:0 timestamp=1705041905870
409    order:1 networkDown=22931
410    order:2 networkUp=2004
411
412    command exec finished!
413    #
414  ```
415
416- 采集5次指定应用帧率
417
418  ```
419    # SP_daemon -N 5 -PKG ohos.samples.ecg -f
420
421    order:0 timestamp=1705306472232
422    order:1 fps=43
423    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
424    order:3 refreshrate=120
425
426    order:0 timestamp=1705306473234
427    order:1 fps=40
428    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
429    order:3 refreshrate=120
430    ...
431
432    command exec finished!
433    #
434  ```
435  >**说明**
436  >
437  >- 使用该命令采集时需进入被测应用内,滑动或切换页面。
438  >- 在智能刷新率情况下,刷新率是实时变化的(一秒内可能存在多次变化),refreshrate取值是采集时刻(timestamp)的刷新率。
439
440
441- 采集10次指定图层帧率
442
443  ```
444    # SP_daemon -N 10 -VIEW DisplayNode -f
445    order:0 timestamp=1705306822850
446    order:1 fps=15
447    order:2 fpsJitters=876291843;;8314062;;8308334;;8314583;;8310417;;8308333;;8326042;;8314583;;8292708;;8492709;;8143750;;8340104;;8294271;;8302604;;8297396
448    order:3 refreshrate=120
449
450    order:0 timestamp=1705306823852
451    order:1 fps=12
452    order:2 fpsJitters=906667363;;8279167;;8311458;;8315625;;8291146;;8313021;;8323438;;8293750;;8303125;;8313541;;8301563;;8317708
453    order:3 refreshrate=120
454    ...
455
456    command exec finished!
457    #
458  ```
459  >**说明**
460  >
461  >- DisplayNode 是指定的图层名。
462  >
463  >- 使用该命令采集时,需在传入的图层上操作页面。
464  >
465  >- 该命令不能与指定应用帧率一起采集(SP_daemon -N 20 -PKG ohos.samples.ecg -f 或 SP_daemon -N 20 -VIEW DisplayNode -f)。
466
467- 采集1次DDR信息
468
469  ```
470    # SP_daemon -N 1 -d
471
472    order:0 timestamp=1710916175201
473    order:1 ddrFrequency=1531000000
474
475    command exec finished!
476    #
477  ```
478<!--RP4--><!--RP4End-->
479
480- 全量采集示例1,采集整机信息,包括cpu、gpu、温度、内存信息、DDR信息、网络速率、屏幕截图
481
482  ```
483    # SP_daemon -N 10 -c -g -t -r -d -net -snapshot
484
485    order:0 timestamp=1502725274844
486    order:1 cpu0Frequency=1992000
487    order:2 cpu0Usage=37.634409
488    order:3 cpu0idleUsage=62.365591
489    order:4 cpu0ioWaitUsage=0.000000
490    order:5 cpu0irqUsage=0.000000
491    order:7 cpu0softIrqUsage=1.075269
492    order:8 cpu0systemUsage=17.204301
493    order:9 cpu0userUsage=19.354839
494    order:10 cpu1Frequency=1992000
495    order:11 cpu1Usage=87.878788
496    order:12 cpu1idleUsage=12.121212
497    order:13 cpu1ioWaitUsage=0.000000
498    order:14 cpu1irqUsage=0.000000
499    order:15 cpu1niceUsage=0.000000
500    order:16 cpu1softIrqUsage=0.000000
501    order:17 cpu1systemUsage=15.151515
502    order:18 cpu1userUsage=72.727273
503    order:19 cpu2Frequency=1992000
504    order:20 cpu2Usage=45.544554
505    order:21 cpu2idleUsage=54.455446
506    order:22 cpu2ioWaitUsage=0.000000
507    order:23 cpu2irqUsage=0.000000
508    order:24 cpu2niceUsage=0.000000
509    order:25 cpu2softIrqUsage=0.990099
510    order:26 cpu2systemUsage=14.851485
511    order:27 cpu2userUsage=29.702970
512    order:28 cpu3Frequency=1992000
513    order:29 cpu3Usage=39.175258
514    order:30 cpu3idleUsage=60.824742
515    order:31 cpu3ioWaitUsage=0.000000
516    order:32 cpu3irqUsage=0.000000
517    order:33 cpu3niceUsage=0.000000
518    order:34 cpu3softIrqUsage=1.030928
519    order:35 cpu3systemUsage=14.432990
520    order:36 cpu3userUsage=23.711340
521    order:37 gpuFrequency=300000000
522    order:38 gpuLoad=25.000000
523    order:39 gpu-thermal=43750.000000
524    order:40 soc-thermal=45.555000
525    order:41 memAvailable=1118792
526    order:42 memFree=688032
527    order:43 memTotal=1990104
528    order:44 ddrFrequency=0
529    order:45 networkDown=0
530    order:46 networkUp=0
531    order:47 capture=data/local/tmp/capture/screenCap_1502725274893.png
532
533    ...
534
535    command exec finished!
536    #
537  ```
538
539- 全量采集示例2,采集指定应用信息,包括cpu、gpu、温度、fps、内存信息、DDR信息、网络速率、屏幕截图
540
541  <!--RP5-->
542  ```
543    # SP_daemon -N 10 -PKG ohos.samples.ecg -c -g -t -f -r -d -net -snapshot
544
545    order:0 timestamp=1502725340425
546    order:1 ProcAppName=com.ohos.settings
547    order:2 ProcCpuLoad=0.000000
548    order:3 ProcCpuUsage=35.950135
549    order:4 ProcId=3912
550    order:5 ProcSCpuUsage=6.721698
551    order:6 ProcUCpuUsage=29.228437
552    order:7 cpu0Frequency=1992000
553    order:8 cpu0Usage=64.539007
554    order:9 cpu0idleUsage=35.460993
555    order:10 cpu0ioWaitUsage=0.000000
556    order:11 cpu0irqUsage=0.000000
557    order:12 cpu0niceUsage=0.000000
558    order:13 cpu0softIrqUsage=0.000000
559    order:14 cpu0systemUsage=26.241135
560    order:15 cpu0userUsage=38.297872
561    order:16 cpu1Frequency=1992000
562    order:17 cpu1Usage=73.758865
563    order:18 cpu1idleUsage=26.241135
564    order:19 cpu1ioWaitUsage=0.000000
565    order:20 cpu1irqUsage=0.000000
566    order:21 cpu1niceUsage=0.000000
567    order:22 cpu1softIrqUsage=0.000000
568    order:23 cpu1systemUsage=29.078014
569    order:24 cpu1userUsage=44.680851
570    order:25 cpu2Frequency=1992000
571    order:26 cpu2Usage=75.172414
572    order:27 cpu2idleUsage=24.827586
573    order:28 cpu2ioWaitUsage=0.000000
574    order:29 cpu2irqUsage=0.000000
575    order:30 cpu2niceUsage=0.000000
576    order:31 cpu2softIrqUsage=0.000000
577    order:32 cpu2systemUsage=18.620690
578    order:33 cpu2userUsage=56.551724
579    order:34 cpu3Frequency=1992000
580    order:35 cpu3Usage=80.419580
581    order:36 cpu3idleUsage=19.580420
582    order:37 cpu3ioWaitUsage=0.000000
583    order:38 cpu3irqUsage=0.000000
584    order:39 cpu3niceUsage=0.000000
585    order:40 cpu3softIrqUsage=0.699301
586    order:41 cpu3systemUsage=21.678322
587    order:42 cpu3userUsage=58.041958
588    order:43 gpuFrequency=800000000
589    order:44 gpuLoad=45.000000
590    order:45 gpu-thermal=44375.000000
591    order:46 soc-thermal=46.111000
592    order:47 fps=40
593    order:48 fpsJitters=14482127;;28966003;;28971836;;14484751;;28952878;;28970962;;14480959;;28968337;;14476001;;28967461;;28968045;;14477751;;28966878;;28975337;;14475126;;28962795;;28967461;;14496710;;28953169;;28966003;;14483002;;28963961;;28965711;;28964836;;28966295;;14550085;;28898628;;28964544;;28975628;;14497293;;28938878;;43454546;;28966003;;28973295;;28959878;;28964252;;14476585;;28965128;;28970670;;14478626
594    order:49 refreshrate=69
595    order:50 arktsHeapPss=8482
596    order:51 gpuPss=0
597    order:52 graphicPss=10800
598    order:53 heapAlloc=0
599    order:54 heapFree=0
600    order:55 heapSize=0
601    order:56 memAvailable=1113084
602    order:57 memFree=681968
603    order:58 memTotal=1990104
604    order:59 nativeHeapPss=24630
605    order:60 privateClean=7072
606    order:61 privateDirty=43304
607    order:62 pss=71001
608    order:63 sharedClean=93024
609    order:64 sharedDirty=45060
610    order:65 stackPss=1784
611    order:66 swap=0
612    order:67 swapPss=0
613    order:68 ddrFrequency=0
614    order:69 networkDown=0
615    order:70 networkUp=0
616    order:71 capture=data/local/tmp/capture/screenCap_1502725341222.png
617
618    ...
619
620    command exec finished!
621    #
622  ```
623  <!--RP5End-->
624
625  >**说明**
626  >
627  >- 使用该命令采集时需进入被测应用内。
628
629
630#### 通过-start开启采集
631
632先执行start开始采集命令,然后操作设备或应用,最后执行stop结束采集命令。
633
634| 命令参数   |必选| 说明                   |
635| :-----|:-----| :--------------------- |
636| -start |是| 开始采集,该命令参数后可添加基础采集命令,一秒采集一次            |
637| -stop |是| 结束采集,执行后会生成采集报告              |
638
639##### 使用示例
640
641   ```
642   开始采集
643   # SP_daemon -start -c
644   SP_daemon Collection begins
645   command exec finished!
646   #
647
648   结束采集
649   # SP_daemon -stop
650   SP_daemon Collection ended
651   Output Path: data/local/tmp/smartperf/1/t_index_info_csv
652   command exec finished!
653   #
654   ```
655   >**说明**
656   >
657   >- 开始采集示例1(采整机):SP_daemon -start -c -g -t -r -d -net -snapshot。
658   >
659   >- 开始采集示例2(采整机和进程):SP_daemon -start -PKG ohos.samples.ecg -c -g -t -f -r -d -net -snapshot。
660   >
661   >- 启停服务文件输出路径为:data/local/tmp/smartperf/1/t_index_info.csv,可通过hdc file recv的方式导出查看报告。具体请参考[查看csv采集结果](#查看csv采集结果)。
662
663#### 查看csv采集结果
664
665若采集结果保存在csv文件中,可以按照如下操作导出和查看结果内容。
666
667  - 采集结果默认输出路径:/data/local/tmp/data.csv
668
669  - 查看文件位置
670
671    ```
672    C:\Users\issusser>hdc shell
673    # cd data/local/tmp
674    # ls
675    data.csv
676    #
677    ```
678
679  - 导出文件
680    ```
681    C:\Users\issusser>hdc file recv data/local/tmp/data.csv D:\
682    [I][2023-11-08 16:16:41] HdcFile::TransferSummary success
683    FileTransfer finish, Size:429, File count = 1, time:6ms rate:71.50kB/s
684
685    C:\Users\issusser>
686    ```
687
688  - 打开data.csv查看采集数据
689
690    在自定义导出路径里找到data.csv文件打开查看采集数据表,data.csv数据名描述如下:
691
692    | 数据项    | 说明             |备注|
693    | :-----| :--------------------- |:-----|
694    | cpuFrequency      | CPU大中小核频率        |单位:Hz|
695    | cpuUasge          | CPU各核使用率          |%|
696    | cpuidleUsage      | CPU空闲态使用率        |%|
697    | cpuioWaitUsage    | 等待I/O的使用率        |%|
698    | cpuirqUsage       | 硬中断的使用率         |%|
699    | cpuniceUsage      | 低优先级用户态使用率    |%|
700    | cpusoftIrqUsage   | 软中断的使用率         |%|
701    | cpusystemUsage    | 系统/内核态使用率      |%|
702    | cpuuserUsage      | 用户态使用率           |%|
703    | ProcId            | 进程id                |-|
704    | ProcAppName       | app包名                |-|
705    | ProcCpuLoad       | 进程CPU负载占比        |%|
706    | ProcCpuUsage      | 进程CPU使用率          |%|
707    | ProcUCpuUsage     | 进程用户态CPU使用率     |%|
708    | ProcSCpuUsage     | 进程内核态CPU使用率     |%|
709    | gpuFrequ          | 整机GPU的频率          |%|
710    | gpuLoad           | 整机GPU的负载占比      |%|
711    | currentNow        | 当前读到的电流值       |单位:mA|
712    | voltageNow        | 当前读到的电压值       |单位:μV|
713    | fps               | 每秒帧数              |单位:fps|
714    | fpsJitters        | 每一帧绘制间隔        |单位:ns|
715    | refreshrate       | 屏幕刷新率            |单位:Hz|
716    | networkDown       | 下行速率              |单位:byte/s|
717    | networkUp         | 上行速率              |单位:byte/s|
718    | ddrFrequency      | DDR频率               |单位:Hz|
719    | gpu-thermal       | GPU温度              |单位:°C|
720    | soc-thermal       | 系统芯片温度          |单位:°C|
721    | memAvailable      | 整机可用内存         |单位:KB|
722    | memFree           | 整机空闲内存         |单位:KB|
723    | memTotal          | 整机总内存           |单位:KB|
724    | pss               | 进程实际使用内存      |单位:KB|
725    | sharedClean       | 共享的未改写页面      |单位:KB|
726    | sharedDirty       | 共享的已改写页面      |单位:KB|
727    | priviateClean     | 私有的未改写页面      |单位:KB|
728    | privateDirty      | 私有的已改写页面      |单位:KB|
729    | swapTotal         | 总的交换内存          |单位:KB|
730    | swapPss           | 交换的pss内存        |单位:KB|
731    | HeapSize          | 堆内存大小           |单位:KB|
732    | HeapAlloc         | 可分配的堆内存大小    |单位:KB|
733    | HeapFree          | 剩余的堆内存大小      |单位:KB|
734    | gpuPss            | 使用的gpu内存大小     |单位:KB|
735    | graphicPss        | 使用的图形内存大小     |单位:KB|
736    | arktsHeapPss      | 使用的arkts内存大小    |单位:KB|
737    | nativeHeapPss     | 使用的native内存大小   |单位:KB|
738    | stackPss          | 使用的栈内存大小       |单位:KB|
739    | timeStamp         | 当前时间戳            |对应采集时间|
740    <!--RP6--><!--RP6End-->
741
742### 场景化采集
743
744<!--RP7-->
745
746除基本采集外,还支持采集响应和完成时延等内容。场景化采集结果不写入data.csv,采集结果直接在命令框显示。
747
748| 命令参数   |必选| 说明                   |
749| :-----|:-----| :--------------------- |
750| -editor|是|    场景化采集标识,后可添加参数配置项         |
751| -responseTime|否|    响应时延         |
752| -completeTime|否|    完成时延         |
753| -fpsohtest|否|    validator用于获取fps,1秒采集一次,默认采集10次       |
754
755#### 使用示例
756
757- 应用响应时延
758
759  ```
760   # SP_daemon -editor responseTime com.ohos.settings ohtest
761   time:544ms
762
763   command exec finished!
764  ```
765  >**说明**
766  >
767  >- 采集前先进入应用内,在命令框回车后切换至应用内页面,等待打印采集结果。
768
769- 应用完成时延
770
771  ```
772   # SP_daemon -editor completeTime com.ohos.settings ontest
773   time:677ms
774
775   command exec finished!
776  ```
777  >**说明**
778  >
779  >- 采集前先进入应用内,在命令框回车后切换至应用内页面,等待打印采集结果。
780
781- validator获取应用页面帧率
782
783  ```
784   # SP_daemon -editor fpsohtest
785   set num:10 successfps:0|1726909713442fps:97|1726909714442fps:113|1726909715442fps:116|1726909716442fps:116|1726909717442fps:118|1726909718442fps:114|1726909719442fps:114|1726909720442fps:115|1726909721442fps:118|1726909722442SP_daemon exec finished!
786  ```
787  >**说明**
788  >
789  >- 执行命令后需滑动或切换当前页面,等待10s后打印采集结果。
790
791<!--RP7End-->
792
793### 其他采集
794
795当前设备电量采集结果可写入csv文件,其它命令需单独采集,采集结果不写入data.csv,仅在命令框显示。
796
797| 命令参数   |必选| 说明                   |
798| :-----|:-----| :--------------------- |
799| -screen |否| 采集屏幕分辨率和刷新率               |
800| -deviceinfo|否| 获取设备信息              |
801| -server|否|    启停采集用来拉起daemon进程           |
802| -clear|否|    清除所有SP_daemon进程           |
803| -ohtestfps|否|    validator用于获取fps,可设置采集次数(1秒采集一次)          |
804| -editorServer|否|    editor工具用来拉起daemon进程         |
805| -recordcapacity|否|    获取当前设备电量         |
806| -profilerfps |否| 采集当前界面fps          |
807
808#### 使用示例
809
810- 获取屏幕分辨率
811
812  ```
813   # SP_daemon -screen
814   activeMode: 1260x2720, refreshrate=120
815   command exec finished!
816   #
817  ```
818  >**说明**
819  >
820  >- activeMode表示当前屏幕分辨率,refreshrate表示屏幕刷新率。
821
822- 获取设备信息
823
824  ```
825   # SP_daemon -deviceinfo
826   abilist: default
827   activeMode: 720x1280
828   board: hw
829   brand: default
830   cpu_c1_cluster: 0 1 2 3
831   cpu_c1_max: 1992000
832   cpu_c1_min: 408000
833   cpu_cluster_name: policy0
834   deviceTypeName: rk3568
835   fullname: OpenHarmony-5.0.2.43
836   gpu_max_freq: 800000000
837   gpu_min_freq: 200000000
838   model: ohos
839   name: OpenHarmony 3.2
840   sn: 7001005458323933328a26dbb7bd3900
841   version: OpenHarmony 5.0.2.43
842
843   command exec finished!
844   #
845  ```
846
847- 启动一个进程来监听start和stop命令的socket消息。
848
849  ```
850   # SP_daemon -server
851   #
852   # pidof SP_daemon
853   7024
854   #
855
856   command exec finished!
857   #
858  ```
859  >**说明**
860  >
861  >- 可执行pidof SP_daemon查看进程id。
862
863- 清除SP_daemon进程ID
864
865  ```
866   # pidof SP_daemon
867   9923 11402
868   # SP_daemon -clear
869   #
870   # pidof SP_daemon
871   #
872
873   command exec finished!
874   #
875  ```
876  >**说明**
877  >
878  >- 可执行pidof SP_daemon查看进程id。
879
880- validator用于获取当前页面帧率
881
882  ```
883   # SP_daemon -ohtestfps 10
884   set num:10 success
885   fps:1|1501926684532
886   fps:18|1501926685532
887   fps:37|1501926686532
888   fps:41|1501926687532
889   fps:42|1501926688532
890   fps:16|1501926689532
891   fps:40|1501926690532
892   fps:40|1501926691532
893   fps:42|1501926692532
894   fps:41|1501926693532
895   SP_daemon exec finished!
896   #
897
898   command exec finished!
899   #
900  ```
901  >**说明**
902  >
903  >- 该条命令里的10表示采集的次数(一秒采集一次),可以设置为其他正整数。
904
905
906- 启动一个进程来监听editor工具的socket消息
907
908  ```
909   # SP_daemon -editorServer
910   Socket Process called!
911   Socket TCP Init called!
912   Socket Process called!
913   Socket Process called!
914915  ```
916
917
918- 获取电池电量
919
920  ```
921   # SP_daemon -recordcapacity
922   recordTime: 1726903063
923   recordPower: 5502
924  ```
925  >**说明**
926  >
927  >- recordTime表示时间戳,recordPower表示当前时刻的电量。
928  >
929  >- 该命令需单独采集,采集结果写入/data/local/tmp/powerLeftRecord.csv,可以使用hdc file recv导出到本地。具体请参考[查看csv采集结果](#查看csv采集结果)。
930
931- 采集当前界面fps
932
933  ```
934    # SP_daemon -profilerfps 10
935    set num:10 success
936    fps:0|1711692357278
937    fps:0|1711692358278
938    fps:1|1711692359278
939    fps:0|1711692360278
940    fps:0|1711692361278
941    fps:0|1711692362278
942    fps:0|1711692363278
943    fps:0|1711692364278
944    fps:26|1711692365278
945    fps:53|1711692366278
946    SP_daemon exec finished!
947    #
948  ```
949  >**说明**
950  >
951  >- 该条命令里的100表示采集的次数(一秒采集一次),可以设置为其他正整数。
952
953- fps分段采集
954
955  ```
956    # SP_daemon -profilerfps 100 -sections 10
957    set num:100 success
958    fps:0|1711692393278
959    fps:0|1711692394278
960    fps:0|1711692395278
961    fps:44|1711692396278
962    sectionsFps:0|1711692396278
963    sectionsFps:0|1711692396378
964    sectionsFps:40|1711692396478
965    sectionsFps:60|1711692396578
966    sectionsFps:60|1711692396678
967    sectionsFps:60|1711692396778
968    sectionsFps:60|1711692396878
969    sectionsFps:40|1711692396978
970    sectionsFps:60|1711692397078
971    sectionsFps:60|1711692397178
972    fps:51|1711692397278
973
974    ...
975
976    SP_daemon exec finished!
977    #
978  ```
979  >**说明**
980  >
981  >- 该条命令里的100表示采集的次数(一秒采集一次),可以设置为其他正整数,10表示分段:目前支持设置 1-10(正整数)段采集。