Что такое «Кэшированные данные» в телефонах и смартфонах Андроид. Что съедает память в смартфоне

Аннотация: Рассматриваются вопросы использования различных видов кэширования, поддерживаемых ASP.NET. Приводятся примеры применения кэширования на страницах ASP.NET приложения.

Цель лекции : изучить принципы использования кэширования при создании Web-приложений. На практических примерах рассмотреть возможности ASP . NET по организации различных видов кэширования как целых страниц, так и их частей.

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

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

Но применение кэширования не только приводит к повышению производительности и масштабируемости, но и создает ряд проблем, которые необходимо знать и уметь их обходить. Одна из таких проблем - это то, что кэширование задействует оперативную память , которая никогда не бывает лишней. Если попытаться сохранить в оперативной памяти слишком много данных, операционная система сбрасывает лишние данные на диск , что может привести к замедлению работы всей системы в целом. Для управления этим процессом в ASP . NET реализован интеллектуальный механизм определения переполнения кэша, который основан на том, что при попытке записи в кэш данных, объем которых превышает доступный для кэша объем оперативной памяти, ASP . NET выборочно удалит из кэша часть данных для обеспечения максимальной общей производительности системы. Кроме того, при использовании механизмов кэширования необходимо помнить, что должен быть некий принцип, согласно которому будет осуществляться проверка обновления информации в кэше. Если данные таблицы базы данных или файла изменились, это может означать, что данные кэша устарели и их необходимо обновить. ASP . NET 2.0 предоставляет усовершенствованный механизм управления кэшированием , реализуя все необходимые элементы управления политикой кэширования. В частности, он позволяет управлять замещением информации, находящейся в кэше, управлять профилями кэшей, с помощью которых можно определить настройки кэширования для группы страниц, управлять хранением содержимого кэша в оперативной памяти и на жестких дисках, отслеживать изменения в исходных данных и удалять или объявлять недействительными кэшированные элементы.

Основы кэширования в ASP.NET

ASP . NET поддерживает два типа кэширования: кэширование данных и кэширование вывода . Рекомендуется использовать оба эти типа кэширования, т. к. это способно значительно повысить производительность приложения.

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

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

Упомянутые виды кэширования стали основой для создания еще двух разновидностей.

  • Кэширование фрагментов - позволяет сохранять в кэше лишь часть готового HTML-кода страницы. В основном это относится к пользовательским элементам управления.
  • Кэширование источников данных - встроенный в объекты доступа к данным механизм кэширования данных, который запускается автоматически при использовании соответствующего элемента.

Рассмотрим основные аспекты применения кэширования в ASP . NET

Кэширование вывода

При использовании данного вида кэширования сгенерированный в результате выполнения приложения HTML-код сохраняется в памяти, и при повторном запросе этой же страницы клиенту передается уже сгенерированный ранее HTML-код.

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

Создадим новое Web- приложение , откроем редактор кода страницы и введем следующую команду в обработчик события Page_Load :

Response.Write(DateTime.Now.ToString());

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


Рис. 9.1.

Добавим данную страницу в кэш . Для этого добавим к файлу страницы директиву

<%@ OutputCache Duration="10" VaryByParam="None" %>

Атрибут Duration задает количество секунд, в течение которых необходимо хранить страницу в кэше. Параметр VaryByParam , равный значению None , устанавливает режим кэширования, при котором, независимо от дополнительных параметров, в кэше будет сохраняться только одна копия данной страницы.

Теперь при запуске приложения в окне браузера будет выведено текущее значение времени и дата, однако при попытке обновления страницы никаких изменений текущих значений происходить не будет в течение 10 секунд. При попытке обновления страницы по истечении 10 секунд обновится текущее значение времени, а также дата.

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

Компьютер, увы, не моментально выполняет команды, которые получает от людей. Для ускорения этого процесса применяется ряд хитростей, и почетное место среди них принадлежит кэшированию. Что это такое? Чем являются кэшированные данные? Как этот процесс собственно происходит? Что такое кэшированные данные в смартфоне "Самсунг", к примеру, и отличаются они чем-то от тех, что в компьютере? Давайте приступим к получению ответов на эти вопросы.

Так называют промежуточный буфер, который обеспечивает быстрый доступ к информации, вероятность запроса которой выше всего. Все данные содержатся в нём. Важным преимуществом является то, что извлечь всю необходимую информацию из кэша можно значительно быстрее, чем из исходного хранилища. Но существует значительный недостаток - размер. Кэшированные данные применяются в браузерах, жестких дисках, ЦПУ, веб-серверах, службах WINS и DNS. Основой структуры являются наборы записей. Каждая из них ассоциирована с определённым элементом или блоком данных, которые выступают копией того, что есть в основной памяти. Записи имеют идентификатор (тег), с помощью которого и определяется соответствие. Давайте посмотрим с немного другой точки зрения: что такое кэшированные данные в телефоне "Самсунг" или другого производителя? Отличаются ли они от тех, что создаются в компьютере? С принципиальной точки зрения - нет, разница исключительно в размере.

Процесс использования

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

Обновление данных

При использовании, допустим, веб-браузером осуществляется проверка локального кэша с целью найти копию страницы. Учитывая ограниченность данного при промахе принимается решение отбросить часть информации, чтобы освободить пространство. Чтобы решить, что именно будет заменено, используют различные алгоритмы вытеснения. Кстати, если говорить о том, что такое кэшированные данные на "Андроиде", то в массе своей они используются для работы с картинками и данными приложений.

Политика записи

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

  1. Немедленная запись. Каждое изменение синхронно заносится в основную память.
  2. Отложенная или обратная запись. Обновление данных проводится периодически или при запросе со стороны клиента. Чтобы отслеживать, было ли внесено изменение, используют признак с двумя состояниями: «грязный» или изменённый. В случае промаха может производиться два обращения, направленные основной памяти: первое используется, чтобы записать данные, что были изменены из кэша, а второе - чтобы прочитать необходимый элемент.

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

Современные вызовы

С увеличением частотности процессоров и повышением производительности оперативной памяти появилось новое проблемное место - ограниченность интерфейса Что из этого может подметить знающий человек? Кэш-память очень полезна, если частота в ОЗУ меньше чем в процессоре. Многие из них имеют свой собственный промежуточный буфер, чтобы уменьшить время доступа к оперативной памяти, которая действует медленнее, нежели регистры. В ЦП, которые поддерживают виртуальную адресацию, часто размещают небольшой, но очень быстрый буфер трансляций адресов. Но в других случаях кэш не очень полезен, а иногда только создаёт проблемы (но это обычно в компьютерах, которые подверглись модификации непрофессионалом). Кстати, говоря о том, что такое кэшированные данные в памяти смартфона, надо отметить, что из-за маленького размера устройства приходится создавать новые миниатюрные реализации кэша. Сейчас некоторые телефоны могут похвастаться параметрами, как у передовых компьютеров десять лет назад - а какая разница в их размере!

Синхронизация данных между разными буферами

  1. Инклюзивный. Кэш может вести себя как угодно.
  2. Эксклюзивный. Разрабатывался под каждый конкретный случай.
  3. Неэкслюзивный. Стандарт широкого распространения.

Уровни кэширования

Их количество обычно равняется трём или четырём. Чем больше уровень памяти, тем она объемнее и медленнее:

  1. L1 cache. Самый быстрый уровень кэша - первый. По сути, он часть процессора, поскольку расположен на одном кристалле и относится к функциональным блокам. Обычно делится на два вида: кэш инструкций и данных. Большинство современных процессоров без этого уровня не работают. Данный кэш функционирует на частоте процессора, поэтому обращение к нему может осуществлять каждый такт.
  2. L2 cache. Обычно располагается вместе с предыдущим. Является памятью раздельного пользования. Чтобы узнать его величину, необходимо весь объем, отданный под кэширование данных, поделить на количество ядер, которое есть в процессоре.
  3. L3 cache. Медленный, но самый большой зависимый кэш. Обычно больше 24 Мбайт. Используется, чтобы синхронизировать данные, которые поступают от различных кэшей второго уровня.
  4. L4 cache. Использование оправдано только для высокопроизводительных многопроцессорных майнфреймов и серверов. Его реализуют в качестве отдельной микросхемы. Если вы задаёте вопрос о том, что такое кэширование данных в смартфоне "Самсунг" и ищете в нём этот уровень - могу сказать, что лет на 5 точно поторопились.

Ассоциативность кэша

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

Заключение

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

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

Каждый раз, когда вы используете ваше Android-устройство для игр, работы с интернет-сайтами и так далее, ваш смартфон сохраняет определённую информацию о них у себя в памяти (настройки, копии страниц и так далее). Эти сохранённые данные позволяют ускорить работу с данным сайтом, приложением и так далее, ведь теперь нет необходимости всякий раз загружать их заново, а можно воспользоваться данными о них, уже находящимися в памяти телефона. Такие данные называются «кэшированными данными», и расположены они в промежуточном буфере с быстрым доступом, который и называется «кэшем».

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

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

Для корректного запуска игры не забудьте установить кэш

Зачем нужно очищать кэш?

После того, как мы определились с тем, что это такое кэш и что значит кэшированные данные на телефоне. Необходимо разъяснить вопрос о том, зачем необходимо регулярно чистить кэш и удалять данные с него.

Также вам обязательно нужно знать для чего необходима папка занимающее более ГБ памяти вашего устройства и как удалив её освободить значимую часть памяти Андроид устройства.

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

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

Как удалить кэшированные данные

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

Очистку кэша можно выполнить несколькими способами, а именно:

Теперь мы разобрались, что значит очистить кэшированные данные на телефоне, и с помощью каких методов это можно сделать.

Заключение

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

Вконтакте

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

Технология кэширования в ExpressionEngine состоит из нескольких независимых систем кэширования данных, и настроек.

Кэширование запросов

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

Некоторые запросы не могут кэшироваться, так как их синтаксис динамически изменяется при каждом выполнении. Основной запрос отображения раздела, например, всегда проверяет соответствие даты окончания публикации записи, и текущего времени, чтобы определить, закончился ли срок публикации записи. Это вынуждает систему вносить изменения в запросы при каждой загрузке страницы; поэтому для него невозможно использовать стандартное кэширование запросов. (Смотрите , как альтернативу, которая может использоваться во многих случаях.)

Система кэширования запросов обеспечивает где-то от 30 % до 90%- сокращения общего количества запросов в зависимости от того, как созданы ваши страницы.

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

Кэширование тегов

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

Кэш тегов хранится в течение интервала времени, определенного пользователем. По истечении указанного интервала времени, кэш автоматически обновляется.

Для включения кэширования тега, добавьте указанные ниже два параметра для любого тега:

Cache="yes" refresh="10"

Примечание: refresh указывает время, в минутах, между обновлениями кэша.

Например, для кэширования тега в течение 30 минут, вы должны сделать следующее:

{exp:weblog:entries cache="yes" refresh="30"}

Кэширование шаблонов

Кэширование шаблонов (или кэширование динамических страниц) позволяет вам кэшировать все шаблоны, делая ваши страницы намного более легкими. Так как ExpressionEngine требует выполнение нескольких сценариев и запросов к базе данных для управления основными ресурсами, нельзя получить 100%-ых статических страниц, всегда будет немного меньше.

Кэширование шаблонов, как и кэширование тегов, основывается на времени. Чтобы включить кэширование шаблонов, щелкните по ссылке "Настройки" на странице шаблоны. На ней вы должны включите кэширование, и установить интервал времени обновления.

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

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

Кэширование динамических запросов раздела

Эта настройка находится на странице Admin > Глобальные настройки разделов. Эта функция увеличит скорость обработки тега {exp:weblog:entries} , кэшируя запросы, которые обычно выполняются динамически. Эта опция, однако, подходит не для всех людей.

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

Отключение запросов

Параметр disable= доступен в теге {exp:weblog:entries} . Он позволяет вам отключать функции тега, которые вы не используете, для повышения производительности. Тег weblog entries разработан так, что по умолчанию производится выборка большого количества информации: Категории, заказные поля, данные пользователя, и т.д. В зависимости от того, как вы используете тег, некоторые из этих данных могут быть не нужны. С помощью параметра "disable" вы можете отключить эти функции тега, чтобы сделать его более "легким".

Синтаксис для параметра disable следующий: disable="ЭЛЕМЕНТ, КОТОРЫЙ ВЫ ХОТИТЕ ОТКЛЮЧИТЬ" . Существует пять элементов, которые могут быть выключены:

  • categories
  • category_fields
  • custom_fields
  • member_data
  • pagination
  • trackbacks

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

Disable="categories|member_data|trackbacks"

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

Например, если вы используете тег weblog entries для отображения заголовков 10 последних записей:

{exp:weblog:entries orderby="date" sort="desc" limit="10"}
{title}

{/exp:weblog:entries}

В этом примере вы отображаете только заголовки ваших записей, и нечего больше; тем не менее, тег weblog извлекает категории и другие данные автоматически. Используя параметр disable= , вы можете отключить ненужные функции для того, чтобы исключить их из запроса. В нашем случае вы не нуждаетесь ни в одной из функций, и все они могут быть отключены.

{exp:weblog:entries orderby="date" sort="desc" limit="10" disable="categories|custom_fields|member_data|pagination|trackbacks"}
{title}

{/exp:weblog:entries}

Примечание : Вы так же можете использовать параметр disable="category_fields" в тегах

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

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

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

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

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

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

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

Итак, кэширование чтения основано на предсказании следующих обращений к диску за данными (обычно расположенными непосредственно вслед за только что прочитанными) и помещении их в быстродействующую память перед тем, как они потребуются системе. Поскольку программа, отвечающая за кэширование, считывает информацию в память до того, как за ней обратятся, такой механизм часто называют буфером с упреждающим чтением (read look-ahead buffer). С точки зрения еще более существенного повышения производительности не имеет смысла размещать кэш-буфер и соответствующую программу в основной памяти компьютера, так как тогда она потребует часть вычислительных ресурсов центрального процессора. Дисковый накопитель сам способен справиться с упреждающим кэшированием, не отвлекая компьютер на хлопоты, связанные с управлением кэш-памятью.

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

Сегодня, когда большинство производителей использует от 128 до 512 килобайт кэш-памяти, компания Seagate в своих наиболее производительных накопителях Barracuda и Cheetah увеличила ее объем до полновесного мегабайта (предусмотрев возможность ее наращивания в четыре раза), а винчестеры Elite рекордной емкости (23 гигабайта) сразу оснащает 2 мегабайтами кэша. Это необходимо с учетом тех приложений, для которых предназначены указанные жесткие диски - для рабочих станций и серверов класса "хай-энд", мини- и суперкомпьютеров. В каждом из этих случаев постоянно требуется прочтение большого количества данных при максимальной скорости передачи. Настолько быстро, насколько только возможно.

Адаптивное кэширование Каждый раз, когда компьютер обращается за данными, которые уже находятся в кэше, запрос называется "попаданием в кэш". Если же запрошенных данных в кэше не оказалось и накопитель должен привести в действие свою механику и прочитать их с дисков, говорят о "промахе". О том, насколько эффективно работает программа (или алгоритм) кэширования, легче всего судить по соотношению попаданий и промахов. Сравнивая число попаданий с числом промахов, получают так называемый "рейтинг попаданий" для примененной схемы кэширования.

Применение стратегий, известных как адаптивное и сегментированное кэширование, помогает минимизировать частоту осечек.

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

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

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

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

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

Роман Соболенко,по материалам Seagate