Опубликован: 11.12.2006 | Доступ: свободный | Студентов: 5820 / 381 | Оценка: 4.42 / 3.86 | Длительность: 57:15:00
Лекция 6:

Планирование мощности системы

Планирование мощности процессора

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

  • Проектирование приложения и схемы базы данных завершены.
  • При целевом установившемся режиме мощность центрального процессора будет использоваться не более чем на 75%.
  • Ожидаемый процент удачных обращений к кэшу должен составлять не менее 90%.
  • Ни один из дисковых накопителей не используется более чем на 85% как по объему занятого места, так и по производительности ввода-вывода.
  • Сервер обслуживает только базу данных.
  • Операции ввода-вывода распределены по всем дисковым накопителям.

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

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

Как вы уже поняли, всегда предпочтительным является предварительное планирование для периода пиковых нагрузок, потому что оно соответствует наихудшему сценарию развития событий, а мы могли бы создать такую систему, которая выдержала бы это. К сожалению, в большинстве случаев, необходимая для этого информация недоступна, поэтому остается довольствоваться информацией, полученной для установившегося режима. Чтобы получить более глубокое понимание обрабатываемых транзакций, мы должны разобраться во внутреннем устройстве ("анатомии") транзакций, в их "профиле", что поможет нам подсчитать количества генерируемых чтений и записей, благодаря чему мы сможем спрогнозировать ожидаемую нагрузку на центральный процессор. Эту информацию можно получить из бесед с проектировщиками базы данных и проектировщиками приложений. Сначала надо узнать, сколько транзакций каждого типа будут проходить через систему, а затем надо определить количество генерируемых операций чтения и записи. Так будет рассчитана оценка нагрузки на центральный процессор.

Для уже работающих систем пользователи могут определить профили транзакций, запуская транзакции по одной за раз и следя за ними через Performance Monitor (чтобы определить количество генерируемых операций чтения и записи). Эта "натурная" информация может применяться для подбора скорости, типа и количества используемых центральных процессоров.

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

Отказоустойчивость

Сейчас большинство компьютерных фирм добиваются отказоустойчивости при помощи поддержки технологии RAID (Redundant Array of Independent Disks, "массивы независимых дисковых накопителей с избыточностью"). (О технологии RAID см. "Конфигурирование и планирование подсистемы ввода-вывода" .) Запомните, что чаще всего применяются следующие уровни RAID:

  • RAID 0. Дисковые накопители без дублирования.
  • RAID 1. Зеркальное дублирование дискового накопителя.
  • RAID 5. Несколько дисковых накопителей с расслоением данных.

Так как в RAID 0 не применяется дублирование данных, то для них достаточно одиночного повреждения – при отказе дискового накопителя вы потеряете данные на нем и, следовательно, во всей базе данных. Схема массива RAID 0 показана на рис. 5.9. В RAID 1 обеспечивается зеркальное дублирование диска базы данных. При отказе какого-либо дискового накопителя остается резервный накопитель, весь заполненный данными, такими же, какие были и на отказавшем дисковом накопителе. Если вы решите применять массивы RAID 1, то можно воспользоваться достоинствами параллельного поиска (split seek, см. "Конфигурирование и планирование подсистемы ввода-вывода" ), благодаря которому система может выполнять поиск данных одновременно сразу на двух дисковых накопителях, что значительно повышает скорость поиска и, следовательно, уменьшает время отклика для транзакций. Схема массива RAID 1 показана на рис. 5.10.

Выбор уровня RAID непосредственно влияет на количество операций дискового ввода-вывода, т.к. разные уровни RAID отличаются количеством записей на диски. Например, для RAID 1 по сравнению с RAID 0 требуется в два раза больше записей на диск. Если пользователь задаст транзакцию, требующую 50 чтений и 10 записей, то при использовании RAID 1 количество записей вырастет до 20.

Если конфигурация RAID 0 имеет два дисковых накопителя, то равноценная конфигурация RAID 5 должна иметь три дисковых накопителя. В конфигурациях RAID 5 применяется слой данных (stripe), содержащий информацию о данных на двух других накопителях, который может быть использован для восстановления данных с отказавшего диска. Схема массива RAID 5 показана на рис. 5.11. Эта схема защиты базы данных хороша и по показателям производительности и по цене. Каждая запись в RAID 5 удваивает количество чтений и количество записей для каждой обрабатываемой транзакции, потому что каждая транзакция должна быть записана на два диска – должен быть прочитан слой контроля по четности, изменен в соответствии с новыми данными, а затем снова записан. Эта избыточность несколько увеличивает длительность времени отклика.

Чтобы рассчитать количество операций ввода-вывода для различных уровней RAID, можно воспользоваться следующими формулами:

Для RAID 0:

количество операций ввода-вывода = (количество чтений на одну транзакцию) + 
+(количество записей на одну транзакцию)

Если транзакция содержит 50 чтений и 10 записей, то общее количество операций ввода-вывода для уровня RAID 0 будет равно 60.

Для RAID 1:

количество операций ввода-вывода = 
(количество чтений на одну транзакцию) + 
(2 х [количество записей на одну транзакцию])

Если транзакция содержит 50 чтений и 10 записей, то общее количество операций ввода-вывода для уровня RAID 1 будет равно 70.

Для RAID 5:

количество операций ввода-вывода = 
3 х (количество операций ввода-вывода на одну транзакцию)

Если транзакция содержит 50 чтений и 10 записей, то общее количество чтений будет равно 150, а общее количество записей будет равно 30. Общее количество операций ввода-вывода для уровней RAID 5 будет равно 180.

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

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

загруженность центрального процессора = 
(темп ввода-вывода) х (время обслуживания) х 100

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