Трэшинг (информатика)
В информатике , перегрузка происходит в системе с виртуальной памятью хранения компьютера когда реальные ресурсы перегружены , что приводит к постоянному состоянию подкачки и ошибок страниц , замедляя большую часть приложения . обработки на уровне [1] Это приводит производительности компьютера к ухудшению или сбою . Ситуация может продолжаться бесконечно долго, пока пользователь не закроет некоторые запущенные приложения или активные процессы не освободят дополнительные ресурсы виртуальной памяти.
После инициализации большинство программ работают с небольшим количеством страниц кода и данных по сравнению с общим объемом памяти, который требуется программе. Страницы, к которым чаще всего обращаются в любой момент, называются рабочим набором , который может меняться со временем.
Когда рабочий набор ненамного превышает общее количество реальных страниц памяти системы , системы виртуальной памяти работают наиболее эффективно, и на устранение страничных ошибок тратится незначительный объем вычислений. По мере роста общего числа рабочих наборов устранение ошибок страниц остается управляемым до тех пор, пока рост не достигнет критической точки, в которой количество ошибок резко возрастает, а время, затрачиваемое на их устранение, превосходит время, затрачиваемое на вычисления, для которых была написана программа. Это состояние называется подергиванием. Сбой может произойти в программе, которая случайным образом обращается к огромным структурам данных, поскольку ее большой рабочий набор вызывает постоянные ошибки страниц, которые резко замедляют работу системы. Устранение ошибок страниц может потребовать освобождения страниц, которые вскоре придется перечитывать с диска.
Этот термин также используется для обозначения различных подобных явлений , в частности, перемещения между другими уровнями иерархии памяти , когда процесс продвигается медленно, поскольку на приобретение ресурсов тратится значительное время.
«Избиение» также используется в контекстах, отличных от систем виртуальной памяти, например, для описания проблем с кэшем в вычислениях или синдрома глупого окна в сети.
Обзор
[ редактировать ]Виртуальная память работает, рассматривая часть вторичной памяти , например жесткий диск компьютера , как дополнительный уровень иерархии кэша . Виртуальная память позволяет процессам использовать больше памяти, чем физически присутствует в основной памяти . Операционные системы, поддерживающие виртуальную память, назначают процессам виртуальное адресное пространство , и каждый процесс ссылается на адреса в контексте своего выполнения с помощью так называемого виртуального адреса. Чтобы получить доступ к данным , таким как код или переменные по этому адресу, процесс должен преобразовать адрес в физический адрес в процессе, известном как преобразование виртуального адреса . По сути, физическая основная память становится кэшем виртуальной памяти, которая обычно хранится на диске на страницах памяти .
Программам выделяется определенное количество страниц, необходимое операционной системе . Страницы активной памяти существуют как в оперативной памяти, так и на диске. Неактивные страницы удаляются из кэша и записываются на диск , когда основная память заполняется.
каскад серьезных промахов кэша , известных как ошибки страниц Если процессы используют всю основную память и нуждаются в дополнительных страницах памяти, произойдет , что часто приводит к заметной задержке операционной системы реагирования . Этот процесс вместе с бесполезной повторяющейся заменой страниц известен как «перемешивание». Это часто приводит к высокой и неконтролируемой загрузке ЦП, что может привести к остановке системы. В современных компьютерах тряска может возникнуть в системе подкачки (если недостаточно физической памяти или время доступа к диску слишком велико), или в подсистеме связи ввода-вывода (особенно при конфликтах по поводу доступа к внутренней шине ) и т. д.
В зависимости от используемой конфигурации и алгоритмов пропускная способность и задержка системы могут ухудшиться на несколько порядков . Трэшинг — это когда ЦП меньше выполняет «продуктивную» работу и больше «подкачивает». Общее время доступа к памяти может увеличиться, поскольку скорость памяти более высокого уровня равна скорости следующего более низкого уровня в иерархии памяти. [2] ЦП настолько занят подкачкой страниц, что не может реагировать на программы пользователя и прерывается столько, сколько требуется. Перегрузка происходит, когда в памяти слишком много страниц, и каждая страница ссылается на другую страницу. Реальная память уменьшает свою емкость для хранения всех страниц, поэтому используется «виртуальная память». Когда каждая выполняющаяся страница требует эту страницу, которой в данный момент нет в реальной памяти (ОЗУ), она помещает некоторые страницы в виртуальную память и настраивает необходимую страницу в ОЗУ. Если процессор слишком занят выполнением этой задачи, происходит сбой.
Причины
[ редактировать ]В системах виртуальной памяти перегрузка может быть вызвана программами или рабочими нагрузками, которые обеспечивают недостаточную локальность ссылки : если рабочий набор программы или рабочая нагрузка не могут эффективно удерживаться в физической памяти, может произойти постоянная подкачка данных, т. е. перегрузка. Этот термин впервые использовался во времена ленточных операционных систем для описания звука, издаваемого лентами при быстрой записи и чтении данных.Худший случай может произойти на процессорах VAX . Одиночный MOVL
пересечение границы страницы может иметь операнд-источник, использующий режим отложенной адресации смещения, когда длинное слово, содержащее адрес операнда, пересекает границу страницы, и операнд назначения, использующий режим отложенной адресации смещения, когда длинное слово, содержащее адрес операнда, пересекает границу страницы. , а источник и место назначения могут пересекать границы страниц. Эта единственная инструкция занимает десять страниц; если не все находятся в ОЗУ, каждый вызовет ошибку страницы. Таким образом, общее количество страниц, задействованных в этой конкретной инструкции, равно десяти, и все десять страниц должны одновременно присутствовать в памяти. Если какую-либо из десяти страниц невозможно заменить (например, чтобы освободить место для любой из других страниц), инструкция завершится ошибкой, и каждая попытка перезапустить ее будет неудачной до тех пор, пока не будут заменены все восемь страниц.
Сбой в работе системы часто является результатом внезапного резкого увеличения спроса на страницы со стороны небольшого количества запущенных программ. Своп-токен [3] представляет собой легкий и динамичный механизм защиты от выбрасывания. Основная идея состоит в том, чтобы установить в системе токен, который случайным образом передается процессу, у которого возникают страничные ошибки при возникновении сбоев. Процессу, имеющему токен, предоставляется привилегия выделять больше страниц физической памяти для создания своего рабочего набора, который, как ожидается, быстро завершит свое выполнение и освободит страницы памяти другим процессам. Временная метка используется для передачи токенов один за другим. Первая версия swap-токена реализована в Linux . Вторая версия называется preempt swap-token . В этой обновленной реализации токена подкачки для каждого процесса устанавливается счетчик приоритетов для отслеживания количества страниц подкачки. Токен всегда отдается процессу с высоким приоритетом, который имеет большое количество страниц подкачки. Длина отметки времени не является константой, а определяется приоритетом: чем больше страниц процесса выгрузки, тем длиннее будет отметка времени для него.
Другое использование
[ редактировать ]Перетряска наиболее известна в контексте памяти и хранения, но аналогичные явления происходят и для других ресурсов , в том числе:
- Перебор кеша
- Когда доступ к основной памяти осуществляется по схеме, которая приводит к тому, что несколько ячеек основной памяти конкурируют за одни и те же строки кэша, что приводит к чрезмерным промахам в кэше . Это наиболее проблематично для кэшей с низкой ассоциативностью .
- TLB избивает
- Где резервный буфер трансляции (TLB), действующий как кеш для блока управления памятью (MMU), который преобразует виртуальные адреса в физические адреса, слишком мал для рабочего набора страниц. Перегрузка TLB может произойти, даже если перегрузка кэша инструкций или кэша данных не происходит, поскольку они кэшируются в разных размерах. Инструкции и данные кэшируются небольшими блоками ( строками кэша ), а не целыми страницами, но поиск адреса выполняется на уровне страницы. Таким образом, даже если рабочие наборы кода и данных помещаются в кэш, если рабочие наборы фрагментированы по многим страницам, рабочий набор виртуальных адресов может не поместиться в TLB, что приведет к перегрузке TLB.
- Избиение кучи
- Частая сборка мусора из-за невозможности выделить память для объекта из-за недостаточности свободной памяти или недостаточности непрерывной свободной памяти из-за фрагментации памяти называется перебором кучи. [4]
- Процесс взбивания
- Аналогичное явление происходит и с процессами: когда рабочий набор процессов не может быть спланирован (поэтому не все взаимодействующие процессы запланированы для запуска в одно и то же время), они испытывают «затормаживание процессов» из-за неоднократного планирования и незапланирования, прогрессируя очень медленно. [5]
См. также
[ редактировать ]- Алгоритм замены страниц – Алгоритм реализации виртуальной памяти.
- Коллапс перегрузки – снижение качества обслуживания из-за высокого сетевого трафика.
- Конфликт за ресурсы . В вычислительной технике конфликт из-за доступа к общему ресурсу.
- Недостаточно памяти — состояние работы компьютера, при котором дополнительная память не может быть выделена.
- Устаревание программного обеспечения . Склонность программного обеспечения к сбоям из-за внешних изменений или длительной эксплуатации.
Ссылки
[ редактировать ]- ^ Деннинг, Питер Дж. (1968). «Избиение: причины и профилактика» (PDF) . Материалы AFIPS, Осенняя совместная компьютерная конференция . 33 : 915–922 . Проверено 15 февраля 2012 г.
- ^ Л., Хеннесси, Джон (2012). Компьютерная архитектура: количественный подход . Паттерсон, Дэвид А., Асанович, Крсте . (5-е изд.). Уолтем, Массачусетс: Морган Кауфманн. ISBN 9780123838728 . OCLC 755102367 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ Сун Цзян и Сяодун Чжан (2005). «LRU по токенам: эффективная политика замены страниц и ее реализация в системах Linux» . Оценка производительности. стр. 5–29. дои : 10.1016/j.peva.2004.10.002 .
- ^ Методы оптимизации и настройки производительности процессоров IBM, включая IBM POWER8 , «куча + перебор» стр. 170
- ^ Оустерхаут, Дж. К. (1982). «Методы планирования для параллельных систем» (PDF) . Материалы Третьей международной конференции по распределенным вычислительным системам . стр. 22–30.