Измерение текущего быстродействия процессоров и качества программ. Способы оценки и повышения реальной производительности

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

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

Для сети с композицией «произведение» проблема попадания в локальный минимум решается с помощью введения момента. Для сетей с композицией «минимум» данная модификация неэффективна.

Литература

1. Алексеев А.Н., Волков Н.И., Кочевский А.Н. Элементы нечеткой логики при программном контроле знаний // Открытое образование. - 2004. - № 4.

2. Рогозин О.В. Выбор инструментальных средств анализа качественных характеристик программного обеспечения в области образования, как объекта инвестиций // Открытое образование. - 2009. - № 3.

3. Смирнова Г.Н., Сорокин А.А., Тельнов Ю.Ф. Проектирование экономических информационных систем: Учебник. - М., 2001.

4. Тельнов Ю.Ф. Интеллектуальные информационные системы в экономике. - М., 2001.

5. Тихомиров В.П., Кондратьев В.К., Филинов Е.Н., Бойченко А.В. Открытые информационные системы дистанционного обучения - основа открытого образования // Открытое образование. — 2001. —№ 3.

ИЗМЕРЕНИЕ ТЕКУЩЕГО БЫСТРОДЕЙСТВИЯ ПРОЦЕССОРОВ И КАЧЕСТВА ПРОГРАММ. СПОСОБЫ ОЦЕНКИ И ПОВЫШЕНИЯ РЕАЛЬНОЙ ПРОИЗВОДИТЕЛЬНОСТИ

Д.А. Суворов, вед. инженер Тел.: (905) 196-98-75; E-mail: svs112@list.ru Филиал ФГУП «РТРС» Нижегородский областной РТПЦ http://www.nortpc.ru

The article is devoted to the problem of discrepancy of the quality of a program code and the architecture of modern processors that results in a low degree of realization of their peak speed at the performance of applications. The creation of multinuclear processors makes the problem worse, because it is not solved for a single kernel. The technique, means of estimation and ways of increase of real productivity of a low productivity code on the system level is offered.

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

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

Keywords: direct measurement, real productivity, current speed activity, quality of programms, code efficiency, system productivity, proprietary and free software.

Реальная производительность программно-аппаратных решений остается актуальной с момента создания первых ЭВМ по настоящее время. Развитие технологического процесса по серийному производству процессоров до 45 нм позволила увеличить частоту работы вентилей до 300 Ггц, что дало возможность выполнять современным многоядерным процессорам несколько десятков миллиардов инструкций в секунду. Однако в архитектуре современных вычислительных систем существуют как технические диспропорции, вызванные отставанием от процессоров скорости работы основной памяти, так и программные - несоответствие структуры программ и данных иерар-

хии памяти современных вычислительных систем. Как следствие, миллиардное быстродействие современные компьютеры демонстрируют на тестах, не имеющих отношения к реальной обработке данных.

В 2008 г. достигнуто быстродействие 1Pflops на тесте Linpack на кластере Roadrunner c гибридной структурой из 18360 процессоров AMD и IBM (116 640 процессорных ядер) в Лос-Аламосской национальной лаборатории, разработанного в рамках программы DARPA HPSC[1]. В США c 2002 по 2010 г. реализуется программа DARPA HPSC развития и создания стратегических суперкомпьютеров в интересах национальной безопасности, результаты которой не должны попасть в коммерческий сегмент. В программе одним из «краеугольных камней» является повышение реальной производительности в 10-40 раз по сравнению с существующими системами. Roadrunner использует операционную систему Red Hat Enterprise Linux, данные о его реальной производительности отсутствуют. Уход из проекта DARPA HPSC ее отцов-основателей, Бартона Смита и Томаса Стерлинга, ставит под сомнение достижение основных целей проекта.

Существующие средства профилирования программных продуктов являются инструментами разработчика и не доступны пользователю, поскольку требуют наличия в отлаживаемом коде трассировочной информации об операторах языка высокого уровня, на котором написано приложение. Пользователь не располагает исходными текстами программ разработчика и всестороннее профилирование провести не может. В зависимости от разработчика профилировщики имеют точность до функции, оператора языка высокого уровня, команды процессора, микрооперации. Наиболее точными в этом смысле являются профилировщики от производителей процессоров Intel VTune Perfomance Analyzer (рис.1.) и AMD Code Analyst, которые могут иметь эмуляторы процессора до микрооперации.

Профилироваться может модуль, функция, цикл, часть приложения, и режим профилирования (многократные прогоны) отличается от режима естественного исполнения кода. Объем профилируемого кода всегда ограничен, и сам процесс профилирования вносит возмущения в профилируемый процесс. Целью профилирования является оптимизация «горячих точек» конкретной программы, где она находится большее время, и сводится к сокращению количества команд в «горячих точках» с применением алгоритмической оптимизации и уменьшения штрафных циклов («пенальти») со стороны аппаратной платформы на микроархитектурном уровне. Профессиональные профилировщики не предназначены для оценки производительности системы в целом, для тестирования загрузки и по экономическим соображениям недоступны рядовым пользователям (стоимость Intel VTune Perfomance Analyzer превышает 700$).

Стандартные средства мониторинга производительности современных операционных систем «на ходу» не предоставляют информацию о реальной производительности ядра операционной системы и приложений пользователя. Из доступных показателей производительности пользователю предоставлена загрузка процессора (ов), которая представляет собой период занятости процессора на временном промежутке. С какой

скоростью работает процессор, когда он не стоит, можно только догадываться. Методика заме-

ра теста Linpack не является непосредственной и не измеряет количество выполненных команд непосредственно на процессоре, а предполагает, что за время исполнения теста процессор выполнил расчетное количество команд из исходного текста. Сколько команд содержит исполняемый файл после трансляции исходного текста транслятором, можно узнать только непосредственным измерением на этапе исполнения. Большинство тестов являются «расчетными», демонстрируют максимальные значения из тестируемой выборки и сами не обрабатывают данные с такой средней скоростью, которая предъявляется в качестве результата.

Вообще разработка тестового программного обеспечения может быть вынесена в отдельную тему, поскольку для сопоставимости различных платформ тесты должны удовлетворять жестким условиям и отличаться от обычных приложений. В терминах современных технологий профилирования это относится к проблеме программного и аппаратного непостоянства времени исполнения [2]. В настоящее время существующие тестовые программы можно назвать универсальными для различных платформ в одном-двух случаях из ста.

Автором разработана методика и инструментальные средства непосредственного измерения текущего быстродействия и качества программ для процессоров х86 серии и программных продуктов, функционирующих под управлением операционных систем Windows на одной из платформ процессоров Intel с использованием внутренних машинно-зависимых счетчиков процессора (MSR) - монитор реальной производительности SPEEDPROGRAF. Принципиальная необходимость непосредственных измерений вызвана как решением проблемы программного и аппаратного непостоянства времени исполнения кода, так и учетом влияния всех программных продуктов, драйверов, системных служб и виртуальных сред, о существовании которых на своем компьютере пользователь может и не догадываться.

Методика имеет принципиальные отличия от традиционных способов оценки производительности приложений, не имеет «белых пятен» в виде программной и аппаратной неопределенности и разделяет оценку реальной производительности на два принципиальных момента: техническое быстродействие и продуктивность кода [3] по обработке данных, как ядра (средств виртуализации), так и приложения пользователя. Некоторые положения методики не зарегистрированы в органах патентной собственности, отсутствуют в учебниках для студентов по информационным технологиям и являются «ноу-хау» автора. Монитор реальной производительности SPEEDPROGRAF разработан совместно с Р.А.Филипповым.

