Что делает процессор, когда ожидает ответа от жесткого диска

Обновлено: 06.07.2024

Сегодня нашим соавтором является Кристиан Паредес, старший системный администратор Blue Box Group, веб-хостинга, ориентированного на Ruby on Rails, который специализируется на предоставлении экспертных знаний, необходимых для поддержания работы мощных приложений с максимальной производительностью. Кристиан поддерживает внутреннюю инфраструктуру Blue Box Group в отличном состоянии и обеспечивает поддержку клиентов третьего уровня. Он также работает волонтером в LOPSA, гильдии системных администраторов. Мы рады, что он поделился своим опытом в области дискового ввода-вывода.

Обновленная версия статьи, впервые опубликованной 10 февраля 2011 г.

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

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

  • Есть ли у вас узкое место ввода-вывода?
  • Что влияет на производительность ввода-вывода?
  • Как лучше всего устранить узкое место ввода-вывода?
  • Как вы отслеживаете дисковый ввод-вывод?

Банановый слизень против F-18 Hornet

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

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

Задержка диска составляет около 13 мс, но зависит от качества и скорости вращения жесткого диска. Задержка оперативной памяти составляет около 83 наносекунд. Насколько велика разница? Если бы RAM был F-18 Hornet с максимальной скоростью 1190 миль в час (более чем в 1,5 раза больше скорости звука), скорость доступа к диску была бы банановой пулей с максимальной скоростью 0,007 миль в час.

Вот почему кэширование данных в памяти так важно для производительности — разница в задержке между ОЗУ и жестким диском огромна * .

Есть ли у вас узкое место ввода-вывода?

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

Например, допустим, требуется 1 секунда, чтобы получить 10 000 строк из MySQL и выполнить некоторые операции с этими строками.

Выполняется доступ к диску во время извлечения строк. В это время процессор простаивает. Он ждет на диске. В приведенном выше примере доступ к диску занял 700 мс, поэтому ожидание ввода-вывода составляет 70%.

Вы можете проверить процент ожидания ввода-вывода с помощью команды top , доступной во всех версиях Linux.

В приведенных выше выходных данных ожидание ввода-вывода составляет 12,1 %. Этот сервер имеет 8 ядер (через cat /proc/cpuinfo). Это очень близко к (1/8 ядра = 0,125). Доступ к диску может замедлять работу приложения, если ожидание ввода-вывода постоянно приближается к этому порогу.

Что влияет на производительность ввода-вывода?

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

На количество операций ввода-вывода в секунду влияют четыре основных фактора:

  • Многодисковые массивы. Чем больше дисков в массиве, тем больше операций ввода-вывода в секунду. Если один диск может выполнять 150 операций ввода-вывода в секунду, то два диска могут выполнять 300 операций ввода-вывода в секунду.
  • Среднее количество операций ввода-вывода в секунду на диск. Чем большее количество операций ввода-вывода в секунду может обрабатывать каждый диск, тем выше общая емкость операций ввода-вывода в секунду. Это во многом определяется скоростью вращения привода.
  • Фактор RAID. Скорее всего, ваше приложение использует конфигурацию RAID для хранения, а это означает, что вы используете несколько дисков для обеспечения надежности и избыточности. Некоторые конфигурации RAID имеют значительные ограничения на операции записи. Для RAID 6 каждый запрос на запись требует 6 дисковых операций. Для RAID 1 и RAID 10 запрос на запись требует только 2 дисковых операций. Чем меньше количество дисковых операций, тем выше емкость IOPS. В этой статье подробно рассказывается о производительности RAID и IOPS.
  • Рабочая нагрузка чтения и записи. Если у вас высокий процент операций записи и конфигурация RAID, которая выполняет много операций для каждого запроса на запись (например, RAID 5 или RAID 6 ), количество операций ввода-вывода в секунду будет значительно ниже.

Расчет максимального количества операций ввода-вывода в секунду

Более точный способ определить, насколько вы близки к максимальной пропускной способности операций ввода-вывода, — рассчитать теоретическое значение IOPS и сравнить его с фактическим значением IOPS. Если числа близки, возможно, возникла проблема с вводом-выводом.

Теоретическое количество операций ввода-вывода в секунду можно определить по следующему уравнению:

Операций ввода/вывода в секунду = число дисков * Среднее количество операций ввода/вывода на 1 диск в секунду< /i>
% рабочей нагрузки чтения + (коэффициент рейда * % рабочей нагрузки записи)

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

Рассчитав теоретическое значение IOPS, сравните его со столбцом tps, отображаемым через sar. Столбец tps показывает количество передач в секунду, которые были выданы на устройство. Это ваш фактический IOPS. Если количество транзакций в секунду близко к теоретическому IOPS , возможно, у вас недостаточно ресурсов.

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

Как лучше всего устранить узкое место ввода-вывода?

Даже если банановый слизень следует всем советам Тело за 4 часа, он никогда не будет таким же быстрым, как F-18 Hornet. Точно так же вы можете настроить дисковое оборудование для повышения производительности, но это сложно и не приблизится к скорости оперативной памяти.

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

Когда мы видим узкие места ввода-вывода в Blue Box Group, мы сначала пытаемся настроить службу, которая использует больше всего операций ввода-вывода, и кэшировать больше своих данных в ОЗУ . Например, мы обычно настраиваем наши серверы баз данных так, чтобы они имели как можно больше оперативной памяти (до 64 ГБ или около того), а затем располагали как можно больше кэша MySQL в памяти.

Три вывода

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

Больше серверов? Или более быстрый код?

Добавление серверов может помочь при медленном коде. Scout APM поможет вам найти и исправить неэффективный и дорогостоящий код. Мы автоматически выявляем вызовы N+1 SQL, нехватку памяти и другие проблемы, связанные с кодом, поэтому вы можете тратить меньше времени на отладку и больше времени на программирование.

См. также

* - Если разница между задержкой ОЗУ и диска кажется вам разительной, так и должно быть -- это огромная разница в производительности. Если это не соответствует вашему повседневному опыту работы с компьютером, имейте в виду три вещи: 1) 13 мс — это время поиска на жестком диске — если вы читаете непрерывные данные из нефрагментированного файла, тогда * скорость передачи * жесткого диска (не скорость поиска) имеет значение. 2) 13 мс по-прежнему чрезвычайно быстро по человеческим меркам. 3) Существует несколько механизмов, позволяющих уменьшить влияние низкой производительности жесткого диска, например подкачка страниц, очередь записи и резидентный кэш жесткого диска.

Всегда было известно, что операции с Диском выполняются медленно, и мы знаем, почему они замедляются. Итак, вопрос здесь в том, почему мы должны ждать ввода-вывода или почему существует такая вещь, как IOWait и т. д.?

Я заметил, что когда вы выполняете некоторые задачи ввода-вывода в фоновом режиме, ваш компьютер в основном работает намного медленнее, особенно я заметил, что при использовании Linux, если вы выполняете больше времени, /O задачи, ОС становится практически непригодной для использования, пока они не будут выполнены.

Действительно, я тоже нашел эту тему в статье, там фрагмент:

Ожидание операций ввода-вывода составляет 12,1%. Этот сервер имеет 8 ядер (через cat /proc/cpuinfo). Это очень близко к (1/8 ядра = 0,125)

По сути, это означает, что компьютер СИЛЬНО замедляет работу, почему? Я имею в виду ОК, теперь обычный компьютер имеет как минимум 2 ядра, иногда 4, а иногда и больше из-за гиперпоточности или чего-то в этом роде. Но теперь возникает вопрос, почему процессор на самом деле должен оставаться там, практически ничего не делая, кроме как просто ожидая ввода-вывода? Я имею в виду основную идею или архитектуру управления процессами, сейчас я не знаю, виновата ли за это ОС, или все сводится к аппаратной части, но нужно сделать так, чтобы процессор ждал или отключался. регулярно проверяйте, одновременно выполняя множество других задач и возвращаясь к процессу ввода-вывода только тогда, когда он будет готов. В самом деле, если это такая сложная задача, и процессору придется подождать, то почему аппаратное обеспечение не справляется с этим более эффективно?Например, может быть какой-то мини-процессор, который будет просто ждать его и доставлять небольшую часть данных реальному процессору, как только он вернется к процессу, и поэтому процесс будет повторяться, и у нас не будет практически выделить целое ядро ​​​​процессора для процесса копирования данных. Или я был бы тем, кто изобрел бы что-то подобное и получил бы за это Нобелевскую премию? :С

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

Жесткий диск размер не

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

Обработка жесткого диска

Жесткий диск не влияет на скорость работы процессора. Однако жесткий диск является одной из самых медленных частей компьютера и фактически заставляет процессор ждать получения дополнительной информации. Жесткий диск является узким местом для данных: это член команды, который всех замедляет. Размер жесткого диска не имеет значения, но более быстрому жесткому диску требуется меньше времени для отправки данных процессору. Кроме того, жесткий диск можно использовать для хранения файла подкачки, также известного как виртуальная память, который действует как расширение основной памяти компьютера, ОЗУ. Жесткий диск большего размера может поддерживать файл подкачки большего размера. По данным Microsoft, максимальный размер файла подкачки составляет 16 ТБ, однако большинство компьютеров используют только однозначное число ГБ пространства. Например, файл подкачки размером 8 ГБ будет одинаково работать на жестком диске емкостью 20 ГБ и на жестком диске емкостью 500 ГБ.

Жесткий диск и Интернет

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

Жесткий диск

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

Процессор

ЦП компьютера — самая быстрая часть системы. Его работа заключается в обработке данных, и обычно остальная часть компьютера ожидает передачи ему информации для работы. Жесткие диски являются одним из источников, из которых процессор получает данные, но обе части работают независимо друг от друга.

Сеть

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

Дэн Стоун начал профессионально писать в 2006 году, специализируясь на образовании, технологиях и музыке. Он веб-разработчик в коммуникационной компании, ранее работал на телевидении. Стоун получил степень бакалавра журналистики и магистра искусств в области коммуникативных исследований в Университете Северного Иллинойса.

Сеть интерфейсная карта подключается к компьютеру

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

Часовая частота

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

Архитектура

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

Другие части

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

Ядра

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

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

Аарон Парсон пишет об электронике, программном обеспечении и играх с 2006 года. Он участвует в создании нескольких веб-сайтов, посвященных технологиям, и сотрудничает с NewsHour Productions. Парсон получил степень бакалавра искусств в Государственном колледже Эвергрин в Олимпии, штат Вашингтон.

Читайте также: