Научная статья на тему 'Нестационарный режим работы программной системы при активном «Кэшировании» доступа к базе данных'

Нестационарный режим работы программной системы при активном «Кэшировании» доступа к базе данных Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
230
76
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ПРОГРАММИРОВАНИЕ / ORM-БИБЛИОТЕКИ / OBJECT-RELATIONAL MAPPING (ORM) / КЭШИРОВАНИЕ / БЫСТРОДЕЙСТВИЕ ПРОГРАММНОЙ СИСТЕМЫ / ДИССИПАЦИЯ ИНФОРМАЦИИ / PROGRAMMING / ORM-LIBRARY / CACHING / PERFORMANCE OF A SOFTWARE SYSTEM / THE DISSI PATION OF INFORMATION

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Кудж Станислав Алексеевич, Мельников Сергей Викторович

Проведено исследование активного режима «кэширования». Показано, что увеличения производительности посредством «кэширования», применяющегося в ORM-библиотеках, в ряде случаев может ощутимо снизить быстродействие всей программной системы. Образующиеся в таких режимах диссипативные макроструктуры, могут играть роль «программных тромбов» в процессе организации взаимодействия программных систем и баз данных. Выявлены причины «программных тромбов». Даны рекомендации по их устранению

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

Unsteady operation of a software system with the active "caching" to access the datab ase

The study of active mode "cache". It is shown that increase productivity through "cache", as used in the ORM-libraries, in some cases, can significantly affect the performance of the entire software system. Formed under these conditions dissi pative macrostructure can play the role of "software clots" in the process of interaction of software systems and datab ases. The causes of "soft thrombus". Recommendations for their elimination

Текст научной работы на тему «Нестационарный режим работы программной системы при активном «Кэшировании» доступа к базе данных»

УДК 004.92: 004.94

С. А. Кудж, С. В. Мельников

Нестационарный режиж работы программной системы при активном «кэшировании» доступа, к базе данных

исследование активного режима производительности посредством

«кэширования». Доказано, что «кэширования», применяющегося

проведено увеличения

в OR^Æ-библиотеках, в ряде случаев может ощутимо снизить быстродействие всей программной системы. Образующиеся в таких режимах диссипативные макроструктуры, могут играть роль «программных тромбов» в процессе организации взаимодействия программных систем и баз данных, выявлены причины «программных тромбов». 'DaHbL рекомендации по их устранению

Ключевые слова: программирование, OR^Æ-библиотеки, Object-'R.eCationaC AÆapping (0~R.^Æ), кэширование, быстродействие программной системы, диссипация информации

S. A. Kudzh, S. V. Mel'nikov

Mnsteady operation oft a sofrtw-aZe system with the active "caching' to access the database

Xhe study oft active mode "cache", tft is shown that increase productivity through "cache", as used in the OR^Æ-êibraries, in some cases, can significantly affect the performance of the entire software system. Jormed under these conditions dissipative macrostructure can pCay the ГоСе of "software cêots" in the process of interaction of software systems and datab ases. causes of "soft thrombus".

Recommendations for their elimination

Keywords: programming, 0~R.^Æ-êibrary, Object-'R.eCationaC AÆapping (0~R.^Æ), caching, performance of a software system, the dissipation of information

'ного потоковые вычисления были известны достаточно давно [1]. Однако только в последнее время в практике программирования и вычислений увеличивается внимание к одновременному выполнению нескольких потоков команд [2, 3, 4, 5]. Производители процессоров компенсируют возможное замедление роста производительности отдельного ядра процессора увеличением количества вычислительных устройств в одном корпусе (увеличения количества ядер в процессоре).

Появился новый класс вычислительных устройств — GPGPU (General Purpose Graphic Processing Units) — устройства обработки графики общего назначения), позволяющие выполнять расчеты общего назначения на графических процессорах, обладающих значительным параллелизмом.

В качестве объекта анализа таких устройств рассмотрим многопоточную программу, выполняющую некоторое типовое преобразование объектов по схеме:

Л-

kl

->X + D (1)

Л + В + 2X + Y —^ 3X + D + E (2)

Л + В + XX-

k 3

>Y + D + E (3) D (4)

где А, В, X, Y, D, E — объекты некоторых типов. Каждое правило, в соответствии с которым трансформируются объекты выполняется в контексте отдельного потока, т.е. асинхронно относительно других. Подобного рода трансформации могут осуществляться в широком классе программ, не обязательно написанных на объектно-ориентированных языках C++, Java, Delphi, и др.

Следует обратить внимание на правило (2), вносящее обратную связь, т.е. при наличии внешних условий, данной правило приводит к взрывному увеличению количества объектов типа X. Данное явления можно назвать автокатализ, по аналогии с химическим автокатализом

(«автокатализ» - катализ химической реакции одним из ее продуктов или исходных веществ).

Приведенные выше правила преобразования (1-4) объектов отождествимы с информационным взаимодействием в широком смысле, т.е. с про-

цессом обмена любыми видами информации [6, 7].

Преобразования (1) - (4) могут быть транслированы в исходный код так, как это показано в (5) на примере преобразования (3). Остальные правила транслируются подобным образом.

void Process3() {

some_object A, B, X; if (st_a.try_pop(A)){

if (st_b.try_pop(B)) {

if (st_x.try_pop(X)) {

st_y.push(some_object()); InterlockedIncrement(&R3);

} else {

st_a.push(A);

(5)

st_b.push(B);

}

} else {

st_a.push(A);

}

Каждое правило запускается в контексте отдельного потока (англ. thread) выполнения исполняемого кода. Для увеличения стабильности результатов обычно применяют «привязку» (англ. affinity) потоков к физическим вычислительным ядрам с помощью интерфейса операционной системы (например, для Windows это функция SetThreadAffinityMask).

Дополнительно запускаются потоки, обеспечивающие наполнение очередей объектами типов А и В. Несколько выполняющихся потоков команд, выполняющих преобразования (1) - (4) используют глобальные очереди объектов, т.е. используется модель вычислительной системы с общей памятью. На рис.1 показана траектория программной системы в фазовом пространстве.

-1000

Количество объектов Y

Рис. 1. Участок траектория программной системы в фазовом пространстве

}

}

Запуск модели проводился на ЭВМ с процессором АМЭ РЬепот II 9550, имеющим четыре вычислительных ядра. Во время работы программы записывалось количество объектов X и

На рис. 1 и 2 видны циклы количества объектов X и У. Несмотря на то, что логика программа описывает микроизменения, характерный размер колебаний на графиках носит макрохарактер.

Система демонстрирует «запоминание» собственного состояния, или возникновение макроструктур, которые могут быть отождествлены с понятием И.Пригожина «диссипативные структуры» [8]. Отмечается полная воспроизводимость подобного характера поведения системы в подавляющем числе запусков тестовой программы.

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

Циклическое изменение количества объектов X и У при постоянном потоке объектов А и В будут влиять на потребление памяти информационной системой. Постоянно изменяющийся объем занимаемой динамической памяти («кучи») может негативно сказаться на производительности информационной системы из-за дополнительных операций на выделение и освобождение памяти.

У, существующих в системе и характеризующих ее состояние. В результате тестовых запусков были получены траектории состояния системы в фазовом пространстве, приведенные на рис.2

В случае активного использования файловой подкачки виртуальной памяти эффект периодического выделения/освобождения может значительно сказаться на производительности. При операциях выделения памяти будет производиться перекачка страниц памяти из физической памяти на жесткий диск. При освобождении памяти будут проводиться операции очистки файла подкачки от неиспользуемых страниц памяти. Отметим, что обращение к жесткому диску является крайне медленной операцией со временем доступа 10-15мс. Для сравнения, временя доступа к оперативной памяти на несколько порядков меньше [9].

Для более точного сбора данных о производительности программной системы используем технологию Intel Performance Counter Mointor, доступную только на процессорах Intel с микроархитектурой Nehalem или более поздней. Для сбора данных о производительности приложений на управляемой платформе Java применим подход, описанный в [8]. На рис. 3 показана кривая изменения объема памяти, занимаемой во время работы программы. На рис. 4 показан объем занимаемой памяти (Private Bytes), отображаемый программой Process Explorer.

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

9000

-1000

Количество объектов ¥

Рис. 2. Участок траектории программной системы в фазовом пространстве

Зависимость занимаемого программой объема памяти от времени

ю

52

и“)СГ'1г0г-'гН1Л0">тг-'-гН|-г><^гпг''''-|-'

ННННгч1г\1г\1г\1гОгЛгОгО

"OfOLDOOOfNimNOfM'tNfflN'i^Cri

Время (условные единицы - такты внутреннего генератора операционной системы)

Рис. 3. Кривая изменения объема занимаемой памяти во время работы программы

РгК'аье В‘/155

БЭЛШ

Рис. 4. Объем занимаемой памяти (Private Bytes), отображаемый программой Process

Explorer

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

Следовательно, использование техники увеличения производительности посредством «кэширования» является нелинейным процессом [11]. Оно в ряде случаев может, вопреки ожиданиям, ощутимо снизить быстродействие всей программной системы. Поэтому перед внедрением необходимо проводить тестирование и анализ таких сложных систем.

ЛИТЕРАТУРА

1. Поляков A.A., Цветков В.Я. Прикладная информатика В 2-х частях: / Под общ.ред. А.Н. Тихонова. - М.: МАКС Пресс. 2008.

2. Anthony Williams, “C++ Concurrency in Action: Practical Multithreading”, Manning Publications, 2012.

3. Peter Pacheco. An Introduction to Parallel Programming. Morgan Kaufmann, 2011.

