• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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=1501839064260
184    order:1 TotalcpuUsage=0.502513
185    order:2 TotalcpuidleUsage=99.497487
186    order:3 TotalcpuioWaitUsage=0.000000
187    order:4 TotalcpuirqUsage=0.000000
188    order:5 TotalcpuniceUsage=0.000000
189    order:6 TotalcpusoftIrqUsage=0.000000
190    order:7 TotalcpusystemUsage=0.251256
191    order:8 TotalcpuuserUsage=0.251256
192    order:9 cpu0Frequency=1992000
193    order:10 cpu0Usage=1.000000
194    order:11 cpu0idleUsage=99.000000
195    order:12 cpu0ioWaitUsage=0.000000
196    order:13 cpu0irqUsage=0.000000
197    order:14 cpu0niceUsage=0.000000
198    order:15 cpu0softIrqUsage=0.000000
199    order:16 cpu0systemUsage=0.000000
200    order:17 cpu0userUsage=1.000000
201    order:18 cpu1Frequency=1992000
202    order:19 cpu1Usage=0.000000
203    order:20 cpu1idleUsage=100.000000
204    order:21 cpu1ioWaitUsage=0.000000
205    order:22 cpu1irqUsage=0.000000
206    order:23 cpu1niceUsage=0.000000
207    order:24 cpu1softIrqUsage=0.000000
208    order:25 cpu1systemUsage=0.000000
209    order:26 cpu1userUsage=0.000000
210    order:27 cpu2Frequency=1992000
211    order:28 cpu2Usage=1.000000
212    order:29 cpu2idleUsage=99.000000
213    order:30 cpu2ioWaitUsage=0.000000
214    order:31 cpu2irqUsage=0.000000
215    order:32 cpu2niceUsage=0.000000
216    order:33 cpu2softIrqUsage=0.000000
217    order:34 cpu2systemUsage=1.000000
218    order:35 cpu2userUsage=0.000000
219    order:36 cpu3Frequency=1992000
220    order:37 cpu3Usage=0.000000
221    order:38 cpu3idleUsage=100.000000
222    order:39 cpu3ioWaitUsage=0.000000
223    order:40 cpu3irqUsage=0.000000
224    order:41 cpu3niceUsage=0.000000
225    order:42 cpu3softIrqUsage=0.000000
226    order:43 cpu3systemUsage=0.000000
227    order:44 cpu3userUsage=0.000000
228
229    ...
230
231    command exec finished!
232    #
233  ```
234
235- 采集2次整机CPU大中小核频率、各核使用率以及进程CPU使用率、负载
236
237  ```
238    # SP_daemon -N 2 -PKG ohos.samples.ecg -c
239
240
241
242    order:0 timestamp=1501839151499
243    order:1 ProcAppName=ohos.samples.ecg
244    order:2 ProcCpuLoad=0.000000
245    order:3 ProcCpuUsage=36.177645
246    order:4 ProcId=2111
247    order:5 ProcSCpuUsage=8.982036
248    order:6 ProcUCpuUsage=27.195609
249    order:7 TotalcpuUsage=62.500000
250    order:8 TotalcpuidleUsage=37.500000
251    order:9 TotalcpuioWaitUsage=0.000000
252    order:10 TotalcpuirqUsage=0.000000
253    order:11 TotalcpuniceUsage=0.000000
254    order:12 TotalcpusoftIrqUsage=0.000000
255    order:13 TotalcpusystemUsage=21.614583
256    order:14 TotalcpuuserUsage=40.885417
257    order:15 cpu0Frequency=1992000
258    order:16 cpu0Usage=77.083333
259    order:17 cpu0idleUsage=22.916667
260    order:18 cpu0ioWaitUsage=0.000000
261    order:19 cpu0irqUsage=0.000000
262    order:20 cpu0niceUsage=0.000000
263    order:21 cpu0softIrqUsage=0.000000
264    order:22 cpu0systemUsage=21.875000
265    order:23 cpu0userUsage=55.208333
266    order:24 cpu1Frequency=1992000
267    order:25 cpu1Usage=57.731959
268    order:26 cpu1idleUsage=42.268041
269    order:27 cpu1ioWaitUsage=0.000000
270    order:28 cpu1irqUsage=0.000000
271    order:29 cpu1niceUsage=0.000000
272    order:30 cpu1softIrqUsage=0.000000
273    order:31 cpu1systemUsage=21.649485
274    order:32 cpu1userUsage=36.082474
275    order:33 cpu2Frequency=1992000
276    order:34 cpu2Usage=59.793814
277    order:35 cpu2idleUsage=40.206186
278    order:36 cpu2ioWaitUsage=0.000000
279    order:37 cpu2irqUsage=0.000000
280    order:38 cpu2niceUsage=0.000000
281    order:39 cpu2softIrqUsage=0.000000
282    order:40 cpu2systemUsage=19.587629
283    order:41 cpu2userUsage=40.206186
284    order:42 cpu3Frequency=1992000
285    order:43 cpu3Usage=55.789474
286    order:44 cpu3idleUsage=44.210526
287    order:45 cpu3ioWaitUsage=0.000000
288    order:46 cpu3irqUsage=0.000000
289    order:47 cpu3niceUsage=0.000000
290    order:48 cpu3softIrqUsage=0.000000
291    order:49 cpu3systemUsage=23.157895
292    order:50 cpu3userUsage=32.631579
293
294    ...
295
296    command exec finished!
297    #
298  ```
299
300  >**说明**
301  >
302  >- 使用该命令采集时需进入被测应用内。
303
304- 采集1次整机GPU频率和负载
305
306  ```
307    # SP_daemon -N 1 -g
308
309
310
311    order:0 timestamp=1503078740268
312    order:1 gpuFrequency=200000000
313    order:2 gpuLoad=38.000000
314
315    command exec finished!
316    #
317  ```
318
319- 采集2次整机温度
320
321  ```
322    # SP_daemon -N 2 -t
323
324    order:0 timestamp=1502720711191
325    order:1 gpu-thermal=42500.000000
326    order:2 soc-thermal=43.125000
327
328
329    order:0 timestamp=1502720712191
330    order:1 gpu-thermal=41875.000000
331    order:2 soc-thermal=42.500000
332
333    command exec finished!
334    #
335  ```
336
337- 采集2次整机内存
338
339  ```
340    # SP_daemon -N 2 -r
341    order:0 timestamp=1705041562521
342    order:1 memAvailable=7339224
343    order:2 memFree=7164708
344    order:3 memTotal=11641840
345
346    order:0 timestamp=1705041563527
347    order:1 memAvailable=7339136
348    order:2 memFree=7164684
349    order:3 memTotal=11641840
350
351    command exec finished!
352    #
353  ```
354
355- 采集1次整机和指定应用进程内存
356
357  ```
358    # SP_daemon -N 1 -PKG ohos.samples.ecg -r
359
360    order:0 timestamp=1720427095197
361    order:1 arktsHeapPss=17555
362    order:2 gpuPss=7021
363    order:3 graphicPss=163320
364    order:4 heapAlloc=120344
365    order:5 heapFree=14362
366    order:6 heapSize=133436
367    order:7 memAvailable=2757504
368    order:8 memFree=190852
369    order:9 memTotal=11742716
370    order:10 nativeHeapPss=49102
371    order:11 privateClean=1100020
372    order:12 privateDirty=175169
373    order:13 pss=422172
374    order:14 sharedClean=89348
375    order:15 sharedDirty=19084
376    order:16 stackPss=1588
377    order:17 swap=122076
378    order:18 swapPss=122076
379
380
381    command exec finished!
382    #
383  ```
384  >**说明**
385  >
386  >- 使用该命令采集时需进入被测应用内。
387  >- 该命令集成了历史版本-m的数据(arktsHeapPss、gpuPss、graphicPss...)。
388
389- 采集2次截图
390
391  ```
392    # SP_daemon -N 2 -snapshot
393
394    order:0 timestamp=1501837609657
395    order:1 capture=data/local/tmp/capture/screenCap_1501837609657.png
396
397
398    order:0 timestamp=1501837610657
399    order:1 capture=NA
400
401    command exec finished!
402    #
403  ```
404  >**说明**
405  >
406  >- 截图采集是2秒截取一次。
407  >
408  >- 截图报告存放路径为:data/local/tmp/capture409  >
410  >- 采集结束后:进入 data/local/tmp/capture 查看生成的截图。
411  >
412  >- 导出截图到D盘:重启一个命令行工具执行命令: hdc file recv data/local/tmp/capture/screenCap_1700725192774.png D:\。
413
414- 采集2次网络速率
415
416  ```
417    # SP_daemon -N 2 -net
418
419    order:0 timestamp=1705041904832
420    order:1 networkDown=0
421    order:2 networkUp=0
422
423    order:0 timestamp=1705041905870
424    order:1 networkDown=22931
425    order:2 networkUp=2004
426
427    command exec finished!
428    #
429  ```
430
431- 采集5次指定应用帧率
432
433  ```
434    # SP_daemon -N 5 -PKG ohos.samples.ecg -f
435
436    order:0 timestamp=1705306472232
437    order:1 fps=43
438    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
439    order:3 refreshrate=69
440
441    order:0 timestamp=1705306473234
442    order:1 fps=40
443    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
444    order:3 refreshrate=69
445    ...
446
447    command exec finished!
448    #
449  ```
450  >**说明**
451  >
452  >- 使用该命令采集时需进入被测应用内,滑动或切换页面。
453  >- 在智能刷新率情况下,刷新率是实时变化的(一秒内可能存在多次变化),refreshrate取值是采集时刻(timestamp)的刷新率。
454
455
456- 采集10次指定图层帧率
457
458  ```
459    # SP_daemon -N 10 -VIEW DisplayNode -f
460    order:0 timestamp=1705306822850
461    order:1 fps=15
462    order:2 fpsJitters=876291843;;8314062;;8308334;;8314583;;8310417;;8308333;;8326042;;8314583;;8292708;;8492709;;8143750;;8340104;;8294271;;8302604;;8297396
463    order:3 refreshrate=69
464
465    order:0 timestamp=1705306823852
466    order:1 fps=12
467    order:2 fpsJitters=906667363;;8279167;;8311458;;8315625;;8291146;;8313021;;8323438;;8293750;;8303125;;8313541;;8301563;;8317708
468    order:3 refreshrate=69
469    ...
470
471    command exec finished!
472    #
473  ```
474  >**说明**
475  >
476  >- DisplayNode 是指定的图层名。
477  >
478  >- 使用该命令采集时,需在传入的图层上操作页面。
479  >
480  >- 该命令不能与指定应用帧率一起采集(SP_daemon -N 20 -PKG ohos.samples.ecg -f 或 SP_daemon -N 20 -VIEW DisplayNode -f)。
481
482- 采集1次DDR信息
483
484  ```
485    # SP_daemon -N 1 -d
486
487    order:0 timestamp=1710916175201
488    order:1 ddrFrequency=1531000000
489
490    command exec finished!
491    #
492  ```
493<!--RP4--><!--RP4End-->
494
495- 全量采集示例1,采集整机信息,包括cpu、gpu、温度、内存信息、DDR信息、网络速率、屏幕截图
496
497  ```
498    # SP_daemon -N 10 -c -g -t -r -d -net -snapshot
499
500    order:0 timestamp=1501837838664
501    order:1 TotalcpuUsage=0.751880
502    order:2 TotalcpuidleUsage=99.248120
503    order:3 TotalcpuioWaitUsage=0.000000
504    order:4 TotalcpuirqUsage=0.000000
505    order:5 TotalcpuniceUsage=0.000000
506    order:6 TotalcpusoftIrqUsage=0.000000
507    order:7 TotalcpusystemUsage=0.501253
508    order:8 TotalcpuuserUsage=0.250627
509    order:9 cpu0Frequency=1992000
510    order:10 cpu0Usage=0.000000
511    order:11 cpu0idleUsage=100.000000
512    order:12 cpu0ioWaitUsage=0.000000
513    order:13 cpu0irqUsage=0.000000
514    order:14 cpu0niceUsage=0.000000
515    order:15 cpu0softIrqUsage=0.000000
516    order:16 cpu0systemUsage=0.000000
517    order:17 cpu0userUsage=0.000000
518    order:18 cpu1Frequency=1992000
519    order:19 cpu1Usage=0.000000
520    order:20 cpu1idleUsage=100.000000
521    order:21 cpu1ioWaitUsage=0.000000
522    order:22 cpu1irqUsage=0.000000
523    order:23 cpu1niceUsage=0.000000
524    order:24 cpu1softIrqUsage=0.000000
525    order:25 cpu1systemUsage=0.000000
526    order:26 cpu1userUsage=0.000000
527    order:27 cpu2Frequency=1992000
528    order:28 cpu2Usage=1.000000
529    order:29 cpu2idleUsage=99.000000
530    order:30 cpu2ioWaitUsage=0.000000
531    order:31 cpu2irqUsage=0.000000
532    order:32 cpu2niceUsage=0.000000
533    order:33 cpu2softIrqUsage=0.000000
534    order:34 cpu2systemUsage=1.000000
535    order:35 cpu2userUsage=0.000000
536    order:36 cpu3Frequency=1992000
537    order:37 cpu3Usage=0.000000
538    order:38 cpu3idleUsage=100.000000
539    order:39 cpu3ioWaitUsage=0.000000
540    order:40 cpu3irqUsage=0.000000
541    order:41 cpu3niceUsage=0.000000
542    order:42 cpu3softIrqUsage=0.000000
543    order:43 cpu3systemUsage=0.000000
544    order:44 cpu3userUsage=0.000000
545    order:45 gpuFrequency=200000000
546    order:46 gpuLoad=0.000000
547    order:47 gpu-thermal=40000.000000
548    order:48 soc-thermal=40.625000
549    order:49 memAvailable=1142820
550    order:50 memFree=687988
551    order:51 memTotal=1935948
552    order:52 ddrFrequency=800000000
553    order:53 networkDown=0
554    order:54 networkUp=0
555    order:55 capture=data/local/tmp/capture/screenCap_1501837838669.png
556
557    ...
558
559    command exec finished!
560    #
561  ```
562
563- 全量采集示例2,采集指定应用信息,包括cpu、gpu、温度、fps、内存信息、DDR信息、网络速率、屏幕截图
564
565  <!--RP5-->
566  ```
567    # SP_daemon -N 10 -PKG ohos.samples.ecg -c -g -t -f -r -d -net -snapshot
568
569    order:0 timestamp=1501837949706
570    order:1 ProcAppName=ohos.samples.ecg
571    order:2 ProcCpuLoad=0.000000
572    order:3 ProcCpuUsage=38.775000
573    order:4 ProcId=1960
574    order:5 ProcSCpuUsage=8.875000
575    order:6 ProcUCpuUsage=29.900000
576    order:7 TotalcpuUsage=85.416667
577    order:8 TotalcpuidleUsage=14.583333
578    order:9 TotalcpuioWaitUsage=0.000000
579    order:10 TotalcpuirqUsage=0.000000
580    order:11 TotalcpuniceUsage=0.000000
581    order:12 TotalcpusoftIrqUsage=0.000000
582    order:13 TotalcpusystemUsage=33.072917
583    order:14 TotalcpuuserUsage=52.343750
584    order:15 cpu0Frequency=1992000
585    order:16 cpu0Usage=92.929293
586    order:17 cpu0idleUsage=7.070707
587    order:18 cpu0ioWaitUsage=0.000000
588    order:19 cpu0irqUsage=0.000000
589    order:20 cpu0niceUsage=0.000000
590    order:21 cpu0softIrqUsage=0.000000
591    order:22 cpu0systemUsage=40.404040
592    order:23 cpu0userUsage=52.525253
593    order:24 cpu1Frequency=1992000
594    order:25 cpu1Usage=82.291667
595    order:26 cpu1idleUsage=17.708333
596    order:27 cpu1ioWaitUsage=0.000000
597    order:28 cpu1irqUsage=0.000000
598    order:29 cpu1niceUsage=0.000000
599    order:30 cpu1softIrqUsage=0.000000
600    order:31 cpu1systemUsage=29.166667
601    order:32 cpu1userUsage=53.125000
602    order:33 cpu2Frequency=1992000
603    order:34 cpu2Usage=81.111111
604    order:35 cpu2idleUsage=18.888889
605    order:36 cpu2ioWaitUsage=0.000000
606    order:37 cpu2irqUsage=0.000000
607    order:38 cpu2niceUsage=0.000000
608    order:39 cpu2softIrqUsage=0.000000
609    order:40 cpu2systemUsage=31.111111
610    order:41 cpu2userUsage=50.000000
611    order:42 cpu3Frequency=1992000
612    order:43 cpu3Usage=85.858586
613    order:44 cpu3idleUsage=14.141414
614    order:45 cpu3ioWaitUsage=0.000000
615    order:46 cpu3irqUsage=0.000000
616    order:47 cpu3niceUsage=0.000000
617    order:48 cpu3softIrqUsage=0.000000
618    order:49 cpu3systemUsage=32.323232
619    order:50 cpu3userUsage=53.535354
620    order:51 gpuFrequency=200000000
621    order:52 gpuLoad=29.000000
622    order:53 gpu-thermal=41875.000000
623    order:54 soc-thermal=45.000000
624    order:55 fps=40
625    order:56 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
626    order:57 refreshrate=69
627    order:58 arktsHeapPss=10970
628    order:59 gpuPss=0
629    order:60 graphicPss=10800
630    order:61 heapAlloc=0
631    order:62 heapFree=0
632    order:63 heapSize=0
633    order:64 memAvailable=1137784
634    order:65 memFree=682592
635    order:66 memTotal=1935948
636    order:67 nativeHeapPss=21398
637    order:68 privateClean=24816
638    order:69 privateDirty=44932
639    order:70 pss=91587
640    order:71 sharedClean=100512
641    order:72 sharedDirty=36832
642    order:73 stackPss=1444
643    order:74 swap=0
644    order:75 swapPss=0
645    order:76 ddrFrequency=800000000
646    order:77 networkDown=0
647    order:78 networkUp=0
648    order:79 capture=data/local/tmp/capture/screenCap_1501837950216.png
649
650    ...
651
652    command exec finished!
653    #
654  ```
655  <!--RP5End-->
656
657  >**说明**
658  >
659  >- 使用该命令采集时需进入被测应用内。
660
661
662#### 通过-start开启采集
663
664先执行start开始采集命令,然后操作设备或应用,最后执行stop结束采集命令。
665
666| 命令参数   |必选| 说明                   |
667| :-----|:-----| :--------------------- |
668| -start |是| 开始采集,该命令参数后可添加基础采集命令,一秒采集一次。            |
669| -stop |是| 结束采集,执行后会生成采集报告。              |
670
671##### 使用示例
672
673   ```
674   开始采集
675   # SP_daemon -start -c
676   SP_daemon Collection begins
677
678
679   command exec finished!
680   #
681
682   结束采集
683   # SP_daemon -stop
684   SP_daemon Collection ended
685   Output Path: data/local/tmp/smartperf/1/t_index_info.csv
686
687
688   command exec finished!
689   #
690   ```
691   >**说明**
692   >
693   >- 开始采集示例1(采整机):SP_daemon -start -c -g -t -r -d -net -snapshot。
694   >
695   >- 开始采集示例2(采整机和进程):SP_daemon -start -PKG ohos.samples.ecg -c -g -t -f -r -d -net -snapshot。
696   >
697   >- 启停服务文件输出路径为:data/local/tmp/smartperf/1/t_index_info.csv,可通过hdc file recv的方式导出查看报告。具体请参考[查看csv采集结果](#查看csv采集结果)。
698
699#### 查看csv采集结果
700
701若采集结果保存在csv文件中,可以按照如下操作导出和查看结果内容。
702
703  - 采集结果默认输出路径:/data/local/tmp/data.csv
704
705  - 查看文件位置
706
707    ```
708    C:\Users\issusser>hdc shell
709    # cd data/local/tmp
710    # ls
711    data.csv
712    #
713    ```
714
715  - 导出文件
716    ```
717    C:\Users\issusser>hdc file recv data/local/tmp/data.csv D:\
718    [I][2023-11-08 16:16:41] HdcFile::TransferSummary success
719    FileTransfer finish, Size:429, File count = 1, time:6ms rate:71.50kB/s
720
721    C:\Users\issusser>
722    ```
723
724  - 打开data.csv查看采集数据
725
726    在自定义导出路径里找到data.csv文件打开查看采集数据表,data.csv数据名描述如下:
727
728    | 数据项    | 说明             |备注|
729    | :-----| :--------------------- |:-----|
730    | cpuFrequency      | CPU大中小核频率。        |单位:Hz|
731    | cpuUasge          | CPU各核使用率。          |%|
732    | cpuidleUsage      | CPU空闲态使用率。        |%|
733    | cpuioWaitUsage    | 等待I/O的使用率。        |%|
734    | cpuirqUsage       | 硬中断的使用率。         |%|
735    | cpuniceUsage      | 低优先级用户态使用率。    |%|
736    | cpusoftIrqUsage   | 软中断的使用率。         |%|
737    | cpusystemUsage    | 系统/内核态使用率。      |%|
738    | cpuuserUsage      | 用户态使用率。           |%|
739    | ProcId            | 进程id。                |-|
740    | ProcAppName       | app包名。                |-|
741    | ProcCpuLoad       | 进程CPU负载占比。        |%|
742    | ProcCpuUsage      | 进程CPU使用率。          |%|
743    | ProcUCpuUsage     | 进程用户态CPU使用率。     |%|
744    | ProcSCpuUsage     | 进程内核态CPU使用率。     |%|
745    | gpuFrequ          | 整机GPU的频率。          |%|
746    | gpuLoad           | 整机GPU的负载占比。      |%|
747    | currentNow        | 当前读到的电流值。       |单位:mA|
748    | voltageNow        | 当前读到的电压值。       |单位:μV|
749    | fps               | 每秒帧数。              |单位:fps|
750    | fpsJitters        | 每一帧绘制间隔。        |单位:ns|
751    | refreshrate       | 屏幕刷新率。            |单位:Hz|
752    | networkDown       | 下行速率。              |单位:byte/s|
753    | networkUp         | 上行速率。              |单位:byte/s|
754    | ddrFrequency      | DDR频率。               |单位:Hz|
755    | gpu-thermal       | GPU温度。              |单位:°C|
756    | soc-thermal       | 系统芯片温度。          |单位:°C|
757    | memAvailable      | 整机可用内存。         |单位:KB|
758    | memFree           | 整机空闲内存。         |单位:KB|
759    | memTotal          | 整机总内存。           |单位:KB|
760    | pss               | 进程实际使用内存。      |单位:KB|
761    | sharedClean       | 共享的未改写页面。      |单位:KB|
762    | sharedDirty       | 共享的已改写页面。      |单位:KB|
763    | priviateClean     | 私有的未改写页面。      |单位:KB|
764    | privateDirty      | 私有的已改写页面。      |单位:KB|
765    | swapTotal         | 总的交换内存。          |单位:KB|
766    | swapPss           | 交换的pss内存。        |单位:KB|
767    | HeapSize          | 堆内存大小。           |单位:KB|
768    | HeapAlloc         | 可分配的堆内存大小。    |单位:KB|
769    | HeapFree          | 剩余的堆内存大小。      |单位:KB|
770    | gpuPss            | 使用的gpu内存大小。     |单位:KB|
771    | graphicPss        | 使用的图形内存大小。     |单位:KB|
772    | arktsHeapPss      | 使用的arkts内存大小。    |单位:KB|
773    | nativeHeapPss     | 使用的native内存大小。   |单位:KB|
774    | stackPss          | 使用的栈内存大小。       |单位:KB|
775    | timeStamp         | 当前时间戳。            |对应采集时间|
776    <!--RP6--><!--RP6End-->
777
778### 场景化采集
779
780<!--RP7-->
781
782除基本采集外,还支持采集响应和完成时延等内容。场景化采集结果不写入data.csv,采集结果直接在命令框显示。
783
784| 命令参数   |必选| 说明                   |
785| :-----|:-----| :--------------------- |
786| -editor|是|    场景化采集标识,后可添加参数配置项。         |
787| -responseTime|否|    响应时延。         |
788| -completeTime|否|    完成时延。         |
789| -fpsohtest|否|    validator用于获取fps,1秒采集一次,默认采集10次。       |
790
791#### 使用示例
792
793- 应用响应时延(命令仅支持RK)
794
795  ```
796   # SP_daemon -editor responseTime ohos.samples.ecg ohtest
797   time:544ms
798
799   command exec finished!
800  ```
801  >**说明**
802  >
803  >- 采集前先进入应用内,在命令框回车后切换至应用内页面,等待打印采集结果。
804
805- 应用完成时延(命令仅支持RK)
806
807  ```
808   # SP_daemon -editor completeTime ohos.samples.ecg ohtest
809   time:677ms
810
811   command exec finished!
812  ```
813  >**说明**
814  >
815  >- 采集前先进入应用内,在命令框回车后切换至应用内页面,等待打印采集结果。
816
817- validator获取应用页面帧率
818
819  ```
820   # SP_daemon -editor fpsohtest
821   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!
822  ```
823  >**说明**
824  >
825  >- 执行命令后需滑动或切换当前页面,等待10s后打印采集结果。
826
827<!--RP7End-->
828
829### 其他采集
830
831当前设备电量采集结果可写入csv文件,其它命令需单独采集,采集结果不写入data.csv,仅在命令框显示。
832
833| 命令参数   |必选| 说明                   |
834| :-----|:-----| :--------------------- |
835| -screen |否| 采集屏幕分辨率和刷新率。               |
836| -deviceinfo|否| 获取设备信息。              |
837| -server|否|    启停采集用来拉起daemon进程。           |
838| -clear|否|    清除所有SP_daemon进程。           |
839| -ohtestfps|否|    validator用于获取fps,可设置采集次数(1秒采集一次)。          |
840| -editorServer|否|    editor工具用来拉起daemon进程。         |
841| -recordcapacity|否|    获取当前设备电量。         |
842| -profilerfps |否| 采集当前界面fps。          |
843
844#### 使用示例
845
846- 获取屏幕分辨率
847
848  ```
849   # SP_daemon -screen
850   activeMode: 720x1280, refreshrate=69
851
852
853   command exec finished!
854   #
855  ```
856  >**说明**
857  >
858  >- activeMode表示当前屏幕分辨率,refreshrate表示屏幕刷新率。
859
860- 获取设备信息
861
862  ```
863   # SP_daemon -deviceinfo
864   abilist: default
865   activeMode: 720x1280
866   board: hw
867   brand: default
868   cpu_c1_cluster: 0 1 2 3
869   cpu_c1_max: 1992000
870   cpu_c1_min: 408000
871   cpu_cluster_name: policy0
872   daemonPerfVersion: 1.0.5
873   deviceTypeName: rk3568
874   fullname: OpenHarmony-5.1.0.46
875   gpu_max_freq: 800000000
876   gpu_min_freq: 200000000
877   model: ohos
878   name: OpenHarmony 3.2
879   sn: 150100424a5444345209d941bec6b900
880   version: OpenHarmony 5.1.0.46
881
882   command exec finished!
883   #
884  ```
885
886- 启动一个进程来监听start和stop命令的socket消息。
887
888  ```
889   # SP_daemon -server
890   #
891   # pidof SP_daemon
892   7024
893   #
894  ```
895  >**说明**
896  >
897  >- 可执行pidof SP_daemon查看进程id。
898
899- 清除SP_daemon进程ID
900
901  ```
902   # pidof SP_daemon
903   2725
904   # SP_daemon -clear
905
906
907   command exec finished!
908   #
909   # pidof SP_daemon
910   #
911  ```
912  >**说明**
913  >
914  >- 可执行pidof SP_daemon查看进程id。
915
916- validator用于获取当前页面帧率
917
918  ```
919   # SP_daemon -ohtestfps 10
920   set num:10 success
921   fps:1|1501926684532
922   fps:18|1501926685532
923   fps:37|1501926686532
924   fps:41|1501926687532
925   fps:42|1501926688532
926   fps:16|1501926689532
927   fps:40|1501926690532
928   fps:40|1501926691532
929   fps:42|1501926692532
930   fps:41|1501926693532
931   SP_daemon exec finished!
932   #
933  ```
934  >**说明**
935  >
936  >- 该条命令里的10表示采集的次数(一秒采集一次),可以设置为其他正整数。
937
938
939- 启动一个进程来监听editor工具的socket消息
940
941  ```
942   # SP_daemon -editorServer
943
944
945   command exec finished!
946  ```
947
948
949- 获取电池电量
950
951  ```
952   # SP_daemon -recordcapacity
953   recordTime: 1726903063
954   recordPower: 5502
955  ```
956  >**说明**
957  >
958  >- recordTime表示时间戳,recordPower表示当前时刻的电量。
959  >
960  >- 该命令需单独采集,采集结果写入/data/local/tmp/powerLeftRecord.csv,可以使用hdc file recv导出到本地。具体请参考[查看csv采集结果](#查看csv采集结果)。
961
962- 采集当前界面fps
963
964  ```
965    # SP_daemon -profilerfps 10
966    set num:10 success
967    fps:0|1711692357278
968    fps:0|1711692358278
969    fps:1|1711692359278
970    fps:0|1711692360278
971    fps:0|1711692361278
972    fps:0|1711692362278
973    fps:0|1711692363278
974    fps:0|1711692364278
975    fps:26|1711692365278
976    fps:53|1711692366278
977    SP_daemon exec finished!
978    #
979  ```
980  >**说明**
981  >
982  >- 该条命令里的100表示采集的次数(一秒采集一次),可以设置为其他正整数。
983
984- fps分段采集
985
986  ```
987    # SP_daemon -profilerfps 100 -sections 10
988    set num:100 success
989    fps:0|1711692393278
990    fps:0|1711692394278
991    fps:0|1711692395278
992    fps:44|1711692396278
993    sectionsFps:0|1711692396278
994    sectionsFps:0|1711692396378
995    sectionsFps:40|1711692396478
996    sectionsFps:60|1711692396578
997    sectionsFps:60|1711692396678
998    sectionsFps:60|1711692396778
999    sectionsFps:60|1711692396878
1000    sectionsFps:40|1711692396978
1001    sectionsFps:60|1711692397078
1002    sectionsFps:60|1711692397178
1003    fps:51|1711692397278
1004
1005    ...
1006
1007    SP_daemon exec finished!
1008    #
1009  ```
1010  >**说明**
1011  >
1012  >- 该条命令里的100表示采集的次数(一秒采集一次),可以设置为其他正整数,10表示分段:目前支持设置 1-10(正整数)段采集。