Научная статья на тему 'РАСПАРАЛЛЕЛИВАНИЕ МНОГОЗАДАЧНОСТИ СТАНДАРТНЫМИ СРЕДСТВАМИ АВАР'

РАСПАРАЛЛЕЛИВАНИЕ МНОГОЗАДАЧНОСТИ СТАНДАРТНЫМИ СРЕДСТВАМИ АВАР Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
39
5
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ФУНКЦИОНАЛЬНЫЙ МОДУЛЬ / РАСПАРАЛЛЕЛИВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Зарипова Лилия Разатовна, Бушмелева Кия Иннокентьевна, Ладыгин Никита Иванович

Цель: Разработать программу для распараллеливания задач стандартными средствами АВАР. Метод: Эмпирическое исследование. Результат: Получили расчет распараллеливания задач. Выводы: Эффективность распараллеливания наблюдается при большом значении количества членов ряда. Для каждой подзадачи инициализируется вызов функционального модуля, а для него, выделяется отдельный рабочий процесс. В этом случае требуется использовать ресурсы рационально, чтобы не нагрузить систему.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Зарипова Лилия Разатовна, Бушмелева Кия Иннокентьевна, Ладыгин Никита Иванович

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

Текст научной работы на тему «РАСПАРАЛЛЕЛИВАНИЕ МНОГОЗАДАЧНОСТИ СТАНДАРТНЫМИ СРЕДСТВАМИ АВАР»

Первые два разряда семисегментного индикатора показывают десятки и единицы вольт, а следующие два - десятые и сотые доли. Это позволяет добиться отображения сигнала с 1% погрешности (0,15 В).

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

Список литературы:

1. 8-bit Atmel with 16Kbytes in-system programmable flash [Текст]: datasheet / Atmel. -Rev. 2466T. - San Jose: Atmel Corporation, 2010. - 357 с.

2. Панов, А.Н. Электронные промышленные устройства [Текст] : лабораторный практикум / Лукъянов С.И., Сидельникова Е.И., Васильев А.Е. - Магнитогорск: МГТУ, 2004 г. - 104 с.

РАСПАРАЛЛЕЛИВАНИЕ МНОГОЗАДАЧНОСТИ СТАНДАРТНЫМИ

СРЕДСТВАМИ АВАР

Зарипова Лилия Разатовна

Аспирант

Сургутский Государственный Университет

г. Сургут

Бушмелева Кия Иннокентьевна

профессор, доктор технических наук Сургутский Государственный Университет

г. Сургут

Ладыгин Никита Иванович

Аспирант

Сургутский Государственный Университет

г. Сургут

PARALLELIZATION OF MULTITASKING THROUGH STANDARD ABAP MEANS

Zaripova Liliya Razatovna

Postgraduate student Surgut State University, Surgut Bushmeleva Kiya Innokentevna Doctor of technical sciences Surgut State University, Surgut Ladigin Nikita Ivanovich Postgraduate student Surgut State University, Surgut

Аннотация

Цель: Разработать программу для распараллеливания задач стандартными средствами АВАР.

Метод: Эмпирическое исследование.

Результат: Получили расчет распараллеливания задач.

Выводы: Эффективность распараллеливания наблюдается при большом значении количества членов ряда. Для каждой подзадачи инициализируется вызов функционального модуля, а для него, выделяется отдельный рабочий процесс. В этом случае требуется использовать ресурсы рационально, чтобы не нагрузить систему. Abstract

Background: To elaborate a program for parallelization of tasks through standard ABAP means

Method: An empirical research.

Result: Got an calculation for tasks parallelization.

Conclusions: The efficiency of not parallel tasks performance is observed at great value of row figures quantity. For each subtask the call of the functional module is initialized, and separate working

process is allocated for it. In this case it is required to use resources rationally to prevent system overloading.

Ключевые слова: АВАР, SAP, функциональный модуль, распараллеливание. Keywords: ABAP, SAP, functional module, parallelization.

На сегодняшний день всё больше крупных компаний, в том числе и нефтегазовых, используют и внедряют платформу SAP ERP (Enterprise Resource Planning - планирование ресурсов предприятия), представляющую собой надежную и проверенную многокомпонентную систему, позволяющую оптимизировать и объединить хозяйственные процессы производства, закупки и сбыта продукции на предприятии. Все эти процессы взаимосвязаны и поддерживают логический цикл финансово-хозяйственной деятельности. То, что система SAP ERP состоит из отдельных модулей, позволяет использовать как ее отдельные компоненты, так и их различные комбинации, при этом в качестве языка программирования применяется АВАР (Advanced Business Application Programming - проприетарный внутренний язык программирования высокого уровня немецкой софтверной компании SAP)

Объем данных в системе SAP ERP со временем возрастает, вследствие чего вытекает ряд проблем: увеличение нагрузки на систему; увеличивается время выполнения транзакции

[3].

Для решения проблем, связанных с возрастанием количества данных в системе SAP ERP необходимо применить принцип распараллеливания задач, реализованного стандартными средствами ABAP, посредством асинхронного вызова функциональных модулей [1].

Неотъемлемой частью системы SAP ERP является интерфейс взаимодействия и обмена данными между программами SAP и не SAP систем, т.е. RFC (Remote Function Call - удаленный вызов функций). Данный интерфейс основан на CPI-C (Common Programming Interface for Communications - интерфейс прикладного программирования) технологии, который в свою очередь основан на TCP/IP (Transmission Control Protocol и Internet Protocol- набор сетевых протоколов передачи данных) сетевых протоколах передачи данных

[5].

Особенности RFC функций:

1) Если вызывать функциональный модуль локально, то он работает в том же про-

цессе что и вызывающая программа. Запускается в отдельном процессе, так называемом LUW (логическая единица работы) [1].

2) Система, с которой происходит взаимодействие, может быть SAP система или не SAP система, для последней существуют специальные RFC-SDK библиотеки.

3) Параметры функционального модуля должны быть явно типизированы.

Типы RFC функций:

1) Синхронный RFC (sRFC) - рабочий процесс ожидает завершения работы вызванного sRFC модуля. Выполняется в отдельном LUW (Database Logical Unit of Work - база данных логической единицы работы).

2) Асинхронный RFC (aRFC) - запуск функционального модуля параллельно рабочему процессу.

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

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

Для иллюстрации возможности распараллеливания многозадачности стандартными

1

средствами АВАР подсчитаем сумму ряда —

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

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

Таблица 1

n Режим Время выполнения, мс

10000 Последовательный « 20

Параллельный « 39

100000 Последовательный « 210

Параллельный « 105

1000000 Последовательный « 2100

Параллельный « 806

10000000 Последовательный «23100

Параллельный « 8565

Полученные данные в параллельном режиме разделялись на k независимых подзадач, в нашем случае k = 3. Анализируя полученные данные, можно сделать вывод, что при больших значениях n многозадачная обработка гораздо выгоднее с точки зрения потраченного времени, но с точки зрения ресурсов - менее выгодна. Прежде все этого связано с тем, что для каждой подзадачи инициализируется вызов функционального модуля, а для него, в свою очередь, выделяется отдельный рабочий процесс и, если данный подход использовать нерационально, то можно серьезно нагрузить систему. На все манипуляции, связанные с распараллеливанием задачи, требуется время, поэтому эффективность данного подхода наблюдается при большом значении n.

Заключение: один из способов реализации многозадачности стандартными средствами ABAP - асинхронный вызов функциональных модулей. Можно выделить положительную сторону в том, что данным способом можно параллельно выполнять независимые задачи, но только в том случае, когда требуется обработать большой объемом данных. К отрицательной стороне можно отнести то, что при запуске параллельной обработки в SAP, процесс может занять оставшиеся ресурсы из-за чего другие пользователи не смогут выполнить свою задачу. Поэтому использование многозадачной обработки должно быть строго обосновано, есть возможность в использовании

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

Список литературы

1. Публикации [Электронный ресурс] // Введение в ABAP-инструментальные средства SAP NetWeaver. - Режим доступа : http://saptex.blogspot.ru/- Загл. с экрана.

2. Публикации [Электронный ресурс] // Основы параллельных вычислений. - Режим доступа :

http://www.intuit.ru/studies/courses/1091/293/-Загл. с экрана.

3. Публикации [Электронный ресурс] // Лычев А.В. Распределенные автоматизированные системы. - Режим доступа :

http: //techlibrary.ru/b/2t2c1y1f1c_2h.2j ._2y 1a1s 1q1r1f1e1f1m1f1o1o2c1f_1a1c1t1p1n1a1t1j1i1j 1r1p1c1a1o1o2c1f_1s1j1s1t1f1n2c._2007.pdf /-Загл. с экрана.

4. Публикации [Электронный ресурс] // Асинхронный вызов метода. - Режим доступа : http: //www .cyberguru.ru/microsoft-net/csharp-net/csharp-async-invocation-of-a-method.html/-Загл. с экрана.

5. Публикации [Электронный ресурс] Remote Function Call. - Режим доступа : https://en.wikipedia.org/wiki/Remote_Function_ Call/- Загл. с экрана.

PARAMETERS: N TYPE I DEFAULT 1000000, K TYPE I DEFAULT 3.

DATA: FINISHED ПОДЗАДАЧ

GV SUMM

TYPE I VALUE 0,

_ TYPE DECFLOAT34 VALUE 0,

GV_SUMM_PART TYPE DECFLOAT34 VALUE 0, ПОДЗАДАЧИ

GV TIME TYPE I.

Приложение 1

КОЛИЧЕСТВО ЧЛЕНОВ РЯДА КОЛИЧЕСТВО ПОДЗАДАЧ КОЛИЧЕСТВО ВЫПОЛНЕННЫХ

СУММА РЯДА СУММА ОТДЕЛЬНОЙ

ВРЕМЯ ВЫПОЛНЕНИЯ

RANGES: LG INTER FOR N.

