使用 rmss 命令在一系列内存大小上进行的应用程序执行
作为一个驱动程序,rmss 命令在某一内存大小范围内执行指定的应用程序,并显示在每个内存大小下应用程序的性能统计信息。
rmss [ -s smemsize ] [ -f fmemsize ] [ -d memdelta ]
[ -n numiterations ] [ -o outputfile ] command下面讨论每一个标志的详细信息。 -s、-f 和 -d 标志用于指定内存大小的范围。
- -n
- 该标志用于指定每个内存大小下运行和测量该命令的次数。
- -o
- 该标志用于指定 rmss 的报告写到哪一个文件,当该命令就是您想要在每个存大小下运行和测量的程序。
- -s
- 该标志指定起始容量。
- -f
- 该标志指定最终大小。
- -d
- 该标志指定每次大小变化差值。
-s 256 -f 128 -d 32-s 128 -f 256 -d 32如果省略 -s 标志,那么 rmss 命令以机器的实际内存大小作为起始大小。 如果省略 -f 标志,那么 rmss 命令以 8 MB 作为最终大小。 如果省略 -d 标志,内存大小增量的缺省值是 8 MB。
那您应该为 -s、-f 和 -d 选择哪些值呢? 一种简单的选择是大于运行您要测量的应用程序的系统的内存大小。 然而少于 8 MB 的增量也可能是有用的,因为当您给定一个大小时,您可以获取可以得到的空间量的估计值。 例如,如果一个给定应用程序在 120 MB 处系统颠簸,但 128 MB 处运行没有页面调进,那知道 120 MB 到 128 MB 之间哪里开始系统颠簸的非常重要。 如果从 127 MB 开始的,您可能希望将系统设置为 128 MB 以上的内存,或者您也希望试着去修改应用程序得到更多的内存空间。 另一方面,如果系统是从 121 MB 开始颠簸的,那 128 MB 的内存对您来说足够了。
-n 3将 -n 标志设为多少值比较好呢? 如果您知道应用程序运行要消耗远远超过 10 秒,那么可以指定 -n 1,这样,该命令运行两次,但对每个内存大小只测一次。 使用 -n 标志的好处是 rmss 命令会更快完成,因为它将不必在初始化期间耗费时间来确定要运行程序多少次。 当被测命令是长时间或交互式地执行的时候,这是非常有价值的。
注意到 rmss 命令总是在每一个内存大小下的运行和测量命令之前作为热身运行一次,这是非常重要的。 为了避免应用程序不在内存引起的输入输出,热身是非常重要的。 虽然此类的输入输出影响性能,并不一定是实内存的缺少而引起的。 热身运行中并不包含由 -n 标志指定次数的重复。
-o 标志用于指定 rmss 报告要写到的文件。 如果省略 -o 标志,那么报告会写入 rmss.out 文件。
最后,command 用于指定要被测量的应用程序。 那可以是可执行程序或 shell 脚本,可以带有或省略命令行参数。 然而,在命令的形式上是有一些限制的。 首先,它不能包含输入或输出的重定向 (例如, foo> 输出 或 foo < input)。 这是因为 rmss 已命令将任何命令名作为它的参数。 要重定向,将命令置于一个 shell 脚本文件。
# (rmss -s 24 -f 8 foo) >> output