- Windows write cache setting
- Общие понятия по видам кэш
- Read policy (Политика чтения)
- Write policy (Политика записи)
- I/O Policy (Политика ввода/вывода)
- Настройка RAID контроллера для лучшей производительности
- Оптимальные настройки для контроллеров Intel
- Оптимальные настройки для контроллеров LSI
- Оптимальные настройки для HDD
- Оптимальные настройки для SSD
- Оптимальные настройки для HP контроллеров
- Факторы влияющие на производительность
- File Caching
- HDD Seagate с проблемой — маленькая скорость записи, отключен Write Cache
Windows write cache setting
Виды кэша на рейд контроллерах LSI и Intel
Всем привет, давно хотел написать для себя напоминалку, по поводу того какие виды кэша на рейд контроллерах LSI и Intel бывают, и какие настройки лучше всего выставлять для достижения максимальной производительности на ваших RAID контроллерах. Сразу хочу отметить, что если у вас есть запас времени, перед, тем как отдать сервер в продашен заказчику, то не поленитесь все же провести несколько тестов с разными настройками, и не забывайте, до их начала обновить все прошивки на оборудование и RAID контроллер.
Общие понятия по видам кэш
Существует три разновидности cache на RAID контроллерах:
Рассмотрим более детально, что из себя представляет каждая политика кэширования.
Read policy (Политика чтения)
Политика Read Ahead Policy: При ее включении контроллер начинает считывать последовательно сектора на диске, находящиеся за сектором с которого извлекается информация. При низкой фрагментации данная политика позволяет увеличить скорость чтения. Каждая операция чтения будет потреблять больше ресурсов жесткого диска, но если запросы на чтение последовательные это может существенно уменьшить количество запросов на чтение на жесткие диски и может существенно повысить производительность. Этот параметр будет работать только если типичный размер запроса на чтения меньше, чем ширина полосы пропускания.
Политика No Read Ahead (Normal) : При данном режиме контроллер не будет считывать последовательно данные, данный режим предпочтительнее когда будут производиться рандомные (случайные) чтения. Также этот режим рекомендуется при измерении последовательного чтения с помощью I/O meter под Windows.
Политика Adaptive Read Policy : по сути политика адаптивного чтения при которой контроллер запускает политику упреждающего чтения только после того, как две последние операции запрашивали доступ к последовательно идущим блокам данных. Если далее идут блоки рандомно разбросанные по дисковой подсистеме контроллер возвращается в нормальный режим работы. Этот режим рекомендуется использовать, если нагрузка на RAID контроллере подразумевает смешанные и последовательные операции.
Write policy (Политика записи)
Политика W rite-Through : Включая данную политику контроллер начинает посылает сигнал о завершении записи только тогда, когда информация упадет на физические носители, т.е. 100 процентов будет уже на жестких дисках. Обеспечивает более высокую безопасность. Данный режим не использует кэш для ускорения записи, и будет медленнее других, однако позволяет так же достичь хороших показателей при RAID 0 и RAID 10.
Политика Write-Back : Включая данный режим политика кэширования RAID контроллера начинает посылать сигнал о завершении записи только тогда, когда информация попадает в кэш контроллера, но еще не записана на дисковый массив. Обеспечивает более высокую прозводительность чем при политике write-through. Приложение продолжает работать, не дожидаясь, чтобы данные были физически записаны на жесткие диски. Но есть одно большое, но если во время работы RAID контроллера в таком режиме у вас пропадет электричество, то с 99 процентной вероятностью вы потеряете данные, для предотвращения этого есть BBU батарейки или модули защиты данных, так же советую проверить что у вашего сервера есть UPS (источник бесперебойного питания) и дублирующее подключение питания от блока питания.
Политика Write-Back with BBU : Данный режим это все тот же Write-Back, но разница в том, что у нас есть батарейка BBU, которая предотвращает потерю данных при выключении электропитания.
BBU или Battery Backup Unit (Модуль Резервной Батареи). BBU дает батарейную защиту питания для cache RAID контроллера. В случае сбоя питания, BBU поможет сохранить данные в кэше.
I/O Policy (Политика ввода/вывода)
Политика ввода/вывода определяет, будет ли RAID контроллер сохранять данные в кэше, который может уменьшить время доступа к ним при последующих запросах на чтение сделаными в те же самые блоки данных.
Политика direct IO : чтение происходит с дисков. Прямой режим I/O рекомендуется в большинстве случаев. Большинство файловых систем и множество приложений имеют свой собственный кэш и не требуют кэширования данных на уровне контроллера RAID.
Политика Cached IO : При ее включении чтение происходит с дисков, но прочитанные данные одновременно кладутся в кэш. Запросы тех же данных в последствии берутся из кэша. Этот режим может потребоваться, если приложение или файловая система не кэширует запросы чтения
Disk cache policy : это политика кэша диска. Если ее включить то на дисках будет храниться дополнительный кэш, это будет влиять на скорость записи в худшую сторону, но будут быстрее считывание, так же при включенном режиме есть риск потери данных.
Настройка RAID контроллера для лучшей производительности
Любой инженер по системам хранения данных, хочет чтобы его инфраструктура работала как можно быстрее и использовала весь функционал заложенный в ней. Каждый вендор RAID контроллеров, имеет некий best prictice для своей продукции, давайте сегодня рассмотрим их на примере контроллеров Intel и LSI.
Оптимальные настройки для контроллеров Intel
Ниже представлена таблица с рекомендуемыми настройками для контроллеров Intel, для достижения максимальной производительности. О таких параметрах как Stripe size, Virtual Drive initialization, Consistency Check, Patrol Read мы поговорим ниже. Как видите лучшим режимом чтения является Adaptive Read Ahead, а режимом записи Write Back.
Оптимальные настройки для контроллеров LSI
Ниже представлена таблица с рекомендуемыми настройками для контроллеров LSI, для достижения максимальной производительности. Будут рассмотрены сводные таблицы для HDD и для SSd дисков.
Оптимальные настройки для HDD
Размер stripe 256 kb, включение disk Cache Policy включен, выбран I/O Policy Direct IO, нужно дать закончить lun инициализацию
MegaRAID Settings for Maximum HDD Performance
Оптимальные настройки для SSD
Размер stripe 256 kb, включение disk Cache Policy включен, выбран I/O Policy Direct IO, нужно дать закончить lun инициализацию, режимы записи для разных видов RAID разные.
MegaRAID Settings for Maximum SSD Performance
Оптимальные настройки для HP контроллеров
Факторы влияющие на производительность
Рассмотрим что такое Stripe size, Virtual Drive initialization, Consistency Check, Patrol Read.
Virtual Drive initialization — это зануление, блоков раздела, перед тестирование скорости советую дождаться полной инициализации. По времени занимает по разному все зависит от размеров массива.
Stripe size — Размер блока данных одной ячейки раздела, по сути карта как данные распределены по жестким дискам. Размер страйпа может иметь большое влияние на
Конфигурирование RAID для оптимальной производительности и других факторов эффективности. Как правило при последовательных данных увеличить скорость RAID контроллера можно с помощью размеров stripe 512 kb или 1 mb. При случайном виде доступа лучше 16 кб, все зависит от того какое По у вас будет крутиться на данном разделе. Но в большинстве случаев лучше оставить стандартный размер, предлагаемый производителем.
Consistency Check — Проверка целостности является важной функцией, которая помогает обнаружить несоответствия в данных, хранящихся на жестких дисках в RAID массивах и выявляет возможные повреждения данных.
Проверка целостности генерирует значительное количество запросов к диску, которые могут уменьшить производительность RAID. В идеале ее вообще отключить, но этим вы жертвуете оповещением о ранних проблемах с дисками.
Patrol Read — помогает обнаруживать и исправлять плохие блоки на жестких дисках и предотвращать возможную потерю данных. Patrol Read генерирует значительное количество запросов к диску, которые могут уменьшить производительность RAID контроллера.
Вы должны включить или отключить Patrol Read в зависимости от цели вашей работы
измерения.
Надеюсь у вас не осталось вопросов по выбору лучшего метода кэширования для вашего RAID контроллера, если у вас есть вопросы то задавайте их в комментариях.
File Caching
By default, Windows caches file data that is read from disks and written to disks. This implies that read operations read file data from an area in system memory known as the system file cache, rather than from the physical disk. Correspondingly, write operations write file data to the system file cache rather than to the disk, and this type of cache is referred to as a write-back cache. Caching is managed per file object.
Caching occurs under the direction of the cache manager, which operates continuously while Windows is running. File data in the system file cache is written to the disk at intervals determined by the operating system, and the memory previously used by that file data is freed—this is referred to as flushing the cache. The policy of delaying the writing of the data to the file and holding it in the cache until the cache is flushed is called lazy writing, and it is triggered by the cache manager at a determinate time interval. The time at which a block of file data is flushed is partially based on the amount of time it has been stored in the cache and the amount of time since the data was last accessed in a read operation. This ensures that file data that is frequently read will stay accessible in the system file cache for the maximum amount of time.
This file data caching process is illustrated in the following figure.
As depicted by the solid arrows in the previous figure, a 256 KB region of data is read into a 256 KB cache «slot» in system address space when it is first requested by the cache manager during a file read operation. A user-mode process then copies the data in this slot to its own address space. When the process has completed its data access, it writes the altered data back to the same slot in the system cache, as shown by the dotted arrow between the process address space and the system cache. When the cache manager has determined that the data will no longer be needed for a certain amount of time, it writes the altered data back to the file on the disk, as shown by the dotted arrow between the system cache and the disk.
The amount of I/O performance improvement that file data caching offers depends on the size of the file data block being read or written. When large blocks of file data are read and written, it is more likely that disk reads and writes will be necessary to finish the I/O operation. I/O performance will be increasingly impaired as more of this kind of I/O operation occurs.
In these situations, caching can be turned off. This is done at the time the file is opened by passing FILE_FLAG_NO_BUFFERING as a value for the dwFlagsAndAttributes parameter of CreateFile. When caching is disabled, all read and write operations directly access the physical disk. However, the file metadata may still be cached. To flush the metadata to disk, use the FlushFileBuffers function.
The frequency at which flushing occurs is an important consideration that balances system performance with system reliability. If the system flushes the cache too often, the number of large write operations flushing incurs will degrade system performance significantly. If the system is not flushed often enough, then the likelihood is greater that either system memory will be depleted by the cache, or a sudden system failure (such as a loss of power to the computer) will happen before the flush. In the latter instance, the cached data will be lost.
To ensure that the right amount of flushing occurs, the cache manager spawns a process every second called a lazy writer. The lazy writer process queues one-eighth of the pages that have not been flushed recently to be written to disk. It constantly reevaluates the amount of data being flushed for optimal system performance, and if more data needs to be written it queues more data. Lazy writers do not flush temporary files, because the assumption is that they will be deleted by the application or system.
Some applications, such as virus-checking software, require that their write operations be flushed to disk immediately; Windows provides this ability through write-through caching. A process enables write-through caching for a specific I/O operation by passing the FILE_FLAG_WRITE_THROUGH flag into its call to CreateFile. With write-through caching enabled, data is still written into the cache, but the cache manager writes the data immediately to disk rather than incurring a delay by using the lazy writer. A process can also force a flush of a file it has opened by calling the FlushFileBuffers function.
File system metadata is always cached. Therefore, to store any metadata changes to disk, the file must either be flushed or be opened with FILE_FLAG_WRITE_THROUGH.
HDD Seagate с проблемой — маленькая скорость записи, отключен Write Cache
Всем привет! Приобрёл недавно жесткий диск для ноутбука Seagate на 1TB модель ST1000LM048 и столкнулся с проблемой, которую многие может быть даже и не замечают, используя подобные жесткие диски у себя на ноутбуках. Для начала приведу полную маркировку моего диска:
- Part Number: 2E7172-500
- Model Number: ST1000LM048
- Family: BARRACUDA25
- Firmware: sdm1
А проблема заключается в маленькой скорости записи информации на диск. Как я это заметил? Да очень просто, переносил свои файлы со старого жесткого диска меньшего объёма и заметил, что процесс этот проходит очень медленно и в мониторе ресурсов новый диск загружен на 100% постоянно, хотя диск источник загружен всего на 10-20%. Обратил внимание на скорость копирования видео файлов — 17 МБайт/c. Замерял скорость чтения с этого диска — 135 МБайт/c.
В диспетчере устройств, в свойствах устройства ST1000LM048 нашел причину такой маленькой скорости: не включено кэширование записей. Обычно у всех жестких дисков в системе оно включено. Для того, чтобы просмотреть в каком состоянии находится кэширование, включить или выключить его, зайдите в диспетчер устройств Windows (Win + R и ввести devmgmt.msc), откройте «Дисковые устройства», нажмите правой кнопкой мыши по устройству HDD — «Свойства». Кэширование вы можете найти на вкладке «Политика». У меня кэширование записей было выключено (галочка не установлена). Я попытался включить его, но в ответ получил сообщение, что не удалось включить кэширование записей, так как устройство не поддерживает его. Странно, подумал я, ведь диск новый и довольно современный.
Запустил для проверки кэша программу Victoria. На вкладке «Standart» есть информация по кэшу диска. В моём случае было указано, что Wr=OFF и рядом в колонке «Comment:» вместо надписи Ok стоял красный восклицательный знак!
Надо искать и обновлять прошивку у диска — первое что приходит в голову. Прошивку ищем тут по серийному номеру диска, страну можно указать любую. В результате я получил отрицательный ответ — для моего диска нет более новой прошивки, чем родная.
Ладно, тогда надо просто найти как включить кэш. Буду искать как включить. Первое, что приходит в голову, утилита hdparm под Linux, она может включать и отключать кэш у дисков и делать ещё много чего. Загрузил с USB первую попавшуюся Ubuntu я попытался включить кэш у данного диска. Утилита hdparm изначально присутствует в составе программ на диске или USB с Linux. Итак, ввёл команду в терминале (вызывается терминал по нажатию CTRL+ALT+T):
sudo hdparm -i /dev/sda Нажимаем Enter
Я начал с этой команды, чтобы убедиться, что я работаю именно с моим диском, у меня он действительно был первым (/dev/sda), а у вас он может быть и вторым (/dev/sdb) или третьим в системе. Изменяйте последнюю букву и находите свой диск. Затем просмотрим информацию о кэше:
sudo hdparm -W /dev/sda Нажимаем Enter
У меня кэш был disabled и я тут же решил его включить:
sudo hdparm -W1 /dev/sda Нажимаем Enter
Однако даже после выполнения этой команды кэш у моего диска так и остался disabled.
Стал искать другие варианты, как же можно включить write cache у диска Seagate. И ответ нашелся довольно быстро — включать и отключать кэш записей может также утилита SeaChest Configure из пакета SeaChest Utilities, скачать его можно с сайта Seagate по ссылке, объём файла 165 МБ.
В скачиваемом файле находятся утилиты SeaChest как для Linux, так и для Windows x32 и x64. Я использовал для Windows x64 так как у меня была установлена ОС Windows 7 x64. Распаковываем архив и переходим в папку с необходимыми файлами. Мне был нужен файл Windows \ Win64 \ SeaChest_Configure_1122_1183_64s.exe, именно его я и буду использовать.
Для начала вызываем справку и читаем:
SeaChest_Configure_1122_1183_64s.exe -h |more Нажимаем Enter и просматриваем до конца
Меня интересовали следующие параметры:
—writeCache [info | enable | disable]
Use this option to enable or disable write cache support on a
drive. Use the «info» argument to get the current status of
the write cache feature. This change is not preserved over
power cycles.
—sctWriteCache [info | enable | disable | default]
(SATA Only) (Seagate Only)
Use this option to enable or disable write cache support on a
drive using SMART command transport. When using this option,
the setting is non-volatile. Use this with the —volatile flag
to make the setting volatile. When using this option, the
—writeCache will always return success, but no write cache
changes will occur. This follows ATA spec. Using the «default»
argument returns the drive to default settings and allowing the
—writeCache option to work again. Use the «info» argument to
get the current status of the write cache feature. Note: On
some SAT HBAs/bridges, status will not be able to be determined
due to HBA/bridge limitations.
Формат запуска SeaChest_Configure_1122_1183_64s.exe для Linux с указанием диска выглядит так: -d /dev/sg5 для Windows так: -d PD3, где sg5 и PD3 — порядковый номер диска в системе. У меня был PD0. Просматриваю информацию по диску:
SeaChest_Configure_1122_1183_64s.exe -d PD0 -i Нажимаем Enter и получаем информацию
Просматриваю информацию по write cache:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —writeCache info Нажимаем Enter и получаем информацию
У диска он действительно disabled. Включаем:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —writeCache enable Нажимаем Enter
Ура! Написало enabled!. Проверяю скорость записи путём копирования файлов в Total Commander — скорость падает до 17 МБайт/c. Выходит, что эта опция только включает поддержку write cache но не сам механизм кэширования, тем более в описании указывается, что включение этой поддержки не сохранится после выключения питания у диска. Тогда пытаюсь использовать вторую команду:
SeaChest_Configure_1122_1183_64s.exe -d PD0 —sctWriteCache info Нажимаем Enter и получаем информацию
SeaChest_Configure_1122_1183_64s.exe -d PD0 —sctWriteCache enable Нажимаем Enter
Всё, написало enabled! Проверяем скорость. Скорость копирования на диск возросла в 4.5 раза — 86 МБайт/c!
В инструкции написано, что изначально эта команда сохраняет настройку и после выключения питания (non-volatile). Что нам и необходимо. Выключаем компьютер. Включаем его вновь и проверяем скорость копирования.
В результате получаем скорость записи на диск — 86 МБайт/c, скорость чтения — 135 МБайт/c.