Содержание

cache — что это за папка на Андроиде?

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

cache — что это за папка на Андроиде?

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

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

Например существует директория /data/dalvik-cache — она нужна для программы Dalvik, представляющая из себя Java-виртуальную машину, которая предназначена для корректного запуска apk-программ. Вот чтобы программы запускались быстрее — и нужен данный кэш.

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

Но за счет чего? Есть два варианта:

  • Быстрая скорость память. Это тип памяти, откуда данные считываются намного быстрее. Поэтому почему бы туда не копировать те файлы, которыми система или программа пользуется чаще всего? Вполне логично. Именно поэтому на компьютере в качестве кэша часто используется оперативная память — она намного быстрее как жесткого диска, так и твердотельного SSD.
  • Второй вариант менее распространен — это область памяти, но скорость чтения из нее обычная. То все обычно. Вот только данные внутри папки имеют другой формат, они могут быть распакованными, а могут быть просто как-то иначе записаны, так, чтобы чтение происходило быстрее.

Неважно где именно располагается папка — важно то, что предназначение ее в 99% одно, это кэширование данных:



Можно ли удалить папку cache?

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

Если мы имеем ввиду /data/dalvik-cache — то саму папку удалять не стоит, а вот содержимое удалить можно. Пустая все равно не грузит систему никак, она ведь пустая. Важно понимать, что в будущем кэш будет восстановлен.

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

Ну и конечно, идеальнее всего перед вообще любыми изменениями/удалениями в системе — сделать резервную копию Android, то есть бэкап.

Заключение

Главное выяснили:

  • Папка cache на Андроиде, неважно где она присутствует, предназначена почти всегда для одного — кэширования данных, чтобы доступ к ним был быстрее, чем обычно.
  • Можно ли очистить папку cache? Можно только в том случае, если внутри — 100% кэш, что там нет других папок и нет других важных данных кроме кэша. Но лучше именно очищать содержимое, саму папку удалять не стоит.

Надеюсь данная информация оказалась вам полезной, удачи и добра, до новых встреч друзья!

На главную! 07.04.2021

Ctrl+C Ctrl+V — что это значит? (контрл+ц контрл+в)
Grizzly папка — что это?
Mb3install — что за папка?
PORT. IN на музыкальном центре — что это?
Windows10UpgraderApp — что это?
scoped_dir — что это за папка?
Windows10Upgrade — можно ли удалить?
im_temp — что за папка?

Кэширование зависимостей для ускорения рабочих процессов

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

Рабочий процесс часто повторно использует одни и те же выходные данные или скачанные зависимости из одного запуска в другом. Например, средства управления пакетами и зависимостями, такие как Maven, Gradle, npm и Yarn, хранят локальный кэш скачанных зависимостей.

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

Чтобы кэшировать зависимости для задания, необходимо выполнить действие

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

Диспетчеры пакетовДействие setup-* для кэширования
npm, Yarn, pnpmsetup-node
pip, pipenv, Poetrysetup-python
Gradle, Mavensetup-java
RubyGemssetup-ruby
Go go.sumsetup-go

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

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

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

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

Ограничения доступа обеспечивают изоляцию кэша и защиту путем создания логической границы между разными ветвями и тегами. Запуски рабочих процессов могут восстанавливать кэши, созданные в текущей ветви или ветви по умолчанию (обычно main). Если рабочий процесс запускается для запроса на вытягивание, он также может восстановить кэши, созданные в базовой ветви, включая базовые ветви вилки репозиториев. Например, если ветвь feature-b имеется базовая ветвь

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

Запуски рабочих процессов не могут восстанавливать кэши, созданные для дочерних или одноуровневых ветвей. Например, кэш, созданный для дочерней feature-b ветви, будет недоступен для запуска рабочего процесса, активированного в родительской main ветви. Аналогичным образом кэш, созданный для ветви feature-a с базовой main ветвью, будет недоступен для ее одноуровневой

feature-c ветви с базовой main. Запуски рабочих процессов также не могут восстанавливать кэши, созданные для разных имен тегов. Например, кэш, созданный для тега release-a с базовым main значением , не будет доступен для запуска рабочего процесса, активированного для тега release-b с базовым mainзначением .

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

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

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

Действие cache попытается восстановить кэш на основе предоставленного вами key. Когда действие находит кэш, который точно соответствует ключу, действие восстанавливает кэшированные файлы в настроенный

path . При необходимости можно указать список restore-keys для использования в случае, если key не соответствует существующему кэшу. Список полезно использовать при восстановлении кэша restore-keys из другой ветви, так как restore-keys может частично совпадать с ключами кэша. Дополнительные сведения о сопоставлении restore-keys см. в разделе Сопоставление ключа кэша.

Если имеется точное совпадение с указанным key, это считается попаданием в кэш. Если ни одно из кэшей точно не соответствует указанному key, это считается промахом кэша. При промахе кэша действие автоматически создает новый кэш, если задание успешно завершено. В новом кэше будет использоваться предоставленный вами key, а также будут содержаться файлы, указанные в path. Дополнительные сведения о том, как это обрабатывается, см. в разделе «Попадания и промахи кэша».

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

Входные параметры для действия

cache
  • key. Требуется Ключ, созданный при сохранении кэша, и ключ, используемый для поиска кэша. Это может быть любое сочетание переменных, значений контекста, статических строк и функций. Ключи имеют максимальную длину в 512 символов, а использование ключей большей длины приведет к сбою действия.

  • path. Требуется (требуются) Путь (пути) в средстве выполнения тестов для кэширования или восстановления.

    • Вы можете указать один путь или добавить несколько путей в отдельных строках. Пример:

      - name: Cache Gradle packages
        uses: actions/cache@v3
        with:
          path: |
            ~/.gradle/caches
            ~/.gradle/wrapper
      
    • Вы можете указать либо каталоги, либо отдельные файлы. Также поддерживаются стандартные маски.

    • Можно указать абсолютные пути или пути относительно каталога рабочей области.

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

    restore-keys: |
      npm-feature-${{ hashFiles('package-lock. json') }}
      npm-feature-
      npm-
    
  • enableCrossOsArchive: необязательно . Логическое значение, которое при включении позволяет средствам выполнения Windows сохранять или восстанавливать кэши независимо от операционной системы, в которой был создан кэш. Если этот параметр не задан, по умолчанию используется значение false. Дополнительные сведения см. в разделе Кэш кросс-ОС в документации по кэшу действий.

Входные параметры для действия

cache
  • cache-hit. Логическое значение, указывающее, что для ключа найдено точное совпадение.

Попадания и промахи в кэше

Если key точно соответствует существующему кэшу, это называется попаданием в кэш, и действие восстанавливает кэшированные файлы в path каталог.

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

При промахе кэша действие также выполняет поиск указанных restore-keys для любых совпадений:

  1. При указании restore-keys действие cache последовательно ищет все кэши, соответствующие списку restore-keys.
    • При точном совпадении действие восстанавливает файлы в кэше в каталог path.
    • Если точных совпадений нет, действие ищет частичные совпадения ключей восстановления. Когда действие находит частичное совпадение, в каталог path восстанавливается самый последний кэш.
  2. Действие cache завершается, и выполняется следующий шаг задания.
  3. Если задание завершено успешно, действие автоматически создает новый кэш с содержимым каталога path.

Более подробное описание процесса сопоставления кэша см. в статье Сопоставление ключа кэша.

Пример использования действия

cache

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

Использование контекстов для создания ключей кэша

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

Использование выражений для создания key позволяет автоматически создавать новый кэш при изменении зависимостей.

Например, можно создать key с помощью выражения, которое вычисляет хэш файла npm package-lock.json. Таким образом, при изменении зависимостей, составляющих изменение файла package-lock.json, изменяется ключ кэша и автоматически создается новый кэш.

npm-${{ hashFiles('package-lock.json') }}

GitHub вычисляет выражение hash "package-lock. json" для получения окончательного key.

npm-d5ea0750

Использование выходных данных действия

cache

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

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

- if: ${{ steps.cache-npm.outputs.cache-hit != 'true' }}
  name: List the state of node modules
  continue-on-error: true
  run: npm list

Действие cache сначала ищет попадания key в кэш и версию кэша в ветви, содержащей выполнение рабочего процесса. Если нажатие отсутствует, выполняется поиск restore-keys и версия. Если в текущей ветви по-прежнему нет совпадений, cache действие повторяет те же действия, что и в ветви по умолчанию. Обратите внимание, что ограничения области применяются во время поиска. Дополнительные сведения см. в разделе Ограничения доступа к кэшу.

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

restore-keys позволяет указать список альтернативных ключей восстановления, используемых в случае промаха кэша в key. Можно создать несколько ключей восстановления, упорядоченных от наиболее определенных до наименее определенных. Действие cache выполняет поиск restore-keys в последовательном порядке. Если ключ не совпадает напрямую, действие выполняет поиск ключей с префиксом ключа восстановления. При наличии нескольких частичных совпадений для ключа восстановления действие возвращает последний созданный кэш.

Пример использования нескольких ключей восстановления

restore-keys: |
  npm-feature-${{ hashFiles('package-lock.json') }}
  npm-feature-
  npm-

Средство выполнения тестов вычисляет выражения, которые разрешаются в следующие restore-keys:

restore-keys: |
  npm-feature-d5ea0750
  npm-feature-
  npm-

Ключ восстановления npm-feature- соответствует любому ключу, который начинается со строки npm-feature-. Например, оба ключа npm-feature-fd3052de и npm-feature-a9b253ff совпадают с ключом восстановления. Будет использоваться кэш с последней датой создания. Ключи в этом примере выполняются в следующем порядке:

  1. npm-feature-d5ea0750 соответствует определенному хэшу.
  2. npm-feature- соответствует ключам кэша с префиксом npm-feature-.
  3. npm- соответствует любым ключам с префиксом npm-.
Пример приоритета поиска
key:
  npm-feature-d5ea0750
restore-keys: |
  npm-feature-
  npm-

Например, если запрос на вытягивание содержит ветвь feature и нацелен на ветвь по умолчанию (main), действие выполняет поиск key и restore-keys в следующем порядке:

  1. Ключ npm-feature-d5ea0750 в ветви feature
  2. Ключ npm-feature- в ветви feature
  3. Ключ npm- в ветви feature
  4. Ключ npm-feature-d5ea0750 в ветви main
  5. Ключ npm-feature- в ветви main
  6. Ключ npm- в ветви main

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

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

Сведения об изменении политик для ограничения размера кэша репозитория см. в разделах Применение политик для GitHub Actions в вашем предприятии и Управление параметрами GitHub Actions для репозитория.

Для управления кэшами можно использовать REST API GitHub Enterprise Server. В настоящее время вы можете использовать API для просмотра использования кэша, а в будущих обновлениях ожидается больше функциональных возможностей. Дополнительные сведения см. в документации по REST API Кэш GitHub Actions.

Также можно установить расширение GitHub CLI для управления кэшем из командной строки. Дополнительные сведения о расширении см. в документации по расширению. Дополнительные сведения о расширениях GitHub CLI см. в разделе Использование расширений GitHub CLI.

Что такое кэширование и как оно работает? – Определение TechTarget

К

  • Роберт Шелдон

Что такое кэширование?

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

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

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

Кэш-память — это блок памяти, отдельный от основной памяти, доступ к которому осуществляется до основной памяти.

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

Какие существуют виды кэширования?

Тот же принцип, который применяется к кэшированию в Интернете, относится и к множеству других типов кэширования:

  • Кэширование ЦП. Большинство центральных процессоров (ЦП) включают в себя высокоскоростные кэши, такие как L1 и L2, которые расположены между основной памятью компьютера и процессором, предоставляя ЦП более быстрый доступ к наборам команд программы, чем может предоставить основная память.
  • Кэширование в памяти. Приложения часто используют оперативную память системы для кэширования данных, хранящихся на диске. Например, система управления базами данных (СУБД) может использовать кэширование для рабочих нагрузок с большим количеством операций чтения или сложных запросов 9.0005
  • Кэширование виртуальной памяти. Блок управления памятью компьютера (MMU) часто включает в себя буфер поиска перевода (TLB) для кэширования последних преобразований между виртуальными и физическими адресами.
  • Кэширование на стороне сервера. Веб-приложения часто кэшируют данные, поступающие из других систем. Например, веб-приложение может кэшировать данные, которые оно регулярно извлекает из серверной базы данных.
  • Кэширование CDN. Сети доставки контента (CDN) хранят кэшированные данные на нескольких прокси-серверах, которые географически распределены, чтобы предоставлять контент пользователям, находящимся ближе к месту их проживания, что помогает повысить производительность веб-приложения.
Сети доставки контента кэшируют контент с исходного сервера на географически распределенных кэш-серверах CDN для более быстрой доставки контента.
  • Кэширование контроллера хранилища. Контроллер системы хранения может включать локальный кэш для упрощения операций ввода-вывода (I/O). Кэш контроллера может улучшить работу между контроллером и приложением, а также между контроллером и диском.
  • Кэширование DNS. Серверы системы доменных имен (DNS) часто кэшируют данные поиска DNS, чтобы ускорить преобразование имен хостов в адреса интернет-протокола (IP).
Диаграмма, иллюстрирующая процесс кэширования DNS.

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

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

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

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

Последнее обновление: январь 2023 г.

Продолжить чтение О кэшировании
  • Кэш и уровень: в чем разница между кешем и хранилищем?
  • Рассмотрите эти ключевые стратегии кэширования микросервисов
  • Одноранговое кэширование SCCM сейчас важнее, чем когда-либо
  • Может ли установка заголовка управления кэшем повысить безопасность данных приложения?
  • Как настроить браузеры, чтобы избежать отравления веб-кэша
Apple iOS

Apple iOS — это проприетарная мобильная операционная система, работающая на таких мобильных устройствах, как iPhone и iPad.

Сеть

  • CAPWAP (Контроль и настройка точек беспроводного доступа)

    CAPWAP (управление и предоставление беспроводных точек доступа) — это протокол, который позволяет контроллеру доступа управлять …

  • мониторинг производительности сети (NPM)

    Мониторинг производительности сети (NPM) — это процесс измерения и мониторинга качества обслуживания сети.

  • инфракрасное излучение (ИК)

    Инфракрасное излучение (ИК), иногда называемое просто инфракрасным, представляет собой область спектра электромагнитного излучения, в которой …

Безопасность

  • аналитика безопасности

    Аналитика безопасности — это подход к кибербезопасности, в котором используются инструменты сбора, агрегирования данных и анализа угроз …

  • NICE Framework (Национальная инициатива по обучению в области кибербезопасности Cybersecurity Workforce Framework)

    The NICE Framework (National Initiative for Cybersecurity Education Cybersecurity Workforce Framework) является справочным ресурсом . ..

  • черный список приложений (занесение приложений в черный список)

    Занесение приложений в черный список — все чаще называемое занесением в черный список — представляет собой практику сетевого или компьютерного администрирования, используемую …

ИТ-директор

  • цифровая экосистема

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

  • план закупок

    План закупок, также называемый планом управления закупками, представляет собой документ, который используется для управления процессом поиска …

  • Общепринятые принципы ведения учета (Принципы)

    Общепринятые принципы ведения документации — это основа для управления записями таким образом, чтобы поддерживать …

HRSoftware

  • конвейер талантов

    Воронка талантов — это группа кандидатов, готовых занять вакансию.

  • аутсорсинг процесса подбора персонала (RPO)

    Аутсорсинг процесса найма (RPO) — это когда работодатель передает ответственность за поиск потенциальных кандидатов на работу …

  • специалист по кадрам (HR)

    Специалист по персоналу — это специалист по кадрам, который выполняет повседневные обязанности по управлению талантами, сотрудникам …

Служба поддержки клиентов

  • исходящий маркетинг

    Исходящий маркетинг — это традиционная форма маркетинга, при которой организация инициирует контакт с потенциальными клиентами или …

  • скорость оттока

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

  • управление маркетинговой кампанией

    Управление маркетинговыми кампаниями — это планирование, выполнение, отслеживание и анализ кампаний прямого маркетинга.

Как работает кэширование | Как работает

«» Кэширование значительно увеличивает скорость, с которой ваш компьютер извлекает биты и байты из памяти. Андрей Онуфриенко / Getty Images

Если вы покупали компьютер, то слышали слово «кэш». Современные компьютеры имеют кэши L1 и L2, а многие теперь также имеют кэш L3. Возможно, вы также получили совет по этой теме от благонамеренных друзей, возможно, что-то вроде «Не покупайте этот чип Celeron, в нем нет кэша!»

Реклама

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

Содержимое

  1. Простой пример: до кэширования
  2. Простой пример: после кеша
  3. Компьютерные кэши
  4. Подсистемы кэширования
  5. Технология кэширования
  6. Место ссылки

htm»> Простой пример: до кэширования

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

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

Реклама

Приходит первый покупатель. Он просит книгу Моби Дик . Библиотекарь идет в кладовую, берет книгу, возвращается к прилавку и отдает книгу покупателю. Позже клиент возвращается, чтобы вернуть книгу. Библиотекарь берет книгу и возвращает ее в кладовую. Затем он возвращается к своему прилавку, ожидая другого покупателя. Скажем, следующий клиент просит Моби Дик (вы предвидели…). Затем библиотекарь должен вернуться в кладовую, чтобы взять книгу, с которой он недавно работал, и отдать ее клиенту. В соответствии с этой моделью библиотекарь должен совершить полный обход, чтобы получить каждую книгу, даже очень популярную, которую часто запрашивают. Есть ли способ улучшить работу библиотекаря?

Да, есть способ — мы можем поставить кэш на библиотекарь. В следующем разделе мы рассмотрим тот же пример, но на этот раз библиотекарь будет использовать систему кэширования.

Реклама

Простой пример: после кеша

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

День начинается. Рюкзак библиотекаря пуст. Приходит наш первый клиент и просит Моби Дик . Никакого волшебства здесь нет — библиотекарь должен пойти в кладовую, чтобы взять книгу. Он отдает клиенту. Позже клиент возвращается и возвращает книгу библиотекарю. Вместо того, чтобы вернуться в кладовую, чтобы вернуть книгу, библиотекарь кладет книгу в свой рюкзак и стоит там (сначала он проверяет, не полон ли мешок — об этом позже). Приходит другой клиент и просит Моби Дик . Прежде чем отправиться в кладовую, библиотекарь проверяет, нет ли этого названия в его рюкзаке. Он находит! Все, что ему нужно сделать, это взять книгу из рюкзака и отдать клиенту. Нет необходимости заходить на склад, поэтому клиент обслуживается более эффективно.

Реклама

Что делать, если клиент попросил название не в кеше (рюкзаке)? В этом случае библиотекарь менее эффективен с тайником, чем без него, потому что сначала библиотекарь тратит время на поиск книги в своем рюкзаке. Одной из задач проектирования кэша является минимизация влияния поиска в кэше, и современное оборудование свело эту задержку практически к нулю. Даже в нашем простом примере с библиотекарем время задержки (время ожидания) поиска в кэше настолько мало по сравнению со временем, которое требуется для возвращения в хранилище, что оно не имеет значения. Тайник небольшой (10 книг), и время, необходимое для того, чтобы заметить промах, составляет лишь ничтожную долю времени, которое занимает путешествие в кладовую.

Из этого примера вы можете увидеть несколько важных фактов о кэшировании:

  • Технология кэширования — это использование более быстрого, но меньшего типа памяти для ускорения более медленного, но большего типа памяти.
  • При использовании кэша вы должны проверить кэш, чтобы увидеть, есть ли там элемент. Если он есть, это называется попаданием в кэш . В противном случае это называется промахом кеша , и компьютер должен ждать прохождения туда и обратно из большей и более медленной области памяти.
  • Кэш имеет некоторый максимальный размер, который намного меньше большей области хранения.
  • Можно иметь несколько уровней кэша. В нашем примере с библиотекарем меньший, но более быстрый тип памяти — это рюкзак, а кладовая представляет собой более крупный и медленный тип памяти. Это одноуровневый кеш. Там может быть еще один уровень тайника, состоящий из полки, которая может вместить 100 книг за прилавком. Библиотекарь может проверить рюкзак, затем полку и затем кладовую. Это будет двухуровневый кеш.

Реклама

Компьютерные кэши

Компьютер — это машина, в которой мы измеряем время очень маленькими шагами. Когда микропроцессор обращается к основной памяти (ОЗУ), он делает это примерно за 60 наносекунд (60 миллиардных долей секунды). Это довольно быстро, но намного медленнее, чем обычный микропроцессор. Микропроцессоры могут иметь время цикла всего 2 наносекунды, поэтому для микропроцессора 60 наносекунд кажутся вечностью.

Что, если мы встроим в материнскую плату специальный банк памяти, небольшой, но очень быстрый (около 30 наносекунд)? Это уже в два раза быстрее, чем доступ к основной памяти. Это называется кэшем 2-го уровня или 9-го уровня.0251 Кэш второго уровня . Что, если мы встроим еще меньшую, но более быструю систему памяти прямо в микросхему микропроцессора? Таким образом, доступ к этой памяти будет осуществляться со скоростью микропроцессора, а не со скоростью шины памяти. Это кэш L1 , который на 233-мегагерцовом (МГц) Pentium в 3,5 раза быстрее, чем кэш L2, который в два раза быстрее, чем доступ к основной памяти.

Некоторые микропроцессоры имеют два уровня кэш-памяти, встроенные прямо в чип. В этом случае кэш материнской платы — кэш, который существует между микропроцессором и основной системной памятью — становится уровнем 3 или 9.0251 Кэш L3 .

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

Реклама

Подсистемы кэширования

Ваше подключение к Интернету является самым медленным каналом на вашем компьютере. Итак, ваш браузер (Internet Explorer, Netscape, Opera и т. д.) использует жесткий диск для хранения HTML-страниц, помещая их в специальную папку на вашем диске. Когда вы впервые запрашиваете HTML-страницу, ваш браузер отображает ее, и ее копия также сохраняется на вашем диске. В следующий раз, когда вы запросите доступ к этой странице, ваш браузер проверит, является ли дата файла в Интернете более новой, чем дата, сохраненная в кэше. Если дата совпадает, ваш браузер использует дату на жестком диске, а не загружает ее из Интернета. В этом случае меньшая, но более быстрая система памяти — это ваш жесткий диск, а большая и медленная — это Интернет.

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

Реклама

Вот эксперимент, который вы можете провести. Ваш компьютер кэширует дисковод гибких дисков вместе с основной памятью, и вы действительно можете видеть, как это происходит. Получите доступ к большому файлу с дискеты — например, откройте 300-килобайтный текстовый файл в текстовом редакторе. В первый раз вы увидите, как загорается свет на вашей дискете, и вы будете ждать. Дискета работает очень медленно, поэтому загрузка файла займет 20 секунд. Теперь закройте редактор и снова откройте тот же файл. Во второй раз (не ждите 30 минут и не выполняйте большой доступ к диску между двумя попытками) вы не увидите, как загорается индикатор, и вы не будете ждать. Операционная система проверила в кэше своей памяти дискету и нашла то, что искала. Таким образом, вместо того, чтобы ждать 20 секунд, данные были найдены в подсистеме памяти намного быстрее, чем при первой попытке (один доступ к гибкому диску занимает 120 миллисекунд, а один доступ к основной памяти занимает около 60 наносекунд — это много). Быстрее). Вы могли бы запустить тот же тест на жестком диске, но он более заметен на дисководе, потому что он очень медленный.

Чтобы дать вам общую картину, вот список обычных систем кэширования:

  • Кэш L1 — Доступ к памяти на полной скорости микропроцессора (10 наносекунд, размер от 4 до 16 килобайт)
  • Кэш L2 — доступ к памяти типа SRAM (около 20–30 наносекунд, размер от 128 до 512 килобайт)
  • Основная память — доступ к памяти типа RAM (около 60 наносекунд, размер от 32 до 128 мегабайт)
  • жесткий диск — Механический, медленный (около 12 миллисекунд, от 1 гигабайта до 10 гигабайтов)
  • Интернет — Невероятно медленное (между 1 секунды и 3 дня, неограниченный размер)

Как вы видите, кэш L1 кэширует кэш L2, в котором кэшируется основная память, которую можно использовать для кэширования дисковых подсистем и так далее.

Реклама

Технология кэширования

На этом этапе часто задают вопрос: «Почему бы не сделать так, чтобы вся память компьютера работала с той же скоростью, что и кэш L1, чтобы кэширование не требовалось?» Это сработает, но будет невероятно дорого. Идея кэширования состоит в том, чтобы использовать небольшой объем дорогой памяти для ускорения большого объема более медленной и менее дорогой памяти.

При проектировании компьютера цель состоит в том, чтобы позволить микропроцессору работать на полной скорости с минимальными затратами. Чип с частотой 500 МГц выполняет 500 миллионов циклов за одну секунду (один цикл каждые две наносекунды). Без кэшей L1 и L2 доступ к основной памяти занимает 60 наносекунд, или около 30 потерянных циклов доступа к памяти.

Реклама

Когда вы думаете об этом, кажется невероятным, что такие относительно небольшие объемы памяти могут максимально эффективно использовать гораздо большие объемы памяти. Подумайте о 256-килобайтном кэше L2, который кэширует 64 мегабайта оперативной памяти. В этом случае 256 000 байт эффективно кэшируют 64 000 000 байт. Почему это работает?

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

Реклама

Место ссылки

Давайте посмотрим на следующий псевдокод, чтобы понять, почему локальность ссылок работает (см. Как работает программирование на C, чтобы разобраться в этом):

 Вывод на экран «Введите число от 1 до 100»
Чтение ввода от пользователя
Поместить значение от пользователя в переменную X
Поместите значение 100 в переменную Y
Поместите значение 1 в переменную Z
Цикл Y количество раз
   Разделить Z на X
   Если остаток от деления = 0
      затем выведите « Z кратно X »
   Добавить 1 к Z
Вернуться к циклу
Конец 

Эта небольшая программа просит пользователя ввести число от 1 до 100. Она считывает значение, введенное пользователем. Затем программа делит каждое число от 1 до 100 на число, введенное пользователем. Он проверяет, равен ли остаток 0 (деление по модулю). Если это так, программа выводит «Z кратно X» (например, 12 кратно 6) для каждого числа от 1 до 100. Затем программа завершается.

Реклама

Даже если вы немного разбираетесь в компьютерном программировании, легко понять, что в 11 строках этой программы 9Часть 0251 цикла (строки с 7 по 9) выполняется 100 раз. Все остальные строки выполняются только один раз. Строки с 7 по 9 будут выполняться значительно быстрее из-за кэширования.

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

Это соотношение 95% к 5% (приблизительно) и есть то, что мы называем локальностью ссылки, и именно поэтому кэш работает так эффективно. По этой же причине такой маленький кэш может эффективно кэшировать такую ​​большую систему памяти. Вы можете понять, почему не стоит создавать компьютер с самой быстрой памятью во всем мире. Мы можем обеспечить 95 процентов этой эффективности за небольшую часть стоимости.

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

Реклама

Часто задаваемые вопросы

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

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

Что такое кэширование в памяти?

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

Что такое кэширование и как оно работает?

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

Много дополнительной информации

Статьи по теме

Другие полезные ссылки

  • Руководство для ПК: «Слои» кэша
  • Webopedia: Cache
  • Основы кэширования
  • Создание собственного кэша данных в памяти — PDF
  • Модель кэширования функций ядра операционной системы

 

Процитируйте это!

Пожалуйста, скопируйте/вставьте следующий текст, чтобы правильно цитировать эту статью HowStuffWorks.