Упреждающая выборка оборудования что это

Функция упреждающей выборки

Функция упреждающей выборки

Одним из нововведений операционной системы Windows XP стала возможность упреждающей выборки (prefetching) часто используемых программ. Иными словами, при первом запуске программы (и при запуске операционной системы) части ее кода копируются в специальную папку (%systemroot%prefetch), а при следующих запусках программы эти части сразу берутся из папки, тем самым ускоряя запуск программы. Эта возможность включена по умолчанию.

Настройки упреждающей выборки расположены в ветви системного реестра Windows HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters. При этом параметром, управляющим работой функции упреждающей выборки, является DWORD-параметр EnablePrefetcher. Он может содержать следующие значения.

? 0 — полностью отключить механизм упреждающей выборки. Как правило, данный механизм действительно повышает загрузку программ, поэтому отключать его не стоит.

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

? 2 — задействовать только возможность упреждающей выборки при запуске компьютера. Возможность упреждающей выборки запускаемых приложений использоваться не будет.

? 3 — задействовать обе возможности. Это значение присвоено по умолчанию.

Читайте также

Ограничение результатов выборки FIRST/SKIP

Ограничение результатов выборки FIRST/SKIP Как и в Firebird 1.0, результат выборки SELECT может быть ограничен с использованием инструкций FIRST/SKIP (В Borland InterBase начиная с версии 6.5 используется аналогичная по назначению конструкция ROWS.)При значении аргумента FIRST, равном 0, результатом

1. Операция выборки.

1. Операция выборки. Операция выборки на языке SQL реализуется оператором Select следующего вида: Select все атрибуты From имя отношения Where условие выборки; Здесь вместо того, чтобы писать «все атрибуты», можно использовать значок «*». В теории языка структурированных запросов

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Пути выборки

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

Хэш-функция.

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

Создание объединенной выборки

Создание объединенной выборки В предыдущих разделах мы рассмотрели большую группу запросов на выборку, в том числе запросы с использованием нескольких таблиц, объединенных связями. Однако в системе Access 2002 предусмотрены и запросы других типов:• на создание таблицы;• на

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Источник

BIOS и тонкая настройка ПК. Легкий старт (22 стр.)

IDE Prefetch Mode Этот параметр разрешает или запрещает выполнять упреждающую выборку данных IDE-контроллером. Для более быстрого обмена данными установите значение Enabled (On), а при наличии ошибок в работе жесткого диска можно попробовать значение Disabled (Off).

IDE Burst Mode, IDE Bursting

Установив для этого параметра значение Enabled (On), можно повысить производительность жесткого диска за счет более эффективного использования кэш-памяти в накопителе. Он также сокращает временные задержки между отдельными циклами чтения или записи.

Контроллеры Serial ATA и RAID

Практически на всех современных платах есть встроенные контроллеры Serial ATA и RAID. Параметры для их конфигурации нередко выделяют в отдельный подраздел (рис. 6.3).

Упреждающая выборка оборудования что это. Смотреть фото Упреждающая выборка оборудования что это. Смотреть картинку Упреждающая выборка оборудования что это. Картинка про Упреждающая выборка оборудования что это. Фото Упреждающая выборка оборудования что это

Рис. 6.3. Подраздел для конфигурации контроллеров жестких дисков

On-Chip Serial ATA, On-Chip SATA Mode, ATA/IDE Configuration

Параметр настраивает режим совместного использования накопителей SAT А и IDE.

■ Disabled – контроллер Serial ATA отключен; используются только жесткие диски IDE;

■ Auto – BIOS автоматически определит все подключенные накопители SATA и IDE, после чего установит им доступные режимы Master/Slave;

■ Combined Mode (Legacy Mode) – режим совместного использования дисков SATA и IDE, поддерживающий до четырех накопителей и совместимый с MS-DOS и Windows 98/Me. Для дисков SATA нужно дополнительно назначить эмуляцию одного из стандартных IDE-каналов с помощью параметров Serial ATA Port0/ 1 Mode;

■ Enhanced Mode (Native Mode) – расширенный режим совместного использования дисков SATA и IDE, поддерживающий до шести накопителей; он не поддерживается операционными системами Windows 98/Me;

■ SATA Only – используются только диски SATA, которым автоматически назначаются режимы Primary Master и Secondary Master.

Onboard IDE Operate Mode

Параметр похож на предыдущий и выбирает режим совместимости контроллеров SATA и IDE.

■ Compatible Mode – режим совместимости с операционными системами MS-DOS, Windows 9x/NT4.0;

■ Enhanced Mode – расширенный режим, который рекомендуется для операционных систем Windows 2000/ХР/2003.

Enhanced Mode Support On

Параметр уточняет конфигурацию накопителей при выбранном расширенном режиме.

■ S-ATA – в этом случае для операционных систем Windows 2000/ХР/2003 будут доступны все накопители, а для MS-DOS, Windows 9x/NT4.0 – только диски IDE (P-ATA); устанавливается по умолчанию;

IDE Port Settings

Параметр служит для дополнительной конфигурации накопителей SATA и IDE при выбранном режиме совместимости со старыми операционными системами.

■ Primary, P-ATA+S-ATA – используются IDE-накопители, подключенные к первичному каналу, а также SATA-диски;

■ Secondary, P-ATA+S-ATA – используются IDE-накопители, подключенные к вторичному каналу, а также SATA-диски;

P-ATA Ports Only – используются только IDE-накопители, a SATA-порты отключены.

РАТА IDE Mode, РАТА IDE Set to

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

■ Ch.1 Master/Slave, Secondary, IDE2 – IDE-диски будут иметь обозначения Secondary Master и Secondary Slave;

■ Ch.0 Master/Slave, Primary, IDE1 – IDE-диски будут иметь обозначения Primary Master и Primary Slave.

SATA Port 0/2 Set to, SATA Port 1/3 Set to, SATA Port Эти параметры показывают, какой из каналов IDE будет использоваться SATA-дисками, и устанавливаются автоматически в зависимости от значения параметра РАТА IDE Mode.

SATA RAID/AHCI Mode, SATA Mode, Configure S ATA As

Параметр настраивает режим работы встроенного контроллера Serial ATA.

Standard IDE (Disabled) – накопители SATA будут работать в режиме, совместимом с IDE;

RAID – это значение нужно выбирать при создании RAID-массивов, и оно доступно только при выбранном параметре On-Chip Serial ATA в значении Enhanced Mode;

АН CI (Advanced Host Controller Interface) – режим расширенных возможностей контроллера SATA, который поддерживается в дисках стандарта Serial АТА2.

ВНИМАНИЕ

Конфигурация контроллера Serial ATA может привести к тому, что операционная система перестанет загружаться. В таком случае нужно вернуть прежнее значение параметра или переустановить Windows (можно в режиме восстановления).

SATA1/SATA2

Эти параметры управляют интегрированным контроллером Serial ATA, отвечающим за работу портов SATA1 и SATA2.

Enabled (On) – котроллер Serial ATA включен;

Disabled (Off) – котроллер Serial ATA отключен.

Порты SAT A3 и SATA4 включают и отключают аналогичный параметр SATA3/SATA4.

IDE/SATA RAID function, Raid Function, RAID Enabled

Параметр включает (значение Enabled (On)) и отключает (Disabled (Off)) интегрированный RAID-контроллер.

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

■ VIA SATA Raid Utility;

■ OnBoard SH3114 RAID;

■ Onboard Promise Controller;

■ Intel RAID Technology.

ПРИМЕЧАНИЕ

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

SATA1 RAID, SATA2 RAID, SATA3 RAID, SATA4 RAID

Эти параметры доступны только после включения интегрированного RAID-контроллера и позволяют указать, какие из дисков Serial ATA будут работать в режиме RAID.

■ Enabled (On) – выбранный SATA-диск будет работать в режиме RAID (для дальнейшей конфигурации RAID-массива нужна утилита RAID);

■ Disabled (Off) – выбранный SATA-диск будет работать, как обычный IDE-диск.

В режиме RAID могут работать не только SATA-диски, но и обычные накопители с интерфейсом IDE, и для них есть аналогичные параметры: IDE Primary/ Secondary Master/Slave RAID.

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

USB Controller, OnChip USB Controller, OnChip EHCI Controller Параметр включает (значение Enabled (On)) или отключает (Disabled (Off)) встроенный USB-контроллер. Поскольку USB-устройства достаточно популярны, нет веских причин для выбора второго значения.

USB 2.0 Controller, USB 2.0 Support

Параметр позволяет указать версию протокола (USB 1.1 или USB 2.0), по которому будет работать USB-контроллер.

■ Enabled (On) – используется протокол USB 2.0, обеспечивающий намного большую скорость обмена данными;

■ Disabled (Off) – используется протокол USB 1.1; это значение можно попробовать, только если есть проблемы в работе устройств по протоколу USB 2.0.

USB Legacy Support, USB Keyboard Support Via

Параметр разрешает или запрещает поддержку USB-устройств со стороны BIOS и важен, когда применяется USB-клавиатура.

■ Enabled (On) или BIOS – поддержка USB-устройств на уровне BIOS разрешена; это значение нужно установить, только если используется USB-клавиатура или другие устройства, необходимые до загрузки Windows;

■ Disabled (Off) или OS – поддержка USB-устройств в BIOS отключена; это значение рекомендуется, если USB-устройства используются только после загрузки Windows.

USB Mouse Support

Параметр включает поддержку USB-мыши на уровне BIOS и аналогичен по смыслу параметру USB Keyboard Support Via. Включать его следует, только если USB-мышь необходима в операционных системах, подобных MS-DOS.

Источник

Функция упреждающей выборки

Функция упреждающей выборки

Одним из нововведений операционной системы Windows XP стала возможность упреждающей выборки (prefetching) часто используемых программ. Иными словами, при первом запуске программы (и при запуске операционной системы) части ее кода копируются в специальную папку (%systemroot%prefetch), а при следующих запусках программы эти части сразу берутся из папки, тем самым ускоряя запуск программы. Эта возможность включена по умолчанию.

Настройки упреждающей выборки расположены в ветви системного реестра Windows HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerMemory ManagementPrefetchParameters. При этом параметром, управляющим работой функции упреждающей выборки, является DWORD-параметр EnablePrefetcher. Он может содержать следующие значения.

? 0 — полностью отключить механизм упреждающей выборки. Как правило, данный механизм действительно повышает загрузку программ, поэтому отключать его не стоит.

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

? 2 — задействовать только возможность упреждающей выборки при запуске компьютера. Возможность упреждающей выборки запускаемых приложений использоваться не будет.

? 3 — задействовать обе возможности. Это значение присвоено по умолчанию.

Читайте также

Ограничение результатов выборки FIRST/SKIP

Ограничение результатов выборки FIRST/SKIP Как и в Firebird 1.0, результат выборки SELECT может быть ограничен с использованием инструкций FIRST/SKIP (В Borland InterBase начиная с версии 6.5 используется аналогичная по назначению конструкция ROWS.)При значении аргумента FIRST, равном 0, результатом

1. Операция выборки.

1. Операция выборки. Операция выборки на языке SQL реализуется оператором Select следующего вида: Select все атрибуты From имя отношения Where условие выборки; Здесь вместо того, чтобы писать «все атрибуты», можно использовать значок «*». В теории языка структурированных запросов

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Пути выборки

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

Хэш-функция.

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

Создание объединенной выборки

Создание объединенной выборки В предыдущих разделах мы рассмотрели большую группу запросов на выборку, в том числе запросы с использованием нескольких таблиц, объединенных связями. Однако в системе Access 2002 предусмотрены и запросы других типов:• на создание таблицы;• на

Функция uni()

Функция uni() Поиск/замена символа по его юникодному номеру также может быть сделана при помощи функции uni().Пример функции uni(): Boouni(107,32)Designer найдет слово Book

Источник

Глава 8. Производительность

Содержание

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

Когда вы разберётесь как оценивать производительность системы, мы обсудим некоторые свойства производительности ZFS и то, когда они могут быть полезны.

Перед погружением в оценку производительности ZFS давайте немного поговорим о производительности в общем.

Что такое производительность?

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

Системный администратор в основном заботится об улучшении производительности. Это означает обнаружение и удаление узких мест. Среднестатистический компьютер имеет четыре основных ресурса: ввод/ вывод системы хранения, пропускная способность сетевой среды, оперативная память и ЦПУ. Если вы наваливаете работу в систему до тех пор, когда она уже не может справляться, первое то что вы в действительности делаете, это определение того, какой именно из этих четырёх ресурсов отказывает первым. Этот ресурс является бутылочным горлышком.

Причём различные рабочие нагрузки могут иметь совершенно различные узкие места.

Многим системным администраторам необходима замена одного из этих ресурсов на другой. Именно поэтому Лукас всегда называет «настройку системы» «перенастройкой узких мест». (Лукас многие вещи называет перестановкой бутылочных горлышек. Он решает проблему «грязной одежды» личным временем и моющими средствами. Пока вы читаете это, он почти наверняка страдает от узкого места с мороженным.)

Давайте на момент отвлечёмся на сжатие ZFS. Сжатие ZFS уменьшает объём записываемых системой данных и извлекаемых из её дисков. Сжатие и распаковка блоков занимает время процессора. Сжатие обменивает ввод/ вывод системы хранения на процессорное время. Однако, большинство компьютеров имеют больше процессорной мощи чем они возможно используют. Ноутбук на котором я пишу это имеет четырёхядерный процессор, но только один диск с весьма средней скоростью и очень ограниченной пропускной способностью ввода/ вывода. Разрешение сжатия с очевидностью выигрышно в подобной системе. В системе с большей производительностью дискового ввода/ вывода в сравнении с мощностью процессора, вы можете принять другое решение.

Чем сложнее ваша система хранения, тем больше возможностей у вас для регулировки и смещения узких мест. Ваш сервер имеет шесть дисковых контроллеров, но весь ввод/ вывод приходит только на один из них? Перегруппируйте ваши наборы данных чтобы разделить нагрузку между множеством контроллеров. Может быть определённый диск перенасыщен? Разделите эту нагрузку. Возможно, ваш пул перегружен операциями записи, или чтения, или и тем и другим. Добавление настроенных надлежащим образом SLOG и L2ARC помогут.

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

Если производительность не отвечает вашим ожиданиям, помните, что ваша система хранения работает настолько хорошо, как это ей позволяет самый её медленный компонент. < Прим. пер.: см. 1-ый Закон Амдала: «Производительность вычислительной системы, состоящей из связанных между собой устройств, в общем случае определяется самым непроизводительным её устройством», В.В.Воеводин «Вычислительная математика и структура алгоритмов.», МГУ, 2006, ISBN 5-211-05310-9 > У вас может быть на самом деле быстрый контроллер SAS и самый новый, высокоскоростной жёсткий диск, но при этом ужасная производительность из- за поганых дисковых кабелей. Умножитель SATA портов разрубает производительность пропорционально числу подключённых дисков. Просто потому, что вы можете соединить определённые компоненты вместе, не означает что это следует делать.

ZFS и производительность

ZFS предназначена для работы с большим объёмом дискового пространства. Заполненный на 80 процентов и более пул имеет плохую производительность, переместите часть своих данных в другой пул. Высвобождение пространства почти полного пула облегчает большинство проблем ZFS.

Если консультация обычного системного администратора по улучшению производительности файловой системы не помогает решить ваши проблемы, вы должны углубиться в неё и найти почему ваша система ведёт себя плохо. Каждая операционная система содержит инструменты для измерения производительности. vmstat(8) может быстро определить то, что вашей системе требуется процессор, дисковое пространство или оперативная память.

zpool iostat

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

Пул work более интересен. У нас имеется два запроса на чтение в секунду при 402 записях в секунду с общими 24МБ/с. Чтения незначительны, однако каждая запись в среднем составляет 60кБ. Вся реальная работа происходит здесь.

Что это означает для вашего пула? Само по себе не очень много. Это активность пула в определённый момент времени. Это может быть средним значением во времени, или может быть высоким или низким в определённый период. Для принятия существенных решений вам нужен непрерывный обзор деятельности пула.

Для наблюдения за активностью отдельного пула определите имя пула.

Это прекратит весь вывод за исключением вывода данных для определённого пула.

Имейте в виду, это средние значения с момента загрузки. Они не отражают текущее значение.

Текущая и продолжительная активность пула

Первая запись является средним значением активности с момента загрузки, в точности, как это было при выполнении zpool iostat без интервала. Вторая и последующие записи выдают ткущие значения.

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

Данный пул в среднем выполняет 104 операции записи в секунду, однако в данный момент он выполняет более 600 операций в секунду. Он выполняет реальную работу!

Активность виртуального устройства

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

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

Как и в случае варианта zpool iostat без подробностей, первый набор вывода предоставит вам средние значения с момента загрузки. В режиме с детализацией эти значения выглядят несколько чудно.

Вы получаете значения итого для всего пула, итого для каждого VDEV в этом пуле, и число для каждого поставщика в этом пуле. Взглянем на значения операций записи в секунду для данного пула. Пул в целом в среднем имеет 10 операций чтения в секунду с момента загрузки системы. Первое зеркальное устройство отвечает за пять из них, а второе за четыре. Каждый диск внутри каждого виртуального устройства обрабатывает по два чтения в секунду. (Это усреднённые значения, поэтому пусть факт, что ZFS полагает что 2 + 2 = 5, не смущает вас. Функции контрольных сумм ZFS выполняют математические операции более корректно.)

Короткий ответ состоит в том, что средние из расчёта на диск не очень надёжны в качестве исходных данных. Они верны пропорционально. zpool iostat не фиксирует структуры данных в ядре при измерении производительности, поэтому вы будете получать некоторые отклонения при выполнении команды.

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

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

Упреждающая выборка ZFS

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

Упреждающая выборка на основе VDEV

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

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

После перезагрузки у вас имеется работающий кэш предварительной выборки на основе VDEV.

sysctl kstat.zfs.misc.vdev_cache_stats.misses показывает сколько раз ZFS проверял кэш на основе VDEV на наличие метаданных и не находил их. Аналогично sysctl kstat.zfs.misc.vdev_cache_stats.hits показывает как часто ZFS находил что- то в этом кэше.

Проверьте вашу рабочую нагрузку с упреждающим кэшированием и без него и посмотрите на её поведение.

Насколько упреждающее чтение на основе VDEV приоритезирует кэш? sysctl vfs.zfs.vdev.cache.max даёт минимальный размер чтения из VDEV. Это значение по умолчанию равно 16384, или 16кБ. Если программа запрашивает чтение меньше этого размера, вносится предварительная выборка на основе VDEV.

Однако, чтение не просто расширяется до 16кБ. sysctl vfs.zfs.vdev.cache.bshift даёт объём для данных предварительной выборки и искомых метаданных. Оно слегка смещает значение, поэтому значение по умолчанию 16 означает 64кБ.

Таким образом, если программы запрашивают чтение менее 16кБ, ZFS читает вместо этого 64кБ. Если программа запрашивает на чтение, скажем, 20кБ, не происходит предварительной выборки на основе VDEV.

Хотя изменение значений предварительной выборки помогало производительности в некоторых старых версиях ZFS, в современной ZFS вам следует почти всегда оставлять всё как есть. Авторы не встречали никаких ситуаций, в которых изменение этих значений помогало, но мы знаем много случаев, когда изменение этих значений приносило страдание.

Пофайловая упреждающая выборка

Упреждающая выборка может вызывать проблемы в системах, которые размещают сотни тысяч (или более) мелких файлов, например, в 64кБ и менее. Для таких хостов вы можете захотеть запретить предварительную выборку на уровне файлов. Подобные системы, однако, крайне редки.

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

Настройка групп транзакций

Вы можете настраивать производительность выравнивая группы транзакций и ваших расписаний ввода/ вывода. Мы намеренно охватываем настройки FreeBSD 10 и более поздних версий. Механизмы для настройки OpenZFS описываемые в более ранних версиях были значительно более причудливы.

Вы можете управлять тем, как часто система записывает группу транзакций и её максимальным размером.

Времена txg

Для большинства систем запись каждые пять секунд является достаточной. Программа навроде top(1) может показать всплеск активности ЦПУ каждые пять секунд при осуществлении сжатия ожидающей разрешения группы транзакций. Вам редко требуется уменьшать ваш таймаут до менее чем пяти секунд.

Увеличение этого значения, однако, может быть ощутимым для некоторых систем. Если вы выполняете ZFS на низконагруженной виртуальной машине, вы можете завести таймаут txg вверх на 15 или более. Лукас часто исполняет хосты в качестве зеркал LDAP и заслуживающих доверия серверов DNS на виртуальных машинах, и подобные виды хостов редко имеют высокие уровни запроса к дисковому вводу/ выводу. Уменьшение частоты записей транзакций не улучшит производительность такой определённой виртуальной машины, однако улучшит доступ к оборудованию для остальных ВМ, работающих с этим гипервизором. Задание всем виртуальным машинам на таком хосте аналогичных низких установок улучшит производительность для виртуальных машин по всему совету, однако отдельная самолюбивая или высокозагруженная ВМ может съесть большую часть такой выгоды. (Однако, это может быть в точности тем, что вы хотите получить.)

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

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

Установка таймаута группы транзакций в значение менее пяти секунд столкнётся с проблемой вашего расписания ввода/ вывода и ограничит вашу запись. Для большинства из нас пять секунд являются минимально ощутимым значением.

Размер txg

Трудный вопрос: должны ли вы менять размер группы транзакции? Сколько времени потребуется вашей системе записывать 10 процентов оперативной памяти на диск и как часто это будет происходить? Большинство хостов имеет намного больше оперативной памяти, чем у них имеется пропускной способности ввода/ вывода. Попытка записать на диск одну десятую от объёма оперативной памяти за пять секунд может повлечь катастрофу. Пробный хост Лукаса имеет несколько жёстких дисков в одном пуле и 32ГБ оперативной памяти. Запись 3.2ГБ на диск требует более 20 секунд. Если такой хост вырабатывает 3.2ГБ дисковой активности в промежуток времени менее чем стандартный пятисекундный таймаут txg, машина быстро свалится в штопор недоступности.

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

В процессе таких «циклов записи», большинство чтений с диска временно приостанавливается. Это делает возможным завершать запись настолько быстро, насколько это возможно. Чтение возобновляется по завершению записи. Подобное «перекрытие» рабочей нагрузки обычно увеличивает производительность. Используя знания о вашей рабочей нагрузке, вы можете принять решение о том, что лучшим подходом будет менее частый сброс более крупных групп транзакции более частый менее крупных. При массовом копировании данных внутри одного и того же пула Джуд увеличивает размер своей txg до 25 ГБ, а таймаут до 30 секунд, и получает прирост производительности в 25 процентов.

Длительность и содержание txg

Выполните этот сценарий задав своё имя пула в качестве аргумента.

duration.d Левенталя показывает сколько времени выполняется каждая группа транзакции.

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

Пренебрегая нашими усилиями, ZFS не работает очень напряжённо в данной системе.

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

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

Одновременный просмотр размера txg и времени может предоставить дополнительное внутреннее понимание того, как в действительности ведёт себя ваш пул.

Ограничение записи

В более старых версиях ZFS ограничение записи приводило к очень неравномерной производительности. Алгоритм дросселирования в FreeBSD 10 и более новых версиях работает более гладко. Вы можете настраивать его посредством планировщика ввода/ вывода, обсуждаемого далее.

Планирование ввода/вывода

Не всё оборудование создаётся одинаковым. Самый современный ноутбук Джуда имеет намного меньшую способность ввода/ вывода чем любой из его серверов сетевой среды предоставления контента. Установки по умолчанию FreeBSD достаточно общие. Хотя вам на самом деле не нужно настраивать их на ноутбуке, тем не менее, если у вас есть десятки или сотни дисков с очень особенными рабочими нагрузками, вы можете регулировать производительность посредством настройки своего планирования. Планирование ввода/ вывода позволяет вам выравнивать латентность и пропускную способность.

Пропускная способность является объёмом данных, которое может быть считано с- или записано на- устройство хранения. Когда вы говорите что SATA-3 может передавать данные со скоростью 6Гбит/c, вы имеете в виду пропускную способность.

Латентность является промежутком времени, который необходим системе для обработки таких запросов. Сложные системы хранения, с шинами Fiber Channel и большим числом полок во многих частях вашего здания, могут вызывать задержки по мере прохождения запроса в системе. Ваш ноутбук скорее всего будет иметь латентность хранилища при перегруженности вашего жёсткого диска одновременным копированием слишком большого количества файлов.

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

Думайте о жёстких дисках как об автомобилях. Некоторые оптимизированы под вместимость, другие под длительные перемещения. Огромный тягач- трейлер с прицепом может вмещать гораздо больше чем Tesla Roadster, однако он не сможет быстро затормозить на красный свет. Большинство из нас будут применять большую автомашину для перемещения центра обработки вызовов с персоналом, измеряемым сотней для их перемещения по городу в выходные дни, однако предпочтёт другую оптимизацию при доставке ребёнка в госпиталь чтобы предотвратить перитонит его аппендицита.

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

Планирование ZFS строится вокруг очередей ввода/ вывода.

Измерение латентности и пропускной способности

Как вы узнаете что изменение положительно влияет на производительность системы?

Вы измеряете её. Адам Левенталь написал сценарий DTrace измерения латентности и пропускной способности для illumos, но мы приведём изменённую версию для FreeBSD.

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

Команда sleep(1) сообщает вашему сценарию как долго продолжать сбор данных. Сценарий rw.d наблюдает за пропускной способностью и латентностью это количество секунд, а затем выводит две диаграммы производительности для чтения и записи. По окончанию вы получите примерно это:

Колонка stddev (стандартное отклонение, standard deviation) заслуживает особенного внимания. Вы можете получиь исключительную пропускную способность, однако оказаться с очень большим разбросом задержек. Будет ли допустимой массивная пропускная способность если некоторые чтения и записи потребуют для выполнения пяти секунд? Об этом знаете только вы.

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

Да, настройка и тестирование производительности утомительны. Это та причина, по которой большинство людей не заботятся о них. Однако хорошая новость состоит в том, что ZFS рабоатет достаточно неплохо с установками по умолчанию.

Очереди ввода/вывода

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

То, как ZFS применяет эти пределы, зависит от разрешённого числа запросов для ожидания.

Запросы по-VDEV

Чтобы знать как ZFS будет планировать активность, вы должны знать сколько запросов на ожидание может поступать каждому VDEV системы. Рассмотрим максимальное значение запросов для каждого типа на поставщика хранения (обычно диск), как они были определены sysctls в предыдущем разделе.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *