Я работал над сравнением сценария генерации данных образца, используя обычный параллельный запуск &. Я использую библиотеку GNU 'parallel' для параллельного запуска скрипта. Сценарий генерирует случайные записи в фиксированных столбцах из 100 & различного размера строки. Ниже мой сниппет, который генерирует случайные записи:--parallel = N, не доставляющий требуемые результаты
for i in $(seq $rows)
do
tr -dc A-Za-z0-9 < /dev/urandom | head -c 2000 > tmp
gawk '$1=$1' FIELDWIDTHS='I put here the varying column lengths' OFS=, tmp >> tmp1
done
Вот статистика Я собираемые:
"# of Rows" "# of columns" "Time took(sec)" "Time took, using & (sec)" "Time took Parallelism=4(sec)"
100 100 1 1 ~0
1000 100 6 5 5
10000 100 51 59 51
100000 100 895 576 543
1000000 100 10462 11765 11468
Даже если ввести параллельную обработку с помощью утилиты «параллельного», я не вижу любое изменение прошедшего времени по сравнению с тем, что я получаю при нормальной обработке. Любые идеи, идеи, помощь будут оценены.
Мой процессор имеет 4 ядра, и я хочу убедиться, что программа использует все ядра во время выполнения.
Спасибо, Адиль
Возможно, вам захочется определить, где находится узкое место. –
Maxim, Поскольку я не использую какую-либо ручную процедуру для введения параллелизма в скрипт, сама идентификация узкого места является узким местом. Тем не менее, я мог видеть mstat, пока скрипт выполняет то, что все ядра используются в какой-то или другой момент времени, но основная часть% простоя остается выше (<80%) почти все время. Любые указатели были бы полезны. – knowone
Я бы посмотрел, как читать из шкал '/ dev/urandom'. –