Научная статья на тему 'Оптимизация распределения запросов между кластерами отказоустойчивой вычислительной системы'

Оптимизация распределения запросов между кластерами отказоустойчивой вычислительной системы Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
414
72
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ОПТИМИЗАЦИЯ / OPTIMIZATION / НАДЕЖНОСТЬ / RELIABILITY / ПЕРЕРАСПРЕДЕЛЕНИЕ ЗАПРОСОВ / REQUESTS REDISTRIBUTION / КЛАСТЕР / CLUSTER / ОТКАЗОУСТОЙЧИВОСТЬ / FAULT-TOLERANCE

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

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Богатырев Владимир Анатольевич, Богатырев Анатолий Владимирович, Голубев Иван Юрьевич, Богатырев Станислав Владимирович

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

QUERIES DISTRIBUTION OPTIMIZATION BETWEEN CLUSTERS OF FAULT-TOLERANT COMPUTING SYSTEM

Reliability assessment of distributed computing systems is proposed designed to redistribute requests flow at requests changes, failures and disconnections of system components combined into a set of clusters. Proposed and solved The problem of requests reallocation process optimizing between clusters, based on its impact on the delay of service and reliability, is proposed and solved.

Текст научной работы на тему «Оптимизация распределения запросов между кластерами отказоустойчивой вычислительной системы»

Литература

1. Титов А.В. Методика оценки надежности встроенных программных средств при редких отказах // Изв. вузов. Приборостроение. - 2010. - Т. 53. - № 10. - С. 38-41.

2. Ostrand T.J., Weyuker E.J. The distribution of faults in a large industrial software system // SIGSOFT Softw. Eng. Notes. - 2002. - V. 27. - № 4. - P. 55-64.

3. Ostrand T.J., Weyuker E.J., Bell R.M. Where the bugs are // SIGSOFT Softw. Eng. Notes. - 2004. - V. 29. -№ 4. - P. 86-96.

4. Chou A., Yang J., Chelf B. et al. An empirical study of operating systems errors // SIGOPS Oper. Syst. Rev. - 2001. - V. 35. - № 5. - P. 73-88.

5. Herder J.N., Bos H., Gras B. et al. Construction of a Highly Dependable Operating System // Proceedings of the Sixth European Dependable Computing Conference. EDCC '06. Washington, DC, USA: IEEE Computer Society. - 2006. - P. 3-12.

6. Leslie B., Chubb P., Fitzroy-dale N. et al. User-level Device Drivers: Achieved Performance // Journal of Computer Science and Technology. - 2005. - V. 20. - P. 654-664.

7. Kantee A. puffs - Pass-to-Userspace Framework File System // Proceedings of the AsiaBSDCon. - 2007. -P. 29-42.

8. Лав Р. Ядро Linux. Описание процесса разработки: Пер. с англ. - 3-е изд. - М.: Вильямс, 2013. - 496 с.

9. The VFS-FS protocol. MINIX 3 Developers Guide [Электронный ресурс]. - Режим доступа: http://wiki.minix3.org/en/DevelopersGuide/VfsFsProtocol, своб. Яз. англ. (дата обращения: 02.03.2013).

10. Traeger A., Zadok E., Joukov N., Wright C.P. A nine year study of file system and storage benchmarking // ACM Transactions on Storage (TOS). - 2008. - V. 4. - № 2. - P. 1-56.

11. Седжвик Р. Фундаментальные алгоритмы на C++. Части 1-4: Анализ/Структуры данных/Сортировка/Поиск: Пер. с англ. - Киев: Издательство «ДиаСофт», 2001. - 688 с.

12. Appleby A. Murmurhash v3 [Электронный ресурс]. - Режим доступа: http://sites.google.com/site/murmurhash/, свободный. Яз. англ. (дата обращения 16.03.2013).

13. Кнут Д.Э. Искусство программирования. Т. 3. Сортировка и поиск: Пер. с англ. - 2-е изд. - М.: Вильямс, 2000. - 832 с.

Иванов Евгений Юрьевич - Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, студент i@eivanov.com

Косяков Михаил Сергеевич - Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, кандидат технических наук, доцент, mkosyakov@gmail.com

УДК 004.738

ОПТИМИЗАЦИЯ РАСПРЕДЕЛЕНИЯ ЗАПРОСОВ МЕЖДУ КЛАСТЕРАМИ ОТКАЗОУСТОЙЧИВОЙ ВЫЧИСЛИТЕЛЬНОЙ СИСТЕМЫ В.А. Богатырев, А.В. Богатырев, И.Ю. Голубев, С.В. Богатырев

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

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

Введение

Повышение отказоустойчивости, надежности и производительности распределенных вычислительных систем, объединяющих в единую систему множество отдельных кластеров [1-3], достигается в результате динамического перераспределения запросов [4-7] между ними с учетом изменений загруженности кластеров, отказов и временных отключений их узлов.

В распределенной инфраструктуре [1-3], консолидирующей множество ресурсов, объединенных в кластеры, перераспределение запросов (нагрузки) может осуществляться между узлами как одного, так и различных кластеров, соединенных через сеть. При перераспределении запросов между кластерами увеличиваются издержки на взаимосвязь через сеть, но возрастают возможности балансировки загрузки и адаптации к отказам и отключениям узлов, что обусловливает актуальность оптимизации процесса распределения запросов [8, 9].

Задача оптимизации системы

Объектом исследования является распределенная вычислительная система (рис. 1), включающая М локальных кластеров и общедоступный кластер, объединяющий т серверов.

Рис. 1. Структура распределенной системы

В результате перераспределения запросов от локальных кластеров в общедоступный кластер обеспечивается сбалансированность нагрузки узлов системы и устойчивость системы к отказам и перегрузкам серверов локальных кластеров. Перераспределение запросов от некоторого локального кластера, содержащего в исходном (до отказов) состоянии п серверов, в общедоступный кластер осуществляется через N резервированных коммутационных узлов (маршрутизаторов или коммутаторов) [9].

При оптимизации структуры определяется число (кратность резервирования) серверов в локальных кластерах п и в общем кластере т, а также число коммутационных узлов N, обеспечивающие наибольшую надежность системы Р при заданных ограничениях на стоимость построения системы 5. При оценке надежности системы, в отличие от [9], где условие работоспособности системы сформулировано как требование сохранения в каждой подсистеме хотя бы одного узла, в предлагаемой работе учитываются нижние ограничения на число узлов в подсистемах, при которых не возникают перегрузки соответствующих кластеров.

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

д0, ц1. Будем считать известными вероятности г нахождения во включенном состоянии серверов общедоступного кластера. Оптимизация проводится при заданной интенсивности потока запросов X , поступающего в локальный кластер и при необходимости перераспределяемого через сеть в общедоступный кластер, на который от других кластеров системы через сеть дополнительно направляется поток запросов с интенсивностью Л = рХ.

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

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

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

Оценка надежности системы

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

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

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

Р = (1 - Р)

X ср (1 - р0)п

п+т

+р х(+и - dJcm )р (1 - Ро) -

(1)

где ^ = 1, если у < т, иначе у = 0; Р1 = Х С'ыр[ (1 - р1)" ' - вероятность исправности коммутационной

I=1

подсистемы, при этом из соображений отсутствия перегрузки кластеров значения а и Ь определяются как ближайшие целые, большие XV,, и X (1 + в р0.

Надежность узлов определим по коэффициентам готовности, вычисляемым для серверов и коммутационных узлов соответственно как [10, 11]

Ро = Д0/ ( + д0); Рх = д^ ( + Д1).

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

Р = (1 - Р)

X00(1 -Р0)п+ Р Xс-р0(1 -р0)п-' Xсуру(1 -р2)

где р2 = гр0. Для систем критического применения, не допускающих наличие узлов, отказ которых может вызвать отказ системы, в качестве базовых средств вычислений используются резервированные вычислительные комплексы [12]. Простейшая структура дублированного вычислительного комплекса (ДВК), скомплектованная из двух связанных через адаптер сопряжения (АС) полукомплексов, включающих процессоры (П) и модули памяти (М), представлена на рис. 2, а. Модель надежности ДВК, допускающего возможность совместной работы процессора и модуля памяти разных полукомплексов, сводится к хорошо изученной в теории надежности модели мостиковой схемы [10, 11], приведенной на рис. 2, б.

Надежность (коэффициент готовности) ДВК, в соответствии с моделью по рис. 2, б, вычисляется как Р0 = Ра (1 - (1 - Рр )2)(1 - (1 - Рм )2) + (1 - Ра ) (1 - (1 - РрРм )2), где при заданных интенсивностях отказов X , Xм, Xа и восстановлений д , дм, да процессора, памяти и

адаптера сопряжения соответственно имеем рр = др / (Xр + др), Рм = Дм /(Хм + Дм), Ра = Да / (Xа + Да).

В случае невозможности совместной работы процессоров и модулей памяти разных полукомплексов надежность ДВК вычислим как

Р0 = (1 - (1 - РрРм )2).

Процессоры Память а б

Рис. 2. Структура (а) и модель надежности (б) ДВК

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

Оптимизация структуры

При оптимизации структуры рассматриваемой вычислительной системы ищется число серверов п в локальных кластерах, число серверов т в общедоступном кластере и кратность резервирования N коммутационных узлов, обеспечивающие максимум надежности системы, Р = тах Р(т, п, N, g, X), при огра-

т, п, N, g

ничении стоимости 5 ее реализации (Мс0п + с1 N + с2т )< 5 , и условия стационарности функционирования узлов (отсутствия перегрузки узлов).

Поиск максимума P может основаться на переборе, реализуемом с использованием средств системы компьютерной математики Matchcad-15.

Целью оптимизации структуры может быть минимизация среднего времени пребывания запросов в системе [14] при ограничении средств s на ее построение, T = min T (т, n, N, g, X), при этом среднее

т, n, N, g

время пребывания запросов в системе вычисляется [9] как

T = ,

f > f

v0 +(1 - g) 2v1 + v0

1 g4 V n у 1 ((1 - g) + ß) 1 ((1 - g) + ß)Xv0 V N m

(2)

где (1 - g) - средняя доля запросов, перераспределяемых через сеть от локального кластера в общедоступный. При поиске оптимального g необходимо учитывать условие стационарного режима функционирования узлов (условие отсутствия перегрузки узлов) [9]:

gXv0

< 1 1л

((1 - g) + ß)2Xy < W((1 - g) + ß) Xv,

N

< 1

(3)

При необходимости оптимизация может быть проведена по мультипликативному критерию

r(m,n,N,g,X) = max (Р(т,n,N)/T(m,n,N,g,X)).

m, n, N, g

Оптимизация процесса перераспределения запросов

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

g

0,7

0,6

0,5

0,4

. \ ß=1

\ \ —

ß=0,5

0 0,2 0,4 0,6 0,8 1 1,2 X, 1/с Рис. 3. Оптимальная доля запросов, перераспределяемых через сеть

В результате оптимизации процесса распределения потока запросов, поступающего в локальный кластер, ищется их доля, перераспределяемая через сеть в общедоступный кластер, при которой минимизируется среднее время пребывания запросов T. T = minT(т, n, N, g, X), где при модернизации (2) и (3) имеем

T = g

'gH

n

1 -

g Ч)

n

f

+(1 - g)

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

2v,

1 ((1 - g ) + ß ) 1 ((1 - g )+ ß )

Nc \ ft

A f((1 - g ) + ß)2Xv, 1 f((1 - g ) + ß)Xv0 < 1 1л —-----< 1 л —-----

) N m

' \ c / \ c

mc

\

< 1

V 1 /V

при математических ожиданиях числа коммутационных узлов N и доступных исправных серверов общедоступного кластера, вычисляемых как

N (1 -pl)N-i, mc jCjpi(1 -p2T

j=1

'g4> <(( -g) + ß)2Ч < ^ f((1 -g) + ß)Xv( 1

< 1

N„

< 1

< 1

mc

Для примера проведем оптимизацию процесса распределения запросов при n = 8 шт., N = 5 шт., m = 23 шт.; v0 = 10 c, v1 = 1 c, r = 0,8; X0 = X2 = 10-4 1/ч, X1 = 0,5 10-4 1/ч; ц0 = ц1 = ц2 = 1 1/ч. Результаты поиска оптимальной доли (1 - g), распределяемых через сеть в общедоступный кластер запросов, в зависимости от интенсивности входного потока запросов X 1/с представлены на рис. 3 при ß = 0,5 и ß = 1. Рост доли неперераспределяемых запросов g при незначительной интенсивности X потока запросов объясняется влиянием дополнительных задержек при передаче запросов через сеть, а при значительной интенсивности X - перегрузкой общедоступного кластера.

Заключение

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

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

Работа выполнена на кафедре вычислительной техники НИУ ИТМО в рамках НИР «Разработка методов и средств системотехнического проектирования информационных и управляющих вычислительных систем распределенной архитектуры».

Литература

1. Таненбаум Э., Ван Стеен М. Распределенные системы. Принципы и парадигмы. - СПб: Питер. - 2003. - 877 с.

2. Clark T. The New Data Center. New technologies are radically reshaping the data center. - Brocade Bookshelf. San Jose, 2010. - 156 p.

3. Кармановский Н.С., Гатчин Ю.А., Терентьев А.О., Федоров Д.Ю., Беккер М.Я. Информационная безопасность при облачных вычислениях: проблемы и перспективы // Научно-технический вестник СПбГУ ИТМО. - 2011. - № 1 (71). - С. 97-102.

4. Богатырев В.А. К повышению надежности вычислительных систем на основе динамического распределения функций // Изв. вузов. Приборостроение. - 1981. - № 8. - С. 62-65.

5. Богатырев В.А. Распределение заданий в многомашинных вычислительных системах // Изв. вузов. Приборостроение. - 1986. - № 5. - С. 43-47.

6. Богатырев В.А. Надежность функционально-распределенных резервированных структур с иерархической конфигурацией узлов // Изв. вузов. Приборостроение. - 2000. - № 4. - С. 67-70.

7. Богатырев В.А. Надежность вычислительных систем с функциональной реконфигурацией на основе перераспределения задач // Информационные технологии. - 2001. - № 7. - С. 22-27.

8. Богатырев В.А., Богатырев С.В. Объединение резервированных серверов в кластеры высоконадежной компьютерной системы // Информационные технологии. - 2009. - № 6. - С. 41-47.

9. Bogatyrev V.A., Golubev I.Y., Bogatyrev S.V. Optimization and the Process of Task Distribution between Computer System Clusters // Automatic Control and Computer Sciences. - 2012. - V. 46. - № 3. - P. 103111.

10. Гуров С.В., Половко А.М. Основы теории надежности. - СПб: БХВ-Петербург, 2006. - 704 с.

11. Черкесов Г.Н. Надежность аппаратно-программных комплексов. - СПб: Питер, 2005. - 479 с.

12. Bogatyrev V.A. Exchange of Duplicated Computing Complexes in Fault tolerant Systems // Automatic Control and Computer Sciences. - 2011. - V. 46. - № 5. - P. 268-276.

13. Богатырев В.А., Башкова С.А., Беззубов В.Ф., Голубев И.Ю., Котельникова Е.Ю., Полякова А.В. Надежность дублированных вычислительных комплексов // Научно-технический вестник СПбГУ ИТМО. - 2011. - № 6. - С. 74-78.

14. Алиев Т.И. Основы моделирования дискретных систем. - СПб: СПбГУ ИТМО, 2009. - 363 с.

i=1

АЛГОРИТМ И ПРОГРАММА ПОИСКА И ИССЛЕДОВАНИЯ М-МАТРИЦ

Богатырев Владимир Анатольевич - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, доктор технических наук, профессор, Vladimir.bogatyrev@gmail.com Богатырев Анатолий Владимирович - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, аспирант, gangleon@gmail.com Vladimir.bogatyrev@gmail.com Голубев Иван Юрьевич - Санкт-Петербургский национальный исследовательский университет

информационных технологий, механики и оптики, аспирант, www.golubev@mail.ru

Богатырев Станислав Владимирович - ООО «Айти Хаус», главный инженер; Санкт-Петербургский национальный исследовательский университет информационных технологий, механики и оптики, аспирант, realloc@gmail.com Vladimir.bogatyrev@gmail.com

УДК 004.421

АЛГОРИТМ И ПРОГРАММА ПОИСКА И ИССЛЕДОВАНИЯ М-МАТРИЦ

Ю.Н. Балонин, М.Б. Сергеев

Рассматриваются алгоритм и программный комплекс поиска и исследования матриц ортогональных базисов - минимаксных матриц (М-матриц). Приведена схема алгоритма, даны комментарии к блокам расчета, пояснен интерфейс программного комплекса MMatrix, разработанного с участием авторов статьи. Результатом работы универсального алгоритма являются матрицы Адамара, матрицы Белевича (С-матрицы, conference matrices) и матрицы, дополняющие указанные и близкие к ним по свойствам четных и нечетных порядков, в частности, матрица 22-го порядка, для которого С-матрицы не существует. Приведены примеры портретов найденных альтернативных матриц 255-го и 257-го порядков, отвечающих последовательностям чисел Мерсенна и Ферма. Пояснен новый путь получения матриц Адамара, отличный от ранее известных переборных процедур и процедур, опирающихся на вычисление символов Лагранжа, имеющий теоретическое и прикладное значения.

Ключевые слова: ортогональные матрицы, М-матрицы, матрицы Адамара, матрицы Мерсенна, матрицы Ферма, численные методы, алгоритм вычислений.

Введение

Для применения в процедурах построения помехоустойчивых и защитных кодов, в маскировании информации необходимы оригинальные ортогональные базисы [1, 2], поиск которых возможен в исследовательской программной среде. В настоящей работе описывается программный комплекс MMatrix, разработанный с участием авторов специально для этой цели и зарегистрированный под названием «Программа поиска М-матриц» [3]. Научная концепция построения матриц ортогональных базисов, обладающих экстремальными минимаксными свойствами, рассмотрена в работах [4-7].

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

С появлением вычислительных средств преимущества, которые предполагают вычисления со столь просто устроенными матрицами, обеспечили серьезный интерес к исследованию матриц Адамара -именно так они были названы. К последовательности матриц порядков 2, 4, 8, 16, 32 и т.п., порождаемых процедурой удвоения порядка от 1, предложенной еще Сильвестром, Адамар добавил еще две стартовые матрицы пропущенных порядков 12 и 20. Процесс нахождения таких матриц плохо поддается формализации, компьютерный поиск отчасти подтвердил гипотезу Адамара, но порядок матрицы, подлежащий проверке, не превышает пока тысячи. Дальнейший прогресс в этом направлении возможен при включении в область исследований матриц с элементами нескольких значений, в том числе и пропущенных нечетных порядков включительно.

Минимаксные ортогональные матрицы (М-матрицы)

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

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