Как использовать системный вызов Readahead

Как использовать системный вызов Readahead Советы и хитрости

Системный вызов readahead () сохраняет документ внутри кеша страниц при работе в операционной системе Linux. Каждый раз, когда ядро ​​Linux считывает документы с диска, оно выполняет имитацию опережающего чтения. Когда возникает потребность в одной части документа, ядро ​​немедленно читает следующую часть документа. Например, если другой запрос на эту часть создается позже при последовательном чтении документа, ядро ​​автоматически вернет требуемую информацию. Такая оптимизация является относительно недорогой, поскольку на дисках есть кеши дорожек (очевидно, жесткие диски выполняют опережающее чтение изнутри), а документы обычно распределяются по системе последовательно. Более широкое окно упреждающего чтения может способствовать последовательному доступу к документу, тогда как опережение чтения может быть ненужными накладными расходами для спонтанно доступного документа. Ядро автоматически регулирует длину кадра опережающего чтения в ответ на процент успешных попыток в этом кадре, как указано в разделе «Внутренние части ядра». Если бы ударов было больше, было бы предпочтительнее рама побольше; более узкий экран был бы предпочтительнее, если бы попаданий было меньше. Вызов фреймворка madvise () позволяет программе немедленно управлять размером окна.

ВОЗВРАТ РЕЗУЛЬТАТ

Каждый раз, когда системный вызов Readahead () завершается успешно, по завершении он возвращает 0. Если он не завершится сам, он вернет −1 при потере через errno, установленную для обозначения ошибки.

ОШИБКИ

  • EBADF:эта ошибка возникает, когда файловый дескриптор fd не может использоваться и, следовательно, не доступен только для чтения.
  • EINVAL:эта ошибка возникает, когда системный вызов readahead () может применяться к fd, потому что это не тип документа.

Чтобы использовать любой системный вызов, например системный вызов readahead, вы должны установить библиотеку manpages-dev, чтобы увидеть ее использование и синтаксис. Для этого напишите в оболочке следующую команду.

sudo apt install manpages-dev

Чтобы использовать любой системный вызов, например системный вызов readahead

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

man 2 readahead

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead. Нажмите q для выхода с этой страницы.

После этого откроется экран, показывающий синтаксис и данные о системном вызове readahead

Вы должны сначала включить библиотеку «fcntl.h» при использовании кода языка C. Параметр fd — это дескриптор документа, который указывает, какой документ должен быть прочитан из вашей системы Linux. Параметр смещения определяет контрольную точку для чтения информации, а счетчик определяет общее количество байтов, которые нужно прочитать. Поскольку ввод-вывод выполняется на страницах, смещение по существу корректируется с понижением до границы страницы, и байты становятся считанными до другого края страницы примерно равными или более чем (смещение + счетчик). Системный вызов readahead () не читает документ до конца. Смещение документа доступного определения файла, на которое ссылается файловый дескриптор fd, сохраняется.

Читайте также:  Как открыть Google Chrome из терминала в Ubuntu?

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

sudo apt install gcc

Если кто-Если кто-то хочет дополнительно использовать опережающее чтение на языке Cто хочет дополнительно использовать опережающее чтение на языке C

ОШИБКИ

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

Предсказуемость опережения

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

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

Преимущества системного вызова Readahead

При большом количестве оперативной памяти системный вызов readahead имеет следующие преимущества:

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

Меры предосторожности

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

Заключение

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

Оцените статью
ПОПУЛЯРНЫЕ ТЕХНОЛОГИИ
Добавить комментарий