Монитор реальной производительности SPEEDPROGRAF позволяет непосредственно оценивать указанные выше параметры «на ходу», не вникая в предметную область и функционал приложения, ранжировать приложения и операционные системы (средства виртуализации) по реализуемому быстродействию процессоров и продуктивности программного кода и достоверно оценивать возможности по повышению реальной производительности приложения и операционной системы. Монитор SPEEDPROGRAF доступен для использования не только разработчикам и тестировщикам программ, но и рядовому пользователю ПК, не имеющему специальных знаний в области оценки производительности. Монитор SPEEDPROGRAF реализует право потребителей программных продуктов на объективное предоставление информации об их качестве, о чем производители самостоятельно не всегда сообщают потребителю, а иногда намеренно замалчивают.

В настоящее время инструментальные средства могут быть разработаны для других платформ Intel и AMD.

Режим ядра операционной системы реализует 2-5% пиковой производительности процессора по обработке данных (index real productivity на рис.2). Индекс реальной производительности не включает в себя собственно загрузку процессора, поэтому реальная производительность во времени будет меньше на коэффициент загрузки процессора (CPU usage, %).

Пользовательские приложения реализуют 3-10% пиковой У1 У2 У производительности процессора по обработке данных (рис.3).

Рис. 4. «Отсечение» функции Тесты реализуют пиковую производительность процессо-

принадлежн0сти по уровню ра по обработке данных на 10-50% (рис. 4).

Продуктивность кода (Code usage % - доля команд, обрабатывающих данные) при этом составляет 20-30% для функций операционных систем, 30-50% для приложений и 20-95% для тестов.

х8б процессор. Щйайююй Реализуемое быстродействие % Эффе5СТИ*НйСТ1. кода % Индекс реальней производительности % Улучшение от исходного качества раз

Исходное качество ПО ОС 5-10 20-30 1-3

Пркяожекия 10.25 30-50 3-10

Доработка ОС ОС 10 «1-90 3-9 3

Пргаожекмя 10-25 ¿0-90 6-20 3

Пределигс допустимые зн&ченпх ОС 20-50 ¿0-90 20-45 15-20

Приложения 30-90 ¿0-90 20-80 6-8

Рис. 5. Факторы, влияющие на индекс реальной производительности

х? 6 процессор. Реализуемое бмстродейс твие % Эффмзи&носль кода % Индекс регга-ной протоводеиегеко ггл % Улучшение от неходкого к-ачества р4Э

Исходное качество ПО ОС 5-10 5-10 0,25-1

Приложения 10-25 15-25 1,5-6

Доработа» ОС ОС 5-10 60-90 3-9 9-12

ПрМЛОЖётИ 10-25 60-90 6-24 4

Предельно допустимые ОС 20-50 Я)-90 20-15 45-48

зкачемш Приложения 30-90 ¿0-90 20-20 12.13

Рис. 6. Факторы, влияющие на индекс реальной производительности

вРЕЕВРКООИАЕ

СорлпяЫ СФ Яотап ПКрроу, ПтИп 5июго\' 1992-2005 Рис.7.

Скорость исполнения инструкций (CPU rate,%(instructions) - текущее быстродействие процессора) составляет 5-10% от пикового быстродействия процессоров для операционных систем, 10-25% для приложений и 20-90% для тестов.

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

Фактически SPEEDPROGRAF измеряет системную производительность приложения в среде исполнения. Данные SPEEDPROGRAF-а не отражают «внутреннюю» продуктивность приложений и операционной системы, которая может быть уточнена дополнительным анализом предметной области кода, в результате чего реальная исходная продуктивность кода в может оказаться в несколько раз ниже приведенной, а возможные масштабы улучшения производительности соответственно в несколько раз выше. Автор располагает методикой анализа «внутренней» продуктивности кода с использованием монитора реальной производительности SPEEDPROGRAF. Для исследования цикла обработки в самом приложении могут использоваться и стандартные профилировщики программ от производителей процессоров Intel и AMD и сторонних производителей, например Intel VTune Analyzer.

На Рис. 6 приведена оценка сверху возможностей и прогноз повышения реальной производительности за счет разных факторов с учетом «внутренней» продуктивности кода.

Компания IBM на своих семинарах по продвижению сервис-ориентированной архитектуры бизнес-приложений (SOA) в качестве рекламы своего продукта WebSphere приводит данные по сравнительной производительности решений от IBM, ORACLE и Microsoft по обработке транзакций в секунду серверами от Web-клиентов: 30, 10 и 3 транзакции в секунду соответственно. Разница между решениями лежит в области «внутренней» продуктивности приложений и достигает порядка. Системная производительность всех решений практически одинакова и далека от совершенства как минимум на порядок. В частности, компаниям Microsoft и IBM давно известно о разработках автора, но они до сих пор не откликнулись на предложение по доработкам системной производительности кода операционных систем и приложений.

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

Автор готов провести углубленные исследования и оценки по своей методике серверных приложений Web, Proxy, почтовых серверов, IP-тоннелей, JAVA-машин и машин поиска, эмуляторов языка HTML (Perl, PHP и др.), аудио- и видео-кодеков мультимедийных приложений, баз данных MS-SQL, ORACLE и других, различных систем виртуализации с предоставлением заинтересованными организациями тестируемого программного обеспечения и аппаратной платформы.

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

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

Автор ищет партнера или спонсора для разработки макета высокопродуктивной операционной системы на базе СПО (Linux) для убедительной демонстрации предлагаемых способов повышения системной производительности кода, обладающего низкой исходной продуктивностью. Предлагаемые способы не зарегистрированы в органах патентной собственности и могут быть зарегистрированы в дальнейшем на взаимовыгодной основе. Без реализации указанных

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

Автор располагает Актом о реализации указанных принципов повышения реальной производительности в четырех вычислительных системах реального времени предыдущих поколений с эффектом от двух раз.

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

Как самостоятельный программный продукт автор может предложить монитор реальной производительности SPEEDPROGRAF, созданный по желанию заказчика для различных аппаратных и программных платформ (рис. 7).

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

Литература

1. Фролов А., Семенов А., Корж А., Эйсымонт Л. Программа создания перспективных суперкомпьютеров // Открытые системы. - 2007. - № 9. - C. 20-29.

2. Касперски К. Техника оптимизации программ. Эффективное использование памяти. - СПб.: БХВ-Петербург, 2003. - 464 с.

3. Суворов Д. А. Роль организации вычислений в реализации потенциала современных компьютеров // Матер. междунар. конф. «Наука и наше будущее: идеи, которые изменят мир» / ГГМ им. .И.Вернадского РАН. - М., 2004. - С. 186-187.

ОЦЕНКА ИНТЕЛЛЕКТУАЛЬНОЙ СОСТАВЛЯЮЩЕЙ СОЦИАЛЬНО-ЭКОНОМИЧЕСКИХ СИСТЕМ

Н.В. Новожилова, к.э.н., доц., зав. каф.

Тел.: (8352) 42-67-95; E-mail: mallin@mail.ru В.Х. Федотов, к.х.н., доц.

Тел.: (8352) 42-67-95; E-mail: fvh@inbox.ru Кафедра Информационных систем Чувашский госуниверситет им. И.Н. Ульянова http://www.chuvsu.ru

The method is designed to, calculate some features of intellectual component of social-economic systems, which can be used as measures of their information evolution.

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

Ключевые слова: интеллект, взаимодействие, мера, информационное общество, эволюция.

Keywords: intellect, connection, measer, information society, evolution.

Прогресс в развитии социально-экономических систем (СЭС) связан с представлениями об их интеллектуальности. В конце 2008 г. Президент России Д. Медведев подписал Указ о создании Совета по развитию информационного общества в России для организации взаимодействия федеральных и региональных органов власти, научных и других организаций в области развития информационного общества в РФ. В задачи Совета входит изучение проблем развития информационного общества (ИО), определение способов и форм их решения, оценка эффектив-