2

Я пишу скрипт для проверки производительности чтения / записи в сетевом хранилище, но мне нужно немного помочь, чтобы закончить скрипт.

Сценарий прост:

  1. перезагружает монтирование nfs для очистки кэша
  2. написать тестовый файл в NFS
  3. время записи
  4. прочитать тестовый файл от NFS
  5. время записи

Мне осталось решить еще одну проблему: проанализировать вывод команды времени и сохранить ее в текстовом файле.

Команда времени выводит три значения: реальный 0m0.000s пользователь 0m0.000s sys 0m0.000s

Я просто хочу в реальном времени. и один файл для чтения и один файл для записи.

Это то, что я до сих пор:

#!/bin/bash
for i in [`seq 1 20`]; 
echo "remounting autofs"
/etc/init.d/autofs reload;
wait 5;
echo "write test"
#for write perf
do time dd if=/dev/zero of=/home/nfs_perf_testing/samplefile$i bs=1M count=1024 oflag=direct;

echo "write test done";

wait 5;
echo "read test";
#for read perf;
do time dd if=/home/nfs_perf_testing/samplefile of=/dev/null bs=1M count=1024 iflag=direct;

echo "read test done";
done;

Спасибо вам всем

3 ответа3

1

time(1) печатает в stderr, поэтому вам нужно перенаправить его вывод в stdout 2>&1 , затем направить его в grep, чтобы найти строку, которую вы хотите grep real . Затем, наконец, используйте awk, чтобы напечатать нужный вам столбец awk '{ print $2 }' .

Это должно составить вид:

(time command_to_time) 2>&1 | grep real | awk '{ print $2 }'
1

Правильно. Достаточно просто.

wait не делает то, что вы ожидаете. Используйте sleep здесь.

for i in `seq 1 20` 

опустите скобки - они смешивают здесь оболочку.

Кстати, в следующий раз подумайте об использовании iozone или bonnie++. Я знаю, что iozone имеет возможность размонтировать / перемонтировать разделы NFS между тестами. Он также создает данные, которые можно импортировать в EXCEL и создавать красивые трехмерные диаграммы. Он также проверяет различные размеры блоков.

Кроме того, кеширование ОЗУ может стать проблемой. Возможно, вы захотите иметь специальную загрузочную конфигурацию (в grub) для загрузки с таким большим количеством оперативной памяти (например, 1 МБ). См. Https://stackoverflow.com/questions/13484016/setting-limit-to-total-physical-memory-available-in-linux

0

Просто, используя grep:

{ time command >/dev/null; } |& grep real

Это выведет реальное время выполнения "команды"

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .