Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ КП ИМ_ПФЭ.doc
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
544 Кб
Скачать
☆

4.3. Имитационная модель вычислительной системы

Модель исследуемой системы в среде AnyLogic представлена на рисунке 4.2.

Рисунок 4.2  Модель исследуемой системы в среде AnyLogic

Концептуальное описание имитационной модели с привязкой к программной среде. Заявки стандартного типа поступают в систему от источника in. От источников in_bckgrund2 и in_bckgrund3 поступают фоновые задачи в момент, когда PC2 и РС3 соответственно не заняты обработкой стандартных задач. Переменная is_bckgrund2 отображает, является ли поступившая заявка фоновой.

Далее стандартные заявки приходят в блок q1 — становятся в очередь, если обслуживающее устройство (РС1) занято. Затем заявки приходят в блок РС1, где имитируется их обслуживание, после чего они дублируются и поступают в очереди q2 и q3 одновременно к двум ПК (РС2 и РС3), где ожидают, пока соответствующее устройство не освободится либо копия заявки не будет обслужена на другом ПК. В этом случае заявка удаляется из системы. Также заявка удаляется во время обслуживания, если она до окончания обслуживания была обработана на параллельном ПК.

Прошедшие обработку заявки поступают в блоки out1 и out2, имитирующие процесс удаления (выхода) из системы. То же происходит с фоновыми задачами, обработанными на РС2 или РС3.

Описание основных структурных блоков модели.

Блоки in, in_bckgrund2, in_bckgrund3 являются источниками заявок. В качестве заявок выступают объекты класса Inq, который унаследован от класса Entity. Согласно постановки задачи, время между прибытиями заявок распределено по нормальному закону со средним 30 с — параметр in_mean.

При выходе заявки из блока in определяется ее порядковый номер, который записывается в переменную in_count.

По условию фоновые задачи обслуживаются только тогда, когда ПК простаивают. Поэтому вызов фоновых задач из блоков in_bckgrund2 и in_bckgrund3 происходит по методу inject(). При этом при выходе из блоков задается тип заявки и время задержки при обработке. Свойства блоков in и in_bckgrund2 приведены на рисунке 4.3. Свойства блока in_bckgrund3 идентичны свойствам in_bckgrund2.

Рисунок 4.3  Свойства блоков in и in_bckgrund2

Блоки РС1, РС2, РС3 моделируют обработку задач на ПК. При входе в каждый из них в параметр заявке in_time записывается время входа, а при выходе  рассчитываются статистические данные.

Время обработки на РС1 определено условием задачи и равно в среднем 30 с  параметр РС1_mean. Время обработки на РС2 и РС3 определяется параметром заявки delay. Кроме того, при выходе из блоков РС2 и РС3 производятся следующие действия:

 проверяется наличие копии заявки (определяется по порядковому номеру) и при нахождении копия удаляется из системы, если заявка – не фоновая задача;

 если копия не была удалена из параллельного ПК, то проверяется её наличие в очереди к этому ПК и при нахождении копия удаляется из системы;

 проверяется наличие заявок в очереди перед обоими ПК и если очереди пусты, то вызывается метод inject() для соответствующего источника заявок.

Фрагменты описания свойств блоков, имитирующих работу ПК приведен на рисунках 4.4  4.5.

Рисунок 4.4  Свойства блока, имитирующего работу устройства PC1

Блоки q1, q2, q3 моделируют работу очереди перед каждым ПК. Кроме того в блоках q2 и q3 задается время обработки заявок на РС2 и РС3 соответственно.

Рисунок 4.5  Фрагмент описания раздела «Действия» для блока PC2

Блок split используется для создания копии заявки, чтобы её обработка могла вестись сразу на двух ПК.

Блоки out1, out2 выводит заявки из системы, подсчитывая при этом число обработанных фоновых задач.

Сбор статистики выводится в область параметров, фрагмент которой представлен на рисунке 4.6.

Рисунок 4.6  Область параметров

Собранная статистика также сохраняется в файл Excel. Фрагмент кода сохранения из класса эксперимента:

for(int j=1; j<9; j++){

root.ex.createCell(1,getCurrentReplication()+1,j);}

root.ex.setCellValue(root.PC1_util,1,getCurrentReplication()+1,1);

root.ex.setCellValue(root.PC2_util,1,getCurrentReplication()+1,2);

root.ex.setCellValue(root.PC3_util,1,getCurrentReplication()+1,3);

root.ex.setCellValue(root.q1_ave_cont,1,getCurrentReplication()+1,4);

root.ex.setCellValue(root.q2_ave_cont,1,getCurrentReplication()+1,5);

root.ex.setCellValue(root.q3_ave_cont,1,getCurrentReplication()+1,6);

root.ex.setCellValue(root.bckgrnd_performance,1,getCurrentReplication()+1,7);

root.ex.setCellValue(root.bckgrnd2_performance,1,getCurrentReplication()+1,8);

В таблице 4.1 представлены сводные данные, полученные в результате моделирования компьютерной системы в течении 4 часов.

Таблица 4.1  Результаты имитационного моделирования

Исследуемый параметр

Значение

Коэффициент загрузки ПК1

0,9967

Коэффициент загрузки ПК2

0,9111

Коэффициент загрузки ПК3

0,9258

Емкость накопителя q1

3

Емкость накопителя q2

5

Емкость накопителя q3

5

Производительность ПК2 при решении фоновых задач

71

Производительность ПК3 при решении фоновых задач

78

Кроме того, в результате имитационных экспериментов установлено, что с увеличением интенсивности поступления заданий в систему средняя емкость накопителя перед компьютером PC1 резко возрастает. В связи с этим является целесообразным установить влияние факторов системы на значение емкости данного накопителя. Решение этой задачи можно получить, построив регрессионную модель на основе ПФЭ.