Я суммирую значение используемой памяти для каждого процесса (все они), которое отображается в TaskManager, и я понимаю, что их сумма на самом деле не составляет 68% от моей карты памяти, как показано ниже!

Поэтому я устанавливаю ProcessExplorer и вижу, что есть два столбца! Private-Bytes и Working-Set, и то, что показано в нижней части TaskManager, является суммой PrivateBytes, а не Working-Bytes:

Q1: я хочу знать, что это за Private-Bytes? В чем разница с рабочими байтами?

Q2: Когда я изменяю приоритет процесса, что меняется? Я изменяю приоритет процесса с LOW на RealTime, но и PrivateBytes, и WorkingBytes не изменились

С уважением

1 ответ1

1

Ответ 1

Частные байты относятся к объему памяти, запрошенному исполняемым файлом процесса - не обязательно к объему, который он фактически использует. Они являются "частными", потому что они (обычно) исключают файлы, отображенные в памяти (то есть разделяемые библиотеки DLL). Но - вот в чем загвоздка - они не обязательно исключают память, выделенную этими файлами. Невозможно определить, произошло ли изменение в частных байтах из-за самого исполняемого файла или из-за связанной библиотеки. Частные байты также не являются исключительно физической памятью; они могут быть перенесены на диск или в список резервных страниц (т.е. больше не используются, но еще не выгружены).

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

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

Итак, отношения:

  • Частные байты - это то, что ваше приложение фактически выделило, но включает использование файла подкачки;
  • Рабочий набор - это не страничные частные байты плюс отображаемые в памяти файлы;
  • Виртуальные байты - это рабочий набор, постраничные приватные байты и резервный список.

Ответ 2

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .