Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Мезенцев Имитационное моделирование / КП Моделирование последовательно-параллельных ОС с очередями и приоритетами средствами GPSSWorld. по ИМ.docx
Скачиваний:
67
Добавлен:
04.01.2020
Размер:
232.52 Кб
Скачать
  1. Практический раздел

    1. Постановка задачи

В системах массового обслуживания каждая заявка(транзакт) проходит несколько этапов:

  1. появление заявки на входе в систему;

  2. ожидание в очереди;

  3. процесс обслуживания, после которого заявка покидает систему.

Первый и третий этап характеризуются случайными величинами.

Задача формулируется с учетом темы ВКРБ «Разработка автоматизированной информационной системы сбора и мониторинга данных с электронно-вычислительных устройств и датчиков».

Смоделируем выделенный технологический процесс (преобразование электронного xml запроса отправленного с клиентского узла связи, в транзакцию в виде SQL запроса в базу данных на сервер) преобразование исходных данных поступающих в систему с клиентского устройства на удаленный сервер, по средствам соединения TCP/IP. Каждый пользователь регистрируется на сервере, и получает в распоряжение пользовательскую БД, с системными таблицами и таблицами которые он сам настраивает пользователем. Следующим этапом является регистрация и соединение с пользовательским устройством который является своего рода буфером. На устройство отправляются данные с сенсоров и датчиков, где формируется XML файл со значениями показаний датчиков. Далее XML файл автоматически отправляется на сервер, где преодолевает два этапа конвертацию в SQL, то есть непосредственный разбор древа XML файла и преобразование в SQL команды. Далее эти команды выполняются сервером.

В рамках задачи определим модельные единицы измерения:

  • память в многоканальных устройствах измеряется в мегабайтах;

  • время измеряется в миллисекундах.

Исходные данные:

N – интенсивность поступающих запросов;

T1 – время обслуживание(отправка данных на сервер);

T2 – время обслуживания (конвертация);

T3 – время обслуживания (сервера БД);

Tis – время моделирования ().

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

    1. Разработка и тестирование проекта

В листинге 1 представлен исходный код нашей модели, интенсивность поступления запросов 5000 миллисекунд.

Листинг 1 исходный код модели

SIMULATE

cmdquery EQU 5000 ; интенсивность запросов

byfferquery STORAGE 64 ; память выделенная под буферизацию на клиентском ПК

konvertor STORAGE 1024 ; память выделенная для конвертации

GENERATE (Exponential(1,0,cmdquery)) ; генерация транзактов с интенсивностью распределенной экспоненциально

QUEUE bufqu ; очередь на отправку

ENTER byfferquery,4 ; занимаем многоканальное устройство буфер 4 мегабайтами

DEPART bufqu ; уменьшаем очередь

ADVANCE (Normal(30,100,1)) ; отправляем даныые с клиенского узла на сервер зависит от скорости передачи данных, нижняя граница взята примерно 30 миллисекунд распределенная нормально

LEAVE byfferquery,4 ; освобождаем буфер на 4 мегабайта

QUEUE bufkon ; очередь на конвертацию

ENTER konvertor,4 ; занимаем ковертер 4 мегабайтами

DEPART bufkon ; уменьшаем очередь

ADVANCE 30,20 ; обслуживание конвертером, взято примерно 30 миллесекунд +-20

LEAVE konvertor,4 ; освобождаем конвертер на 4 мегабайта

QUEUE db ; очередь на транзакцию в БД

SEIZE database ; занимаем одноканальное устройство БД

DEPART db ; уменьшаем очередь

ADVANCE 50,30 ; обслуживаем транзакция в БД поступающего запроса

RELEASE database ; освобождаем одноканальное устройство БД

TERMINATE

GENERATE 3600000 ;сегмент времени один час

TERMINATE 1

Просмотрим получившийся отчет:

GPSS World Simulation Report - курсач модель.82.1

Monday, December 08, 2014 06:20:54

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 3600000.000 19 1 2

NAME VALUE

BUFKON 10004.000

BUFQU 10003.000

BYFFERQUERY 10001.000

CMDQUERY 5000.000

DATABASE 10006.000

DB 10005.000

KONVERTOR 10002.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 685 0 0

2 QUEUE 685 0 0

3 ENTER 685 0 0

4 DEPART 685 0 0

5 ADVANCE 685 0 0

6 LEAVE 685 0 0

7 QUEUE 685 0 0

8 ENTER 685 0 0

9 DEPART 685 0 0

10 ADVANCE 685 0 0

11 LEAVE 685 0 0

12 QUEUE 685 0 0

13 SEIZE 685 0 0

14 DEPART 685 0 0

15 ADVANCE 685 0 0

16 RELEASE 685 0 0

17 TERMINATE 685 0 0

18 GENERATE 1 0 0

19 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

DATABASE 685 0.010 50.145 1 0 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BUFQU 1 0 685 685 0.000 0.000 0.000 0

BUFKON 1 0 685 685 0.000 0.000 0.000 0

DB 1 0 685 680 0.000 0.258 35.347 0

STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY

BYFFERQUERY 64 64 0 8 2740 1 0.076 0.001 0 0

KONVERTOR 1024 1024 0 8 2740 1 0.023 0.000 0 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

687 0 3604567.823 687 0 1

688 0 7200000.000 688 0 18

Из нашего отчета видно, что все сгенерированные запросы, успешно прошли все блоки технологического процесса. Так же можно увидеть нагрузку на блоке и средние время затраченное на обработку информации.

Теперь предположим, что интенсивность поступления запросов равна 100 миллисекундам. Тогда получим такой отчет.

GPSS World Simulation Report - курсач модель.89.1

Monday, December 08, 2014 06:33:08

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 3600000.000 19 1 2

NAME VALUE

BUFKON 10004.000

BUFQU 10003.000

BYFFERQUERY 10001.000

CMDQUERY 100.000

DATABASE 10006.000

DB 10005.000

KONVERTOR 10002.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 35709 0 0

2 QUEUE 35709 0 0

3 ENTER 35709 0 0

4 DEPART 35709 0 0

5 ADVANCE 35709 0 0

6 LEAVE 35709 0 0

7 QUEUE 35709 0 0

8 ENTER 35709 0 0

9 DEPART 35709 0 0

10 ADVANCE 35709 0 0

11 LEAVE 35709 0 0

12 QUEUE 35709 2 0

13 SEIZE 35707 0 0

14 DEPART 35707 0 0

15 ADVANCE 35707 1 0

16 RELEASE 35706 0 0

17 TERMINATE 35706 0 0

18 GENERATE 1 0 0

19 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

DATABASE 35707 0.497 50.114 1 35707 0 0 0 2

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BUFQU 1 0 35709 35709 0.000 0.000 0.000 0

BUFKON 1 0 35709 35709 0.000 0.000 0.000 0

DB 7 2 35709 17945 0.270 27.255 54.788 0

STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY

BYFFERQUERY 64 64 0 32 142836 1 3.968 0.062 0 0

KONVERTOR 1024 1024 0 20 142836 1 1.186 0.001 0 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

35707 0 3600022.844 35707 15 16

35711 0 3600121.406 35711 0 1

35712 0 7200000.000 35712 0 18

В этом отчете по прежнему видно, что поступающие запросы обрабатываются и проходят все этапы. Но следует отметить, что нагрузка на БД стала равна практически 50 процентам, из этого следует, что при увеличении интенсивности поступления запросов, база данных на сервере станет узким местом в выделенном технологическом процессе. Смоделируем с более частой интенсивностью поступления запросов и проанализируем результат. Интенсивность поступления запросов 10 миллисекунд.

GPSS World Simulation Report - курсач модель.90.1

Monday, December 08, 2014 06:45:57

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 3600000.000 19 1 2

NAME VALUE

BUFKON 10004.000

BUFQU 10003.000

BYFFERQUERY 10001.000

CMDQUERY 10.000

DATABASE 10006.000

DB 10005.000

KONVERTOR 10002.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 359908 0 0

2 QUEUE 359908 0 0

3 ENTER 359908 0 0

4 DEPART 359908 0 0

5 ADVANCE 359908 14 0

6 LEAVE 359894 0 0

7 QUEUE 359894 0 0

8 ENTER 359894 0 0

9 DEPART 359894 0 0

10 ADVANCE 359894 2 0

11 LEAVE 359892 0 0

12 QUEUE 359892 287854 0

13 SEIZE 72038 0 0

14 DEPART 72038 0 0

15 ADVANCE 72038 1 0

16 RELEASE 72037 0 0

17 TERMINATE 72037 0 0

18 GENERATE 1 0 0

19 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

DATABASE 72038 1.000 49.972 1 72040 0 0 0 287854

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BUFQU 13 0 359908 340284 0.065 0.654 12.003 0

BUFKON 1 0 359894 359894 0.000 0.000 0.000 0

DB 287854 287854 359892 1 143732.795 1437759.274 1437763.269 0

STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY

BYFFERQUERY 64 8 0 64 1439632 1 39.990 0.625 0 0

KONVERTOR 1024 1016 0 56 1439576 1 11.986 0.012 0 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

359896 0 3600001.433 359896 5 6

359910 0 3600004.126 359910 0 1

359897 0 3600008.679 359897 5 6

359895 0 3600010.948 359895 10 11

359898 0 3600011.229 359898 5 6

359893 0 3600013.729 359893 10 11

359899 0 3600015.434 359899 5 6

72040 0 3600018.684 72040 15 16

359900 0 3600028.977 359900 5 6

359901 0 3600035.015 359901 5 6

359902 0 3600049.698 359902 5 6

359903 0 3600052.792 359903 5 6

359904 0 3600057.027 359904 5 6

359905 0 3600059.895 359905 5 6

359907 0 3600080.252 359907 5 6

359906 0 3600080.415 359906 5 6

359908 0 3600086.989 359908 5 6

359909 0 3600093.269 359909 5 6

359911 0 7200000.000 359911 0 18

Из этого отчета становится понятно, что БД перегружена и не справляется с таким количеством запросов в час. Так как под каждого пользователя выделяется собственная БД, то проблем в разделение БД не возникнет, но потребуется средства для покупки новых серверов, но так же можно сказать что с увеличением количества запросов, соответственно увеличиться количество пользователей. В следствии этих утверждений решением данной проблемы, возможно путем покупки двух новых серверов, распределение пользовательских баз данных между этими серверами. Смоделируем с той же интенсивностью поступления запросов при покупки двух новых серверов. Учтем время перенаправления данных, то есть добавим время задержки. На листинги 2 представлена модель с приобретенными серверами.

Листинг 2

SIMULATE

cmdtime EQU 10

byfferquery STORAGE 64

konvertor STORAGE 1024

GENERATE (Exponential(1,0,cmdtime))

QUEUE bufqu

ENTER byfferquery,4

DEPART bufqu

ADVANCE (Normal(30,100,1))

LEAVE byfferquery,4

QUEUE bufkon

ENTER konvertor

DEPART bufkon

ADVANCE 30,20

LEAVE konvertor

QUEUE db

GATE NU database,Met1

SEIZE database

DEPART db

ADVANCE 50,30

RELEASE database

Met1 QUEUE db2

GATE NU database2,Met2

SEIZE database2

DEPART db2

ADVANCE 60,35

RELEASE database2

Met2 QUEUE db3

GATE NU database2,Met3

SEIZE database3

DEPART db3

ADVANCE 60,35

RELEASE database3

Met3 TERMINATE

GENERATE 3600000 ;сегмент времени один час

TERMINATE 1

GPSS World Simulation Report - курсач модель2.23.1

Monday, December 08, 2014 07:43:41

START TIME END TIME BLOCKS FACILITIES STORAGES

0.000 3600000.000 32 3 2

NAME VALUE

BUFKON 10004.000

BUFQU 10003.000

BYFFERQUERY 10001.000

CMDTIME 10.000

DATABASE 10006.000

DATABASE2 10008.000

DATABASE3 10010.000

DB 10005.000

DB2 10007.000

DB3 10009.000

KONVERTOR 10002.000

MET1 18.000

MET2 24.000

MET3 30.000

LABEL LOC BLOCK TYPE ENTRY COUNT CURRENT COUNT RETRY

1 GENERATE 358359 0 0

2 QUEUE 358359 0 0

3 ENTER 358359 0 0

4 DEPART 358359 0 0

5 ADVANCE 358359 5 0

6 LEAVE 358354 0 0

7 QUEUE 358354 0 0

8 ENTER 358354 0 0

9 DEPART 358354 0 0

10 ADVANCE 358354 2 0

11 LEAVE 358352 0 0

12 QUEUE 358352 0 0

13 GATE 358352 0 0

14 SEIZE 59936 0 0

15 DEPART 59936 0 0

16 ADVANCE 59936 1 0

17 RELEASE 59935 0 0

MET1 18 QUEUE 358351 0 0

19 GATE 358351 0 0

20 SEIZE 51343 0 0

21 DEPART 51343 0 0

22 ADVANCE 51343 1 0

23 RELEASE 51342 0 0

MET2 24 QUEUE 358350 0 0

25 GATE 358350 0 0

26 SEIZE 51342 0 0

27 DEPART 51342 0 0

28 ADVANCE 51342 0 0

29 RELEASE 51342 0 0

MET3 30 TERMINATE 358350 0 0

31 GENERATE 1 0 0

32 TERMINATE 1 0 0

FACILITY ENTRIES UTIL. AVE. TIME AVAIL. OWNER PEND INTER RETRY DELAY

DATABASE 59936 0.833 50.033 1 358349 0 0 0 0

DATABASE2 51343 0.856 60.046 1 358344 0 0 0 0

DATABASE3 51342 0.857 60.120 1 0 0 0 0 0

QUEUE MAX CONT. ENTRY ENTRY(0) AVE.CONT. AVE.TIME AVE.(-0) RETRY

BUFQU 15 0 358359 339995 0.060 0.603 11.765 0

BUFKON 1 0 358354 358354 0.000 0.000 0.000 0

DB 298416 298416 358352 59936 149088.973 1497746.077 1798564.093 0

DB2 307008 307008 358351 51343 153396.947 1541028.234 1798744.687 0

DB3 307008 307008 358350 19432 153397.381 1541036.898 1629392.869 0

STORAGE CAP. REM. MIN. MAX. ENTRIES AVL. AVE.C. UTIL. RETRY DELAY

BYFFERQUERY 64 44 0 64 1433436 1 39.818 0.622 0 0

KONVERTOR 1024 1022 0 13 358354 1 2.986 0.003 0 0

FEC XN PRI BDT ASSEM CURRENT NEXT PARAMETER VALUE

358344 0 3600003.778 358344 22 23

358361 0 3600017.085 358361 0 1

358349 0 3600025.199 358349 16 17

358356 0 3600026.480 358356 5 6

358355 0 3600028.505 358355 10 11

358357 0 3600032.787 358357 5 6

358358 0 3600034.587 358358 5 6

358354 0 3600035.190 358354 10 11

358359 0 3600083.711 358359 5 6

358360 0 3600092.155 358360 5 6

358362 0 7200000.000 358362 0 31

Из полученного отчета видно, что покупка трех серверов решила эту проблему. То есть в данных условиях покупка серверов станет оправданным вложением, позволит не потерять пользователей системы, избавить от перегрузок серверов и оборудования. Купленные сервера обслуживают меньшие количество запросов чем основной сервер, так как данные перенаправляются(соответственно на это тратится время) в случае если основной сервер занят. Для наглядности построим график очередей запросов к серверам. На рисунке 1 представлен график очередей.

Рисунок 1 – график очередей к серверам

Соседние файлы в папке Мезенцев Имитационное моделирование