Загрузка теста под Linux (память, общее время,% процессора) - PullRequest
0 голосов
/ 01 февраля 2012

Мне нужно выполнить нагрузочный тест под Red Hat Linux 6.2 с использованием стандартного программного обеспечения, то есть я не могу ничего там установить.Он предназначен для учета общего времени, общего использования памяти и% процессора для 1000, 10000, 100000 и 1000000 итераций.

Программное обеспечение, которое я должен протестировать, состоит из производителя и потребителя.Оба запускаются как независимые процессы.Моя идея состояла в том, чтобы использовать команду top linux в пакетном режиме.

Для этого я написал два bash-скрипта:

#!/bin/bash
# $1 of repetitions

echo $$
java -jar jms-test-tool-0.0.1-SNAPSHOT.jar -S -N$1 -F./IN -Ddummy > ./input.log

java -jar jms-test-tool-0.0.1-SNAPSHOT.jar -C -N$1 -F./OUT -Ddummy > ./output.log

Самое первое, что делает этот скрипт, это отправляет на стандартный вывод свой собственный pid (echo $$),Этот сценарий получает в качестве параметра количество итератов ($ 1), которое используется в качестве параметра для процесса Java (-N $ 1).Первый вызов Java отправит файл $ 1 раз во второй процесс, а второй процесс прочитает файлы $ 1 раз.

Второй сценарий (master.sh) имеет цикл for с необходимыми шагами (1000 10000 100000).и 1000000) вызов на каждой итерации подчиненного и получение pid подчиненного.

master.sh
#!/bin/bash
for steps in 1000 10000 100000 1000000
do
  pid=`./slave.sh $steps `

  echo "Slave pid is : $pid"
  top -b -p$pid      
done

Использование top Я хотел получить память, время и%процессор используется, но pid ведомого не отображается в таблице процессов.

Тогда два вопроса.Что я здесь не так делаю?Кто-нибудь знает лучший способ для выполнения этого теста?

1 Ответ

1 голос
/ 01 февраля 2012

Прежде всего, "pid = prog" выдаст вам вывод prog в pid только после того, как prog завершит работу.

Вы хотите сделать что-то вроде "prog & pid = $!"чтобы получить pid процесса, запущенного в фоновом режиме.Затем вы можете делать все, что захотите, чтобы проанализировать этот процесс, и если вы хотите сделать паузу до завершения процесса, используйте «wait $ pid».

...