Лабораторная работа №6.
Общая производительность системы.

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

Задание

В настоящее время подготовлены виртуальные машины VMBASE (Windows/Linux) и VM1 (Linux). Для выполнения ЛР следует подключить к VM1 общий жесткий диск, который был ранее подготовлен для VMBASE, и сконфигурировать Samba-сервер по аналогии с VMBASE. Во всех системах создать на общем диске сетевую папку readwrite, доступную анонимному пользователю для чтения и записи, обеспечить возможность ее подключения как диска (Windows) или монтируемого каталога (Linux).
  1. (10 баллов) Разработать кроссплатформенную консольную программу picalc, которая находит значение числа Pi, используя сходимость бесконечного ряда Лейбница: Pi=4 - 4/3 + 4/5 - 4/7 + 4/9 -... . Для рассчета использовать вещественный тип данных с максимальной точностью в используемом языке программирования. Язык программирования - на усмотрение студента. Программа не должна требовать изменения исходного кода для работы в различных ОС. Допускается перекомпиляция программы под целевую ОС, в случае используования компилируемого языка программирования.
    Программе в командной строке передается точность (Delta), с которой должен быть рассчитан результат (напр. 0.0000001).
    Программа выводит на экран результат рассчета каждой N-й итерации, где N рассчитывается как целая часть выражения (1/Delta/100000). Если результат вычисления N меньше 1, то N следует присвоить значение 1, т.е. результат рассчета числа Pi выводится каждую итерацию.
    Формат вывода:
    номер_текущей_итерации: рассчитанное_значение_pi
    
    Пример:
    ./picalc 0.1
    1: 4.0000000000000000E+0000
    2: 2.6666666666666667E+0000
    3: 3.4666666666666667E+0000
    4: 2.8952380952380952E+0000
    5: 3.3396825396825397E+0000
    6: 2.9760461760461760E+0000
    7: 3.2837384837384837E+0000
    8: 3.0170718170718171E+0000
    9: 3.2523659347188759E+0000
    10: 3.0418396189294022E+0000
    11: 3.2323158094055927E+0000
    12: 3.0584027659273318E+0000
    13: 3.2184027659273318E+0000
    14: 3.0702546177791837E+0000
    15: 3.2081856522619423E+0000
    16: 3.0791533941974262E+0000
    17: 3.2003655154095474E+0000
    18: 3.0860798011238331E+0000
    19: 3.1941879092319412E+0000
    20: 3.0916238066678386E+0000
    21: 3.1891847822775947E+0000
    
  2. (20 баллов) Разработать управляющий консольный скрипт, отдельно для Windows и Linux, на базовом скриптовом языке, специфичном для целевой ОС (sh, bash, cmd, wsh, powershell и т.п.), который последовательно N раз вызывает программу picalc c параметром Delta, начиная от значения 0.00001 с уменьшением Delta в два раза на каждом шаге, перенаправляя результат в файлы вида 000001, 000002 и т.д. По окончании работы скрипт выводит на экран общее время работы своей работы.
  3. (30 баллов) Разместить все компоненты своей программы и управляющий скрипт в сетевом каталоге readwrite на всех виртуальных машинах. Обеспечить его подключение как диска (Windows) или монтируемого каталога (Linux) с возможностью запуска скрипта и программы для следующих комбинаций операционных систем:
    1. Linux (сервер) - Linux (клиент)
    2. Windows (сервер) - Linux (клиент)
    3. Linux (сервер) - Windows (клиент)
    Программа и скрипт должны при своем запуске на хостовой машине взаимодействовать с файлами только того сетевого ресурса, на котором они находятся.
  4. (20-40 баллов) Подобрать значение N для комбинации (1) таким образом, чтобы время работы управляющего скрипта было в пределах 10 секунд. Для такого-же значения N оценить время работы скрипта в кобинации (2) и (3). Ранжировать результаты, сделать выводы об общей производительности работы набора программ в каждой конфигурации.
  5. Необязательное групповое задание, +30 баллов за первое место, +20 за второе. Однократно для студента. Допускается только в случае эксклюзивной разработки членами группы своих программы и скрипта. Создать группу из 2-х студентов. Предоставить напарнику свои системы как серверные. Протестировать межмашинные комбинации (1)-(3), дополнительно проверить эффективность комбинации 4) Windows (сервер) - Windows (клиент). Первое место занимает студент, чья серверная часть участвовала в выигрышной комбинации.

Инструментарий

Скрипт для измерения времени работы программы под Windows, в случае использования командного процессора cmd.exe