首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

ksh_timer 时间接口使用

ksh_timer 时间接口使用

使用示例想象一下,如果有下列脚本 script_test_vmm,您可能想要评估 vmm_test2 所用时间,该函数在每次调用 rmss 之后才调用。您可能想要评估每个 rmss 所用的时间。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#! /usr/bin/ksh
integer i=0
rmss -c 950
while [[ $i -lt 3 ]]
  do
  /tmp/ksh_timer/test_vmm2
  i=i+1
  done

rmss -c 1450
i=0
while [[ $i -lt 3 ]]
  do
  /tmp/ksh_timer/test_vmm2
  i=i+1
  done




  • 步骤 1:通过使用适当的 ##KTB 并匹配的 ##KTE,编辑您的 script_test_vmm 脚本和添加用户定义部分,从而划分您的用户定义部分的界限,如下列代码所示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#! /usr/bin/ksh
integer i=0
##KTB rmss950
rmss -c 950
while [[ $i -lt 3 ]]
  do
##KTB vmm_test2
  /tmp/ksh_timer/test_vmm2
  i=i+1
##KTE vmm_test2
  done
##KTE rmss950
##KTB rmss1450
rmss -c 1450
i=0
while [[ $i -lt 3 ]]
  do
##KTB vmm_test2
  /tmp/ksh_timer/test_vmm2
  i=i+1
##KTE vmm_test2
  done
##KTE rmss1450




  • 步骤 2:使用 ksh_timer -s script_test_vmm 运行先前的脚本。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
----------------------Start of script_test_vmm output--------------------------------
Simulated memory size changed to 950 Mb.
Simulated memory size changed to 1450 Mb.
----------------------End of script_test_vmm output--------------------------------
------------------------------------------------------------------------------------------
|    Function   |     Minimum       |     Maximum       | Average    |     Total         |
|               +-------------------+-------------------+------------+-------------------|
|   or Section  |iter.#|   time     |iter.#|   time     |  time      |#iter.|  time      |
|---------------+------+------------+------+------------+------------+------+------------|
|Main           |                                                           |1m36.578814s|
|---------------+------+------------+------+------------+------------+------+------------|
|-rmss950      |     1|1m02.120269s|     1|1m02.120269s|1m02.120269s|     1|1m02.120269s|
|--vmm_test2   |     3|0m16.813174s|     1|0m23.461610s|0m20.654322s|     3|1m01.962968s|
|-rmss1450     |     1|0m34.416279s|     1|0m34.416279s|0m34.416279s|     1|0m34.416279s|
|--vmm_test2   |     2|0m11.382110s|     3|0m11.427596s|0m11.402585s|     3|0m34.207757s|
|---------------+-----------------------------------------------------------+------------|
|-Unaccounted   |                                                           |0m00.042266s|
------------------------------------------------------------------------------------------




作为另一个示例,我们在 mksysb 脚本上运行 ksh_timer。通过编辑 mksysb 脚本,可以添加一个名为 backup_files_in_list 的用户定义部分。在以下输出中我们可以看到,不仅仅对 backup_files_in_list 部分进行计时,而且对在脚本中定义的任何部分都进行了计时。通过查看输出,我们很容易发现,mksysb 脚本所用的最大时间在 backup_files_in_list 中,耗时 1m33.029798s,整个脚本耗时 1m49.140307s
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# ksh_timer -s ./mksysb -i /dev/null
----------------------Start of mksysb output--------------------------------
Creating information file (/image.data) for rootvg.
Creating list of files to back up
Backing up 56510 files........
56510 of 56510 files backed up (100%)0512-038 mksysb: Backup Completed Successfully.
----------------------End of mksysb output--------------------------------
------------------------------------------------------------------------------------------
|    Function   |    Minimum        |    Maximum        |    Average |     Total         |
|               +-------------------+-------------------+------------+-------------------|
|   or Section  |iter.#|  time      |iter.#|  time      |  time      |#iter.|  time      |
|---------------+------+------------+------+------------+------------+------+------------|
|Main           |                                                           |1m49.140307s|
|---------------+------+------------+------+------------+------------+------+------------|
|-set_up_environ|     1|0m00.048720s|     1|0m00.048720s|0m00.048720s|     1|0m00.048720s|
|--fail_if_wpar |     1|0m00.005507s|     1|0m00.005507s|0m00.005507s|     1|0m00.005507s|
|--getoptions   |     1|0m00.012926s|     1|0m00.012926s|0m00.012926s|     1|0m00.012926s|
|-create_temp_di|     1|0m00.007239s|     1|0m00.007239s|0m00.007239s|     1|0m00.007239s|
|-if_rootvg     |     1|0m00.153775s|     1|0m00.153775s|0m00.153775s|     1|0m00.153775s|
|--tddupdate    |     1|0m00.070964s|     1|0m00.070964s|0m00.070964s|     1|0m00.070964s|
|--Get_Rootvg_IS|     1|0m00.042464s|     1|0m00.042464s|0m00.042464s|     1|0m00.042464s|
|--tsddupdate   |     1|0m00.027835s|     1|0m00.027835s|0m00.027835s|     1|0m00.027835s|
|-if_device     |     1|0m00.014855s|     1|0m00.014855s|0m00.014855s|     1|0m00.014855s|
|-if_image_data |     1|0m05.132797s|     1|0m05.132797s|0m05.132797s|     1|0m05.132797s|
|-make_backup_da|     1|0m00.350696s|     1|0m00.350696s|0m00.350696s|     1|0m00.350696s|
|--get_backup_si|     1|0m00.031814s|     1|0m00.031814s|0m00.031814s|     1|0m00.031814s|
|---get_stanza_d|     1|0m00.019862s|     1|0m00.019862s|0m00.019862s|     1|0m00.019862s|
|-run_the_exclud|     1|0m05.697004s|     1|0m05.697004s|0m05.697004s|     1|0m05.697004s|
|-backup_files|     1|1m33.029798s|     1|1m33.029798s|1m33.029798s|     1|1m33.029798s|
|--kill_pid     |     1|0m02.015270s|     2|0m02.020543s|0m02.017906s|     2|0m04.035813s|
|-done_backup   |     1|0m00.016388s|     1|0m00.016388s|0m00.016388s|     1|0m00.016388s|
|--kill_pid     |     1|0m02.015329s|     1|0m02.015329s|0m02.015329s|     1|0m02.015329s|
|---------------------------------------------------------------------------+------------|
|-Unaccounted   |                                                           |0m04.689035s|
------------------------------------------------------------------------------------------




  • 使用第 2 个示例,您也可以轻松地发现是否重复调用了一个函数或某个部分,或者是否有些调用比其他调用更加耗时。例如,在这里您可以看出,setcmdinit_pos_cmds 中调用了 44 次,我们还可以看出,最大时间、最小时间和平均时间基本上都是常量。
返回列表