Запуск приложения с различными объемами памяти с помощью команды rmss

В режиме драйвера команда rmss вызывает указанное приложение несколько раз, каждый раз изменяя объем памяти, и собирает информацию о производительности приложения.

Для вызова команды rmss в качестве драйвера укажите флаги -s, -f, -d, -n и -o rmss. Ниже описан формат вызова для запуска команды rmss в этом режиме:
rmss [ -s начальный-размер-памяти ] [ -f итоговый-размер-памяти ] [ -d приращение ]
     [ -n число-итераций ] [ -o файл-вывода ] команда

Ниже приведено описание флагов команды. Флаги -s, -f и -d задают диапазон объемов памяти.

-n
Сколько раз характеристики должны измеряться при каждом значении объема памяти.
-o
Файл, в который записывается отчет команды rmss. Вместо команды нужно указать приложение, характеристики которого нужно измерить в системе с различными объемами памяти.
-s
Начальный объем памяти.
-f
Итоговый объем памяти.
-d
Шаг приращения.
Все значения указываются в мегабайтах в виде целых числе или десятичных дробей. Например, если характеристики программы нужно измерить в системе с объемом памяти 256, 224, 192, 160 и 128 МБ, то укажите следующие флаги:
-s 256 -f 128 -d 32
Если характеристики программы нужно измерить в системе с объемом памяти 128, 160, 192, 224 и 256 МБ, то укажите следующие флаги:
-s 128 -f 256 -d 32

Если флаг -s не указан, то в качестве начального объема памяти команда rmss применяет фактический объем оперативной памяти компьютера. Если не задан флаг -f, то команда rmss выполняет последнее измерение в системе с объемом памяти 8 МБ. Если не указан флаг -d, то объем памяти каждый раз изменяется на 8 МБ.

Какие значения следует указать с флагами -s, -f и -d? Самый простой критерий выбора значений заключается в том, чтобы заданный диапазон включал в себя объем памяти тех систем, в которых планируется выполнять приложение. Однако если приращение будет составлять меньше 8 МБ, то вы сможете узнать, сколько памяти остается у системы в запасе при выполнении приложения в системе со стандартным объемом памяти. Например, если при выполнении приложения в системе с объемом памяти 120 МБ возникает перегрузка памяти, а в системе с объемом памяти 128 МБ операции подкачки не выполняются, то важно знать, при каком объеме памяти начинается перегрузка. Если перегрузка начинается при объеме памяти 127 МБ, то рекомендуется запускать приложение в системах с объемом памяти больше 128 МБ, либо изменить приложение таким образом, чтобы для его выполнения требовалось меньше памяти. Если же перегрузка начинается при объеме памяти 121 МБ, то 128 МБ оперативной памяти вполне достаточно для работы приложения.

Флаг -n указывает, сколько раз характеристики программы должны измеряться при каждом значении объема памяти. После того как приложение будет выполнено указанное число раз, команда rmss выдаст статистическую информацию о средней скорости выполнения приложения в системе с данным объемом памяти. Для того чтобы при каждом объеме памяти команда выполнялась трижды, укажите:
-n 3
Если флаг -n не задан, то во время инициализации команда rmss определяет, сколько раз нужно выполнить приложение, чтобы общее время выполнения составило 10 секунд. Такая оценка гарантирует, что на информацию о производительности быстро выполняющегося приложения, собираемую командой rmss, не оказывает значительного влияния работа других программ, например, демонов.
Прим.: Если программа выполняется за очень незначительное время, то для того чтобы истратить 10 секунд процессорного времени на выполнение программы, ее придется запустить большое число раз. Поскольку команда rmss подготавливает очередной запуск программы как минимум 2 секунды, она может выполняться очень долго. В связи с этим для таких программ рекомендуется явно задавать число итераций с флагом -n.

Какое значение нужно задать с флагом -n? Если время выполнения приложения составляет больше 10 секунд, укажите -n 1. В этом случае команда будет выполняться дважды, однако при каждом объеме памяти измерение будет выполняться только один раз. Флаг -n позволяет сократить время выполнения команды rmss за счет того, что во время инициализации ей не придется определять, сколько раз нужно запускать программу. Это особенно важно при тестировании долго работающих и интерактивных приложений.

Обратите внимание, что перед выполнением измерений для очередного объема памяти команда rmss делает пробный запуск программы. "Разогрев" позволяет устранить операции ввода/вывода, связанные с загрузкой приложения в оперативную память. Хотя такие операции влияют на производительность, это влияние не обязательно связано с нехваткой оперативной памяти. Пробный запуск не учитывается в числе итераций, заданном с флагом -n.

Флаг -o позволяет задать файл, в который будет записан отчет команды rmss. Если флаг -o не задан, то отчет записывается в файл rmss.out.

В параметре команда необходимо указать приложение, характеристики которого нужно измерить. Можно указать любую исполняемую программу или сценарий оболочки, в том числе с аргументами. Есть определенные ограничения на формат команды. В частности, в ней не должен перенаправляться поток ввода или вывода (то есть команды в формате foo > output и foo < input недопустимы). Это связано с тем, что команда rmss рассматривает все значения справа от имени программы, как аргументы этой программы. Для того чтобы перенаправить поток ввода или вывода, напишите сценарий оболочки.

Для того чтобы сохранить вывод команды rmss в файле, укажите опцию -o. Если вы хотите перенаправить стандартный поток вывода команды rmss (например, добавить вывод в конец существующего файла), то вызовите команду rmss в оболочке Korn, заключив ее в скобки:
# (rmss -s 24 -f 8 foo) >> output