4. Мельников С.В. Диссипативные структуры типа "цикл" в ПО, существующем в режиме многопоточного выполнения исполняемого программного кода. II Современные проблемы науки и образования, 2012. - №6. - С.10.

5. Intel dreading building blocks home page [Электронный ресурс]. URL: http://threadingbuildingblocks.org/ (дата обращения: 15.04.2014).

6. Кудж С.А. Многоаспектность рассмотрения сложных систем II Перспективы науки и образования, 2014. - №1. - С.38-43.

7. Иванников А.Д., Кулагин В.П., Мордвинов В.А, Найханова Л.В., Овезов Б.Б., Тихонов А.Н. Цветков В.Я. Получение знаний для формирования информационных образовательных ресурсов. - М.: ФГУ ГНИИ ИТТ «Информика», 2008 -440 с.

8. Николис Г., Пригожин И. Познание сложного. Введение. - М.: Мир, 1990.

9. Соломенчук В., Соломенчук П. Железо ПК 2012. - СпБ.: БХВ-Петербург, 2008.

10. Мельников С.В. Обзор и применение отладочного интерфейса java (jdi) для обратимой модификации программных продуктов II RSDN Magazine, 2011. - №1. Москва:К-Пресс, 2011. С.3-8.

11. Синергетическая теория информационных процессов и систем / Иванников А.Д., Кулагин В.П., Миронов А.А., Мордвинов В.А., Сигов А.С., Тихонов А.Н., Цветков В.Я. / Учебное пособие / МГДД(Ю)Т, МИРЭА, ФГУ ГНИИ ИТТ «Информика» - М., 2010. - 455 с.

REFERENCES

1. Poliakov А.А., Tsvetkov V.Ia. Prikladnaia informatika V2-kh chastiakh / Pod obshch.red. A.N. Tikhonova [Applied Informatics In 2 parts / Edited by A.N. Tikhonov]. Moscow, MAKS Press. 2008.

2. Anthony Williams, “C++ Concurrency in Action: Practical Multithreading”, Manning Publications, 2012.

3. Peter Pacheco. An Introduction to Parallel Programming. Morgan Kaufmann, 2011.

4. Mel'nikov S.V. Dissipative structures such as "cycle" in the software that exists in the multithreaded mode executable code.

Sovremennye problemy nauki i obrazovaniia - Modern problems of science and education, 2012, no.6, p.10.

5. Intel dreading building blocks home page. Available at: http://threadingbuildingblocks.org/ (accessed 15 April 2014).

6. Kudzh S.A. tte aspects of consideration of complex systems. Perspektivy nauki i obrazovaniia - Perspectives of science and education, 2014, no.l, pp.38-43 (in Russian).

7. Ivannikov A.D., Kulagin V.P., Mordvinov V.A, Naikhanova L.V., Ovezov B.B., Tikhonov A.N. Tsvetkov V.Ia. Poluchenie znanii dlia formirovaniia informatsionnykh obrazovatel'nykh resursov [Gaining knowledge for the formation of educational information resources]. Moscow, Informika, 2008. 440 p.

8. Nikolis G., Prigozhin I. Poznanie slozhnogo. Vvedenie [Knowledge of the complex. Introduction]. Moscow, Mir, 1990.

9. Solomenchuk V., Solomenchuk P. Zhelezo PK2012 [PC 2012]. Saint Petersburg, BKhV-Peterburg, 2008.

10. Mel'nikov S.V. Review and application debugging java interface (jdi) for reversible modification of software products. RSDN

Magazine, 2011, no.l. pp.3-8.

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

11. Sinergeticheskaia teoriia informatsionnykh protsessov i sistem [Synergetic theory of information processes and systems]/ Ivannikov A.D., Kulagin V.P., Mironov A.A., Mordvinov V.A., Sigov A.S., Tikhonov A.N., Tsvetkov V.Ia. / Uchebnoe posobie [Tutorial]. Moscow, Informika, 2010. 455 p.

Information about the authors

Kudzh Stanislav Alekseevich

(Russia, Moscow)

Professor, Doctor of Technical Sciences. Rector. Moscow State Technical University of Radio Engineering,

Electronics and Automation E-mail: mirearecl@yandex.ru

Mel'nikov Sergei Viktorovich

(Russia, Moscow)

Graduate student of information systems Assistant of the Department of Informatics and information systems Moscow State Technical University of Radio Engineering, Electronics and Automation E-mail:Melnikov.Sergey.V@gmail.com

Информация об авторах

Кудж Станислав Алексеевич

(Россия, Москва)

Профессор, доктор технических наук, ректор. Московский государственный технический университет радиотехники, электроники и автоматики E-mail: mirearecl@yandex.ru

Мельников Сергей Викторович

(Россия, Москва)

Магистр информационных систем, ассистент кафедры ИИС Московский государственный технический университет радиотехники, электроники и автоматики E-mail: Melnikov.Sergey.V@gmail.com

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