Мне нужно выполнить нагрузочный тест под 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 ведомого не отображается в таблице процессов.
Тогда два вопроса.Что я здесь не так делаю?Кто-нибудь знает лучший способ для выполнения этого теста?