СПОСОБ АВТОМАТИЧЕСКОГО ОПРЕДЕЛЕНИЯ ОПТИМАЛЬНОГО РАЗМЕРА ОКНА ОПЕРЕЖАЮЩЕГО СЧИТЫВАНИЯ В СРЕДСТВАХ МОНИТОРИНГА
METHOD FOR AUTOMATIC DETERMINATION OF OPTIMUM ADVANCE READING WINDOW SIZE IN MONITORING ENVIRONMENTS

Изобретение относится к области обработки данных в вычислительных системах, а именно к способам автоматического определения оптимального размера окна опережающего считывания в средствах мониторинга, и может быть выполнено в виде части средства мониторинга или в виде отдельного модуля для оптимизации характеристик файловой системы вычислительной системы.
В современных вычислительных системах применение высокопроизводительных дисковых накопителей сталкивается с серьезной проблемой. Как правило, выполнение процессов ввода/вывода данных с дискового накопителя занимает гораздо меньше времени по сравнению с процессами перемещения механических частей дискового накопителя в место расположения данных. Для минимизации временных задержек операционные системы (ОС) вычислительных систем содержат в себе так называемый «КЭШ опережающего считывания» диска. Как правило, данные с диска хранятся в буфере в обширной полупроводниковой памяти с относительно малым временем доступа. Если данные, запрашиваемые ведущим устройством на шине, уже хранятся в памяти КЭШа, то они могут быть переданы напрямую из памяти КЭШа запрашиваемой стороне. Производительность при этом повышается, поскольку доступ к данным памяти КЭШа осуществляется намного быстрее, чем доступ к данным на дисковом накопителе.
Несмотря на достаточно высокую эффективность, КЭШ может вызвать ухудшение производительности, обусловленное чувствительностью КЭШа опережающего считывания к статистике успешных обращений. КЭШ опережающего считывания данных, имеющий низкий показатель успешных обращений, работает менее эффективно, чем дисковый накопитель без КЭШа, в частности, из-за переполнения КЭШа и задержек при организации очередности доступа. Данную проблему особенно важно устранить во встроенных системах, поскольку в них обычно мало памяти и центральный процессор является медленным по сравнению с центральными процессорами серверов и рабочих станций.
Как правило, производительность подсистем опережающего считывания может контролироваться через их главный параметр - размер окна опережающего считывания: максимальный объем данных, который может быть считан с опережением из блочного устройства. Производительность каждого программного приложения, работающего в операционной системе (ОС), зависит от производительности КЭШа опережающего считывания. Поэтому использование оптимальной величины максимального размера окна опережающего считывания для данного приложения может значительно увеличить производительность данного приложения.
Как правило, процесс нахождения максимального размера окна опережающего считывания для приложения выполняют по следующему алгоритму:
- настраивают текущий размер окна опережающего считывания в ОС,
- перезагружают систему,
- запускают приложение,
- измеряют время выполнения приложения.
Эти шаги повторяют несколько раз для разных размеров окна опережающего считывания до тех пор, пока не будет найдена оптимальная величина окна опережающего считывания.
Основной недостаток данного способа заключается в том, что нахождение величины размера окна опережающего считывания занимает много времени. Таким образом, нахождение оптимальной величины размера окна опережающего считывания при однократном выполнении приложения может значительно увеличить производительность приложения и существенно сберечь машинные и человеческие ресурсы.
Известен способ сокращения времени реагирования файловой системы (см. выложенную заявку на патент США №20030115410) [1], повышающий производительность файловой системы, при этом выполняют две основные операции: считывают весь сектор с диска и осуществляют оптимальную фрагментацию сектора диска. Такой подход требует изменений в программной части устройства хранения данных, что ограничивает его применение.
В патенте США №5809560 [2] описан способ записи в КЭШ опережающего считывания данных диска, повышающий производительность подсистемы опережающего считывания за счет применения дополнительных структур в КЭШе опережающего считывания для мониторинга типов запросов памяти - произвольный доступ или последовательный доступ. Недостаток описанного в этом в патенте способа заключается в необходимости внесения серьезных изменений в операционную систему. Это делает данный способ достаточно сложным для обычного пользователя.
Наиболее близким к заявленному изобретению является способ опережающего считывания, описанный в выложенной заявке на патент США №20050154825 [3], в котором применяют запоминающую систему, сконфигурированную для оптимизации объема данных опережающего считывания, извлеченных для каждого потока чтения, управляемого файловой системой. Данный способ выбран в качестве прототипа заявленного изобретения. Он, однако, весьма схож со способом [2] - в нем требуется размещение дополнительных метаданных для каждого потока чтения, чтобы контролировать подсистему опережающего считывания, и имеет тот же недостаток - необходимость внесения изменений в код операционной системы, что усложняет выполнение способа.
Задачей, на решение которой направлено заявляемое изобретение, является создание более простого способа автоматического определения оптимального размера окна опережающего считывания в средствах мониторинга, используя информацию об единственном запуске оптимизируемого приложения.
Технический результат, а именно создание более простого способа автоматического определения оптимального размера окна опережающего считывания в средствах мониторинга на основе информации об единственном запуске оптимизируемого приложения, получен за счет разработки способа, в рамках которого выполняют следующую последовательность операций:
- запускают вычислительную систему с программным приложением;
- запрашивают информацию о памяти, к которой обращалось приложение во время его выполнения;
- имитируют процедуру опережающего считывания для различных значений размера окна опережающего считывания и вычисляют коэффициент оптимальности, используя полученную информацию об обращениях к памяти, согласно выражению
коэффициент_оптимальности=
2
число_запросов_опережающего_считывания+
(число_запросов_опережающего_считывания*
(размер_окна_опережающего_считывания+1)-
2
все_страницы_приложения_из_файловой_системы),
где (число_запросов_опережающего_считывания) вычисляют путем имитации процедуры опережающего считывания; (размер_окна_опережающего_считывания) имеет величину, взятую из предопределенного набора величин; (все_страницы_приложения_из_файловой_системы) обозначают число страниц памяти из файловой системы, к которым обращалось приложение во время его выполнения;
- определяют оптимальную величину размера окна опережающего считывания, путем выбора размера окна опережающего считывания, соответствующего минимальному значению коэффициента оптимальности.
При этом следует учитывать, что процедура имитации опережающего считывания не подразумевает реального чтения данных с блочного устройства. Основная идея заявленного способа заключается в оптимизации следующих двух характеристик: числа запросов к блочному устройству и количества страниц, предназначенных для чтения данным приложением, но не использованных.
Иными словами, в заявляемом способе размер окна опережающего считывания является параметром подсистемы опережающего считывания и используется для оптимизации любого приложения за счет настройки ОС на оптимальную величину данного параметра.
Эксперименты показывают, что за счет выполнения заявленного способа можно определить оптимальный размер окна опережающего считывания для разных приложений с требуемой точностью. Кроме того, способ не требует модификации исходного кода ОС. Таким образом, преимущества заявленного способа заключаются в следующем:
- требуется только однократное выполнение приложения,
- используется существующая подсистема опережающего считывания без изменений,
- оптимизация может быть выполнена для любого приложения.
Для лучшего понимания заявленного изобретения далее приводится его подробное описание с соответствующим чертежом, на котором представлена
схема пошагового выполнения способа автоматического определения оптимального размера окна опережающего считывания в средствах мониторинга согласно изобретению.
Алгоритм реализации заявляемого способа предусматривает выполнение следующих ключевых шагов:
- запускают программное приложение в ОС вычислительной системы;
- запрашивают информацию об обращениях приложения к памяти и определяют обращения к страницам, взятым из блочного устройства, при этом получают следующую информацию о поведении приложения:
- общее количество страниц, запрошенных приложением из файловой системы,
- адреса запрошенных страниц,
- последовательность обращений;
- определяют коэффициент оптимальности (расхождения) как
2
(число_запросов_опережающего_считывания)+
(число_запросов_опережающего_считывания*
(размер_окна_опережающего_считывания+1)-
2
все_страницы_приложения_из_файловой_системы)
где каждый из членов приведенного выше выражения определяют следующим образом:
- для (числа_запросов_опережающего_считывания) - полагают, что после каждого обращения к странице памяти, которая не находится в КЭШе опережающего считывания и загрузка которой требует обращения к блочному устройству, следующие (размер_окна_опережающего_считывания) страницы будут дополнительно считаны в КЭШ опережающего считывания; при этом требуемое число - это число страниц, которые были считаны из блочного устройства, но не были считаны в КЭШ опережающего считывания;
- для (размера_окна_опережающего_считывания) - величину берут из предопределенного набора величин в соответствии с начальными ограничениями (данная величина не может превышать общий объем памяти);
- для (всех_страниц_приложения_из_файловой_системы) - обрабатывают информацию об обращениях к памяти со стороны приложения; например, в наборе, содержащем информацию о всех обращениях к памяти, исключают все обращения к памяти, кроме обращений к блочному устройству, и в получившемся наборе исключают все повторяющиеся обращения; число обращений в конечном наборе является требуемым числом;
- выбирают один размер окна опережающего считывания, который соответствует минимальной величине коэффициента оптимальности, и отображают ее пользователю, как оптимальный размер окна опережающего считывания.
Предпочтительный вариант реализации заявляемого изобретения представлен на чертеже и заключается в выполнении следующих операций:
- запускают программное приложение в вычислительной системе;
- запрашивают информацию об обращениях приложения к памяти, используя средство мониторинга;
- вычисляют (число_запросов_опережающего_считывания), исходя из предположения о том, что после каждого обращения к странице памяти, которая не отмечена как находящаяся в КЭШе опережающего считывания и загрузка которой требует обращения к блочному устройству, следующие (размер_окна_опережающего_считывания) страницы отмечают как считанные в КЭШ опережающего считывания. При этом (размер_окна_опережающего_считывания) является фиксированной величиной в течение всей процедуры имитации опережающего считывания.
- Если к странице памяти было обращение, страница требует обращения к блочному устройству и она не присутствует в КЭШе, тогда:
- заносят следующие (размер_окна_опережающего_считывания) страницы памяти в имитированный КЭШ опережающего считывания;
- увеличивают счетчик (число_запросов_опережающего_считывания) на единицу;
- вычисляют (все_страницы_приложения_из_файловой_системы), используя историю обращений к памяти: исключают все обращения, кроме обращений из файловой системы, и в получившемся наборе исключают все повторяющиеся обращения; число обращений в конечном наборе является требуемым числом;
- выбирают один размер окна опережающего считывания в
качестве оптимального, для которого коэффициент
2
(число_запросов_опережающего_считывания)+
(число_запросов_опережающего_считывания*
(размер_окна_опережающего_считывания+1)-
все_страницы_приложения_из_файловой_системы)
имеет минимальную величину;
- отображают оптимальный размер окна опережающего считывания пользователю.
Хотя указанный выше вариант выполнения изобретения был изложен с целью иллюстрации настоящего изобретения, специалистам ясно, что возможны разные модификации, добавления и замены, не выходящие из объема и смысла настоящего изобретения, раскрытого в прилагаемой формуле изобретения.