Вернуться   Компьютерный форум > Блоги > Базаров
Рейтинг: 1.00. Голосов: 8.

Кэширование дисков

Запись от Базаров размещена 23.08.2015 в 02:10

Зачем это нужно
Многие программы в ходе своей работы производят весьма интенсивный обмен данными с жестким диском, поэтому вы можете значительно ускорить их выполнение за счет кэширования диска и правильной его настройки. Кэширование - это использование специального буфера (кэша), в котором хранятся наиболее часто используемые участки дисков. Использование кэша обезпечивает практически мгновенный доступ к наиболее часто используемым участкам диска, за счет чего средняя скорость операций ввода-вывода может увеличиться в несколько раз. Кроме того, при этом продлевается срок службы жестких дисков за счет уменьшения нагрузки на них.
Виды кэширования
Кэширование бывает программное и аппаратное. При программном кэшировании на компьютере запускается специальная программа, которая организует в оперативной памяти компьютера кэш-буфер (обычно размером в несколько Мбайт) и управляет этим кэш-буфером. При аппаратном кэшировании кэш-буфер и управляющая им программа находятся на плате контроллера дисков. Такие контроллеры, естественно, дороже обычных, однако разница в стоимости частично компенсируется тем, что при их использовании не требуется отводить часть оперативной памяти под кэш-буфер. Увеличение скорости ввода-вывода при одинаковом объеме кэш-буфера при программном и аппаратном кэшировании приблизительно одно и то же, но при аппаратном кэшировании несколько меньше нагрузка на процессор. Кроме того, никакое зависание компьютера не способно повлиять на работу аппаратного кэша. Поэтому в серверах локальных сетей и RAID-контроллерах часто используют именно аппаратное кэширование.
Далее мы рассмотрим только вариант программного кэширования (он гораздо более распространен).
Кэширование записи
Многие программы кэширования могут обезпечивать не только кэширование операций чтения, но и операций записи на диски. Это делается следующим образом: при выполнении операций записи на диск данные не записываются сразу на диск, а помещаются в кэш. После этого программе, осуществляющей запись, сообщается об окончании записи, и она продолжает работу. А уж затем, в наиболее удобные моменты (скажем, при паузах в работе остальных программ), данные сбрасываются из кэша на диск. Это ускоряет работу программ, позволяет оптимизировать операции записи на диск и даже, как правило, уменьшить их количество. Так, при записи на дискету множества небольших файлов кэширование ускоряет запись в несколько раз.
Однако кэширование записи не вполне безопасно: при зависании компьютера или отключении электропитания данные из кэша могут оказаться не записанными на диск, что может привести к повреждению файловой системы на дисках (скажем, если исправления в системных областях диска были записаны на диск лишь частично). Поэтому кэширование записи применяется не всегда. Обычно рекомендуется при использовании кэширования записи на диски применять устройство безперебойного питания (UPS) - это значительно уменьшит вероятность повреждения данных на диске.
Программы для кэширования дисков
Программы для кэширования дисков входят в DOS, а также поставляются различными фирмами. Например, в MS DOS входит программа SmartDrive (SMARTDRV.EXE), в Norton Utilities - Norton Cache (NCACHE2.EXE) и т.д. Наиболее часто применяется входящая в MS DOS программа SMARTDRV.EXE, использование которой мы и рассмотрим.
Запуск программы SMARTDRV.EXE
При запуске программа SMARTDRV.EXE устанавливает себя резидентно в оперативной памяти, включает кэширование дисков и позволяет задать параметры кэша. Кэш эта программа размещает в расширенной памяти.
Обычно команда для первого запуска программы SMARTDRV.EXE включается в файл AUTOEXEC.BAT. Упрощенный формат команды:
[путь-к-программе\]SMARTDRV[.EXE] [размер-кэша [размер-кэша-под-Windows]] [/X]
Здесь путь-к-программе указывает путь к файлу SMARTDRV.EXE.
Параметры
Размеры кэша задаются двумя параметрами:
размер-кэша - указывает размер кэша (в Кбайтах) при работе в DOS;
размер-кэша-под-Windows - указывает размер кэша (в Кбайтах) при работе в Windows.
Параметр , если он задан, запрещает кэширование операций записи со всеми дисками, кроме тех, для которых оно явно включено (параметром буква-диска+, см. ниже).
Примеры
Ниже предполагается, что файл SMARTDRV.EXE находится в каталоге C:\EXE\MSDOS.
C:\EXE\MSDOS\SMARTDRV.EXE 2048 1536 - размер кэша 2048 Кбайт (2 Мбайта) при работе в DOS, 1536 Кбайт (1,5 Мбайта) при работе в Windows.
C:\EXE\MSDOS\SMARTDRV /X - размер кэша устанавливается по умолчанию, кэширование записи запрещено.
Замечания. 1. Для кэширования дисков программой SMARTDRV необходимо, чтобы компьютер был оснащен расширенной памятью и чтобы диспетчер расширенной памяти (например, HIMEM.SYS) был загружен до запуска программы SMARTDRV. Для кэширования компакт-дисков необходимо, чтобы программа MSCDEX была запущена до SMARTDRV.
2. По опыту автора, обычно хорошие результаты обезпечивает указание размера кэша равным одной четвертой объема оперативной памяти компьютера, но не более 8 Мбайт. Можно вообще воздержаться от указания размеров кэша - предлагаемые по умолчанию размеры кэша вполне разумны.
3. Сжатые диски, созданные программами DriveSpace и DoubleSpace, программой SMARTDRV на самом деле не кэшируются, вместо них кэшируются диски, на которых расположены файлы, содержащие информацию этих дисков.
4. Программа SMARTDRV.EXE может вызываться повторно для управления кэшированием, сброса содержимого кэша на диск (это может быть необходимо перед выключением компьютера), получения справок о параметрах и эффективности кэширования. Для сброса содержимого кэша на диск программа вызывается SMARTDRV /C, для получения отчета - SMARTDRV /S или просто SMARTDRV.
5. Графическая оболочка Windows 95 сама осуществляет кэширование дисков, поэтому при работе в Windows 95, а также при запуске DOS-программ из-под графической оболочки Windows 95, программа SMARTDRV.EXE не нужна. Но при работе без графической оболочки Windows 95, то есть в режиме "единственного приложения MS DOS" или при загрузке Windows 95 без запуска графической оболочки, программа SMARTDRV.EXE нужна, для чего она и присутствует в составе Windows 95.
Режимы кэширования отдельных дисков
При необходимости вы можете задать режимы кэширования для отдельных дисков: кэширование чтения и записи, только чтения или отмена кэширования. Это можно сделать как при первом запуске программы SMARTDRV, так и впоследствии, вызвав программу SMARTDRV из командной строки DOS. Режимы кэширования для дисков задаются следующими параметрами:
буква-диска+ - кэшировать операции чтения и записи с диском;
буква-диска- - отменить кэширование указанного диска;
буква-диска - кэшировать операции чтения с указанным диском, а операции записи - нет.
Замечание. Если вы не задавали режим кэширования для диска параметром буква-диска[+|-], то этот режим (режим по умолчанию) устанавливается следующим образом. Диски, доступные по локальной сети, а также электронные диски, не кэшируются вовсе. Дисководы для дискет и компакт-дисков кэшируются только по чтению. А жесткие диски кэшируются и по чтению, и по записи, а если вы задали параметр /Х - то только по чтению.
Примеры
SMARTDRV /X D+ - установить кэширование дисков с размером кэша и другими параметрами по умолчанию, кэширование записи отменить для всех дисков, кроме диска D:.
SMARTDRV A- - отменить кэширование для диска А:.
SMARTDRV A+ - установит кэширование чтения и записи для диска А:.
Двойная буферизация
Некоторые устаревшие контроллеры жестких дисков не могут выполнить операции ввода-вывода с жесткими дисками, если буфера ввода-вывода располагаются не в обычной, а в верхней памяти. Программа SMARTDRV имеет параметр /L, при котором ее буфера располагаются в обычной памяти, но это приводит к большому расходу обычной памяти (около 16 Кбайт). Более экономичное решение - использование двойной буферизации, при котором в обычной памяти располагается специальный буфер обмена с диском, а небольшой драйвер при выполнении операций ввода-вывода пересылает данные из буферов кэша в буфер обмена с диском и наоборот. При этом расходуется около 2 Кбайт обычной памяти, но слегка повышается нагрузка на процессор.
В MS DOS версий 6.0-6.22 для включения задания двойной буферизации следует включить в файл CONFIG.SYS следующую строку:
DEVICE=[путь-к-драйверу\]SMARTDRV.EXE /DOUBLE_BUFFER
В MS DOS 7.0 следует включить в файл MSDOS.SYS параметр DoubleBuffer=1 или вставить в файл CONFIG.SYS строку:
DEVICE=[путь-к-драйверу\]DBLBUFF.SYS
Пример
Ниже предполагается, что файл SMARTDRV.EXE находится в каталоге C:\EXE\MSDOS.
DEVICE=C:\EXE\MSDOS\SMARTDRV.EXE /DOUBLE_BUFFER - включение двойной буферизации в файле CONFIG.SYS. Версия MS DOS - от 6.0 до 6.22.
Замечание. Чтобы узнать о том, используется ли на самом деле двойная буферизация или нет, можно ввести команду SMARTDRV. Она отобразит на экране таблицу Disk Caching Status. Если в столбце Buffering этой таблицы для всех дисков (строк таблицы) стоит No, значит двойная буферизация не используется, и вызов драйвера двойной буферизации можно убрать.
Размещено в Без категории
Просмотров 6191 Комментарии 0 Отправить другу ссылку на эту запись
Всего комментариев 0

Комментарии

 

Текущее время: 09:14. Часовой пояс GMT +4. Powered by vBulletin® Version 5.8.9
Copyright ©2000 - 2016, Jelsoft Enterprises Ltd.