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

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

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

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

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

Рассчитывая объем памяти, нужной для вашей системы, вы также должны учесть такие характеристики, как желательную частоту удачных обращений к кэшу и обращений к отсутствующим страницам. Рассмотрим типичный сценарий: вы участвуете в проектировании системы для сервера базы данных, которая будет применяться для заказов в режиме реального времени, и вам надо знать количество одновременно работающих пользователей, из-за которых возникает рабочая нагрузка. Эта информация поможет вам определиться с необходимым вам объемом оперативной памяти. Например, вы знаете, что в каждый момент времени с системой будут одновременно работать 50 пользователей. Для такой системы вам потребуется 25 Мб памяти только для пользователей.

Примечание. Обычно для каждого из пользователей требуется выделять по 500 Кб памяти, потому что эта память необходима для теневого процесса (shadow process) пользователя. Теневой процесс – это пользовательский процесс, который имеется для каждого из пользователей системы.

Затем вам надо знать, какую операционную систему вы будете применять. В нашем случае эта операционная система – Microsoft Windows 2000, для которой нужно 20 Мб памяти. Поэтому теперь вам понадобится уже 45 Мб памяти. Вам также надо будет узнать размер программы базы данных, которая будет у вас работать, в нашем случае – Microsoft SQL Server, для которого нужно 5,5 Мб памяти. Итого теперь требуется 50,5 Мб памяти.

И последняя информация, которая вам понадобится, – размер области памяти для обработки базы данных. Эта область состоит из двух элементов: области журнала и кэша базы данных. Область журнала содержит информацию о выполняющихся действиях записи. Эта область очень важна, потому что в случае сбоя системы во время исполнения транзакции в ней сохранится информация для восстановления образа данных перед транзакцией, т.е. образа базы данных, бывшего до того, как произошел сбой. Область журнала имеет также названия "аудиторский след", "контрольный журнал" (audit trail).

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

Для расчета размера кэша воспользуйтесь следующей формулой:

размер кэша  =  (размер блока кэша) х (количество блоков в кэше)

Размер блока кэша – это объем данных, передаваемых при одной операции ввода-вывода. Помните, что в SQL Server уже задан стандартный размер блока кэша, равный 8 КБ. Количество блоков в кэше – это просто выбираемый вами размер кэша (в блоках). Для систем оперативной обработки транзакций (OLTP) размер блока следует выбирать поменьше, потому что объем передаваемых данных – небольшой, а чем меньше объем передаваемых данных, тем меньше будет и время, необходимое для исполнения транзакции. В системах поддержки принятия решений (DSS) размер блока должен быть гораздо больше, потому что объем передаваемых данных будет гораздо больше, из-за чего уменьшится количество операций ввода-вывода.

Примечание. Никакая настройка размера кэша не может гарантировать успешность обращений к кэшу от 90% и выше. Есть хорошее практическое правило, согласно которому для малых систем надо иметь кэш размером около 25 Мб, для систем среднего размера – 70 Мб, а для больших систем – 215 Мб. Для систем с очень большими базами данных (около 300 Гб) для получения желаемого процента попадания в кэш понадобится кэш объемом около 3 Гб.

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

минимальная память = (системная память) + (пользовательская память) + 
  +(память процесса базы данных)

Здесь системная память – это объем памяти, необходимой для операционной системы и SQL Server, пользовательская память – это по 500 Кб памяти, выделяемых каждому из одновременно работающих пользователей, а память процесса базы данных – это память, необходимая для журнала и кэша.

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

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

Примечание. Следует стремиться приблизить успешность попаданий в кэш к 100%, насколько это возможно (и этот показатель не должен быть меньше 90%).
Сбор данных об использовании памяти

После того как система, для которой производилось предварительное планирование, будет сконфигурирована и настроена, вам надо будет методично собирать данные об использовании ее памяти. Эти данные можно использовать для проверки соответствия созданной вами системы требованиям соглашения об уровне обслуживания, таким как время отклика или загруженность памяти и центрального процессора. Данные можно собрать при помощи просто Microsoft Performance Monitor (Монитора производительности) для среды Microsoft Windows NT.

Примечание. В Microsoft Windows 2000 "монитор производительности" называется не Performance Monitor, а System Monitor.

Помните, что данное исследование является анализом для планирования производительности и поэтому должно производиться достаточно долго. Измерения будут длиться часами (в большинстве случаев – 24 часа), и интервал измерений тоже должен быть установлен равным 24 часам. Для задач планирования производительности нужно заносить в базы данных о производительности по одной записи в сутки. Критерии производительности, называющиеся счетчики (counters), выбираемые вами для мониторинга, будут усредняться по интервалам измерений. Счетчики для планирования мощности памяти, находятся в объекте Memory (в "мониторе производительности" объектом называется набор счетчиков).

Примечание. Чтобы запустить Performance Monitor (Монитор производительности) нажмите сначала мышью на экранную кнопку Start. Затем выберите Programs, Administrative Tools (Common) и Performance Monitor. В окне Performance Monitor в меню Edit выберите Add To Chart (Добавить к схеме). Диалоговое окно Add To Chart может применяться для выбора объектов и счетчиков, которые нужно отслеживать. Для получения дополнительной информации нажмите на кнопку Help в окне Performance Monitor.

Среди счетчиков монитора производительности имеются следующие:

  • Page Faults/sec. В этом счетчике содержится среднее количество обращений к отсутствующим страницам за одну секунду. Помните, что обращения к отсутствующим страницам происходят, когда вы запрашиваете страницу с программным кодом или с данными, отсутствующую в рабочей или в резервной (standby) памяти.
  • Cache Faults/sec. В этом счетчике содержится среднее количество неуспешных обращений к кэшу, происходящих в системе за одну секунду. Помните, что неуспешные обращения к кэшу происходят всякий раз, когда Cache Manager не находит страницу файла непосредственно в кэше.
  • Pages/sec. В этом счетчике содержится среднее количество страниц, прочитанных с диска или записанных на диск системой за одну секунду. Этот счетчик является суммой двух других счетчиков – Pages Input/sec и Pages Output/sec. В нем содержится информация о трафике обращений к страницам, выполняемым в интересах доступа кэша системы к данным файлов для приложений и чтения/записи страниц в/из файлов памяти, не имеющимся в кэше. Пользуйтесь этим счетчиком, если вас беспокоит чрезмерная нагрузка на память (это явление называется пробуксовка, thrashing), что может привести к чрезмерной подкачке страниц.
  • Available Memory. Этот счетчик содержит информацию об объеме неиспользуемой памяти, оставшейся в системе. Эта память может использоваться как дополнительная память для базы данных или для системных нужд. Available Memory является наиболее важным счетчиком, применяемым для планирования памяти.
Примечание. Счетчик Available Memory можно просматривать в окне монитора производительности Performance Monitor в составе объекта Memory. Кроме того, в мониторе производительности Windows 2000 Server этот счетчик представлен трижды: Available Bytes, Available Kbytes, Available Mbytes. Также он доступен из Task Manager’а (Диспетчер задач), если открыть вкладку Performance и наблюдать за доступной памятью в течение периода пиковой нагрузки. (Чтобы получить доступ к Task Manager, нажмите правой кнопкой мышки на панель задач и выберите Task Manager в контекстном меню.)

Вам следует хотя бы включить в общий процесс сбора данных для планирования мощности, наблюдение за счетчиками Available Memory и Page Faults/sec.

Анализ данных о памяти

После сбора данных их можно отобразить в графической форме, чтобы предсказать, какими они станут в будущем. График на рисунке 6-4 показывает пример упреждающего анализа. В этом примере показаны данные о свободной памяти, собранные с 22 октября 1999 года по 14 января 2000 года. При помощи Microsoft Excel эти данные были нанесены на график и построена линия тренда. Зубчатая линия обозначает историю фактического использования памяти, а прямая линия обозначает линейный тренд использования памяти. Как видите, этот анализ предсказывает, что 18 февраля 2000 года у системы останется менее 6% свободной памяти.

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

Объем свободной памяти (линейная закономерность)

Рис. 6.4. Объем свободной памяти (линейная закономерность)
Обращения к отсутствующим страницам (линейная закономерность)

Рис. 6.5. Обращения к отсутствующим страницам (линейная закономерность)

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

Анатолий Федоров
Анатолий Федоров
Россия, Москва, Московский государственный университет им. М. В. Ломоносова, 1989
Игорь Соловьев
Игорь Соловьев
Россия, Братск