2009-05-22 5 views

ответ

6

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

+0

Похоже, что это означает разные вещи, в зависимости от того, какая подсистема определяет его. Хорошая ссылка - определенно имеет отношение к дизайну ОС. –

15

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

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

См. What Every Programmer Should Know About Memory - PDF для графиков производительности алгоритмов и размера рабочего набора (около страницы 23) и много другой интересной информации.

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

+1

«Рабочий набор» не является заменой алгоритма страниц? В этом сомневайтесь. – gato

0

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

+0

На самом деле, любая память может быть заменена на диск; для нее нет специальной маркировки. Система пытается обменять менее используемую память, если это возможно. Если ваш рабочий набор, то есть материал, к которому вы часто обращаетесь, больше, чем память, вы поменяете местами, значительно замедляя свою программу. –

+0

Да, я знаю. Я имел в виду, что память не в рабочем наборе сначала заменяется. Это отмечено ... для DEATH! Или обмен, но это почти так же плохо, как смерть. :) –

5

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

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

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

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

0

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

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

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

0

Термин «рабочий набор» относится к алгоритму замены страницы рабочего набора (алгоритм очень хорошо объяснен в this article of Andrew Tanenbaum).

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

Смежные вопросы