******************************************************************** **

* ОДНОЗАДАЧНЫЙ РЕЖИМ ********************************************************************

**

GET RUN TIME FIELD DATA(LV_BEGIN_TIME). " НАЧАЛО ОБРАБОТКИ ЗАДАЧИ CALL FUNCTION 'Z_MULTITASK_NIKITA' EXPORTING

IV_FROM = 1 IV_TO = N IMPORTING

EV_SUMM = GV_SUMM. GET RUN TIME FIELD DATA(LV_END_TIME). " КОНЕЦ ОБРАБОТКИ ЗАДАЧИ

GV_TIME = LV_END_TIME - LV_BEGIN_TIME. " ВРЕМЯ ВЫПОЛНЕНИЯ WRITE: /, 'ВРЕМЯ ВЫПОЛНЕНИЯ ПРИ ОДНОЗАДАЧНОСТИ: GV_TIME. WRITE: /, 'СУММА ПРИ ОДНОЗАДАЧНОСТИ: ', GV_SUMM.

CLEAR: GV_TIME, LV_BEGIN_TIME, LV_END_TIME, GV_SUMM.

********************************************************************

**

* МНОГОЗАДАЧНЫЙ РЕЖИМ ********************************************************************

**

" ЗАДАЕМ КОЭФФИЦИЕНТЫ И ОСТАТОК ДЛЯ ОПРЕДЛЕНИЯ ИНТЕРВАЛОВ DATA(LV_FACTOR) = ( N / K ). IF LV_FACTOR * K NE N.

DATA(LV_MOD) = N - LV_FACTOR * K. ENDIF.

" ЗАДАЕМ ИНТЕРВАЛЫ DO K TIMES.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

APPEND INITIAL LINE TO LG_INTER ASSIGNING FIELD-SYMBOL(<LSF_INTER>).

<LSF_INTER>-SIGN = 'I'. <LSF_INTER>-OPTION = 'BT'.

DATA(LV_LOW) = LV_FACTOR * ( SY-INDEX - 1 ) + 1. " НИЖНЯЯ ГРАНИЦА DATA(LV_HIGH) = LV_FACTOR * SY-INDEX. " ВЕРХНЯЯ ГРАНИЦА IF SY-INDEX EQ K. " ЕСЛИ ПОСЛЕДНЯ ИТЕРАЦИЯ, ТО ПРИБАВЛЯЕМ ОСТАТОК

LV_HIGH = LV_HIGH + LV_MOD. ENDIF.

<LSF INTER>-LOW = LV LOW.

Национальная ассоциация ученых (НАУ) # 1 (27-28), 2017 31

<LSF_INTER>-HIGH = LV_HIGH. UNASSIGN <LSF_INTER>. ENDDO.

" АСИНХРОННЫЙ ВЫЗОВ ФУНКЦИОНАЛЬНОГО МОДУЛЯ

GET RUN TIME FIELD LV_BEGIN_TIME. " НАЧАЛО ОБРАБОТКИ ПОДЗАДАЧ LOOP AT LG_INTER ASSIGNING <LSF_INTER>. DATA(LV_NAME_TASK) = |TASK{ SY-TABIX }|. CALL FUNCTION 'Z_MULTITASK_NIKITA' STARTING NEW TASK LV_NAME_TASK PERFORMING CALLBACK ON END OF TASK EXPORTING

IV_FROM = <LSF_INTER>-LOW IV_TO = <LSF_INTER>-HIGH. ENDLOOP.

WAIT UNTIL FINISHED EQ K. " ОЖИДАНИЯ ЗАВЕРШЕНИЯ ВСЕХ ПОДЗАДАЧ GET RUN TIME FIELD LV_END_TIME. " КОНЕЦ ОБРАБОТКИ ПОДЗАДАЧ GV_TIME = LV_END_TIME - LV_BEGIN_TIME. " ВРЕМЯ ВЫПОЛНЕНИЯ WRITE: /, 'ВРЕМЯ ВЫПОЛНЕНИЯ ПРИ МНОГОЗАДАЧНОСТИ: GV_TIME. WRITE: /, 'СУММА ПРИ МНОГОЗАДАЧНОСТИ: ', GV_SUMM. " ПОДПРОГРАММА ОБРАТНОГО ВЫЗОВА FORM CALLBACK USING IV_NAME_TASK.

RECEIVE RESULTS FROM FUNCTION 'Z_MULTITASK_NIKITA' IMPORTING EV_SUMM = GV_SUMM_PART.

ADD GV_SUMM_PART TO GV_SUMM. FINISHED = FINISHED + 1. ENDFORM.

FUNCTION Z_MULTITASK_NIKITA. DATA LV_N TYPE I. DATA(LV_FROM) = IV_FROM - 1. LV_N = IV_TO - LV_FROM. DO LV_N TIMES.

EV_SUMM = EV_SUMM + ( 1 / LV_FROM + SY-INDEX ). ENDDO. ENDFUNCTION.

i Надоели баннеры? Вы всегда можете отключить рекламу.