Что такое рабочий набор? - PullRequest
15 голосов
/ 22 мая 2009

Я путаюсь с концепцией рабочего набора при чтении кода управления памятью ядра исследования Windows.

Ответы [ 7 ]

18 голосов
/ 22 мая 2009

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

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

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

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

6 голосов
/ 22 мая 2009

Грубо говоря, рабочий набор - это области памяти, которые активно используются. http://en.wikipedia.org/wiki/Working_set

5 голосов
/ 22 мая 2009

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

Примером может быть, если у вас есть две Firefox Windows, свернутая, которую вы не просматривали в течение нескольких часов, и открытая, которую вы просматриваете прямо сейчас. Память, используемая для хранения данных, связанных с открытым окном, будет находиться в рабочем наборе; память, используемая для хранения данных, связанных с окном, которое не открыто и которое вы не просматривали в течение нескольких часов, отсутствует в рабочем наборе.

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

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

0 голосов
/ 15 апреля 2019

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

0 голосов
/ 21 февраля 2018

Термин «рабочий набор» относится к алгоритму замены страницы рабочего набора (алгоритм очень хорошо объяснен в этой статье Эндрю Таненбаума ).

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

0 голосов
/ 22 мая 2009

Рабочий набор - это набор страниц, которые физически находятся в памяти одновременно. Хотя рабочий набор в кавычках и отображается в килобайтах, наименьший рабочий набор, который вы можете иметь, составляет 4 КБ (8 КБ на Itanium), то есть размер страницы в Windows.

Чтобы увидеть рабочий набор процесса, просмотрите столбец «Использование памяти» на вкладке «Процессы» диспетчера задач.

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

0 голосов
/ 22 мая 2009

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

...