Что такое Windows Priority and Affinity и какие преимущества она предоставляет?

9

Что такое Приоритет и Сходство (находится в диспетчере задач) и для чего они используются:

Найдено в диспетчере задач

В каких ситуациях их следует / можно использовать и какие преимущества можно найти при настройке этих параметров.

Джеймс Мерц
источник

Ответы:

3

Настройка схожести делает что-то, но вы никогда не захотите использовать это.

Установка соответствия процессору заставляет Windows использовать только выбранный процессор (или ядра). Если вы установите привязку к одному ЦП, Windows будет запускать это приложение только на этом ЦП, но не на других.

Windows автоматически помещает запущенные приложения на наименее загруженный процессор, поэтому ограничение его одним процессором не позволяет Windows выполнять свою работу. Даже если CPU / core 1 заняты другими приложениями, Windows не сможет запустить приложение с установленной привязкой на CPU / Core 2.

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

shf301
источник
5
> Ты никогда не захочешь им пользоваться. Не правда. Если у вас однопоточное приложение, оно не может использовать потоки / ядра ЦП в их полном объеме, и Windows ничего не может сделать, чтобы заставить / обмануть его. Если у вас есть два однопоточных приложения, вы можете указать Windows, чтобы каждое из них использовало отдельный поток / ядро, чтобы вместо общего использования ЦП около 50-75% вы могли довести его до 100% (каждое ядро). максимально используется одной программой). Так что да, вы действительно можете использовать настройки, но это особый сценарий, который большинство людей не будет знать / осознавать / нуждаться.
Synetech
2
Если у вас есть два однопоточных приложения, Windows будет запускаться в каждом потоке / ядре, и вы получите 100% загрузку ЦП без установки соответствия. Для тестирования я просто запустил 4 экземпляра однопоточной программы на моей 4-х ядерной машине и получил 100% загрузку ЦП. Windows достаточно умна, чтобы эффективно планировать процессоры.
shf301
Я думаю, это зависит от системы и / или версии Windows. Я видел (XP), что оба ядра зависли на 50-75%, где оба процесса были установлены на оба ядра, и ручная установка их максимально использовала процессор.
Synetech
@Synetech: Это кажется почти невозможным. Это должно было бы переместить два процесса из ядра в ядро, всегда оба одновременно.
Дэвид Шварц
Другой действительный вариант использования для этого: есть приложение, которое может использовать все доступные процессоры и может препятствовать нормальной работе других программ и / или заставить ОС очень медленно реагировать на ввод пользователя. В этом случае кто-то может решить ограничить такое приложение только некоторыми процессорами. Как разработчик я часто использую эту функцию при профилировании своих приложений, интенсивно использующих процессор, поскольку сам процесс профилирования требует использования процессора.
Эяль Рот
2

Установка сходства говорит этому процессу, на каких процессорах ему разрешено работать.

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

Например, если процессу было разрешено запускать свое собственное ядро, он мог бы работать (почти) в режиме реального времени без того, чтобы эти 70 оконных утилит постоянно прерывали и меняли стек в процессоре для своего собственного временного интервала. Приложения реального времени - это то, что Windows никогда не сможет сделать до того, как многопроцессорные / многоядерные системы появятся на сцене, потому что ОС будет постоянно прерывать / переключать задачи приложения для своих собственных целей. Теперь это в основном можно преодолеть, изолировав один процессор приложений реального времени, не позволяя всем другим приложениям в системе использовать этот процессор. Это очень нишевая тема, но такие системы, как (реальные) симуляторы полета, автоматизация производства и системы обратной связи управления, зависят от архитектуры реального времени.

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

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

Более старые приложения, которые ломаются при распределении по нескольким процессорам, могут эффективно ограничиваться одним ядром / процессором для решения проблемы.

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

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

Эван Плейс
источник
То, что делает сходство намного менее полезным, чем многие думают, должно быть так: установка привязки вашего процесса к некоторому подмножеству доступных процессоров. не отключает ничего из этих процессоров. Для этого вам нужно перейти ко всем другим процессам в системе, чтобы они не попадали в процессор, который вы хотите иметь для себя. Это почти никогда не практично.
Джейми Ханрахан
Это возможно с использованием стороннего программного обеспечения . Почему MS не включает эту функциональность по умолчанию, я не знаю.
Эван Плейс,
Потому что, как я уже писал, это не так уж и полезно. И это очень склонно к неправильному использованию. На самом деле обычный результат того, чтобы быть слишком «креативным» со сродством, состоит в том, что вещи не работают, когда они могли бы быть. Обычно лучше запускать поток на том процессоре, который, на ваш взгляд, не является предпочтительным процессором, а не вообще (после того, как вы по глупости настроили привязку, чтобы запретить ему доступ к процессорам, которые в противном случае простаивают). Механизм Windows по умолчанию «идеальный процессор» и «предыдущий процессор» обеспечивает хорошую когерентность кэша без такого тупого инструмента маски сходства.
Джейми Ханрахан
2

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

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

То, что позволяет вам сделать привязанность, - это ограничить ваше приложение для питания процессора 7/8 ядрами, чтобы всем остальным был гарантирован доступ к относительно неиспользуемому процессору, и вам не приходилось постоянно сталкиваться с заиканиями и перебоями в использовании всего остального на вашем компьютере. пока затмение затихает.

Джим У
источник
В этом случае вам было бы намного лучше, просто установив процесс загрузки процессора на низкий приоритет.
Джейми Ханрахан
1

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

Например: начиная с Windows Vista, проигрыватель Windows Media автоматически получает более высокий приоритет, чтобы обеспечить плавное и непрерывное воспроизведение мультимедийных файлов, по умолчанию только около 20% процессорного времени доступно другим процессам. Это просто пример, чтобы помочь вам понять, что делают приоритеты. (Вы можете прочитать больше о приоритетах Media Player в Vista на Technet .)

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

Дэвид М
источник
Сладкое спасибо! Так что хорошего руководства по использованию Afinity?
Джеймс Мерц
Хорошее руководство по использованию близости: «Не надо».
Джейми Ханрахан
«Только 20% процессорного времени доступно другим процессам» не является точным описанием. Фактическая реализация состоит в том, что потоку, который выбирает планировщик мультимедийного класса, разрешается запускать до 80% каждого интервала планирования в классе приоритетов в реальном времени. Это не обязательно должно использовать так много, и если это не так. более 20% будут доступны для других тем.
Джейми Ханрахан,
1

Прекрасным примером этого являются старые компьютерные игры (или другое программное обеспечение), особенно когда 32-разрядные игры (приложения) эмулируются на современном 64-разрядном компьютере. Устанавливая привязку к старым играм, ограничивая их только четырьмя ядрами, можно ЧАСТО избегать сбоев, чтобы запускать игры с упрямством. Некоторые движки рендеринга, используемые в старых играх, видеоредакторах и графическом программном обеспечении с аппаратным ускорением или САПР, не понимают более четырех ядер ЦП и вылетают при запуске.

Я не создаю аккаунт, чтобы просто опубликовать это, чтобы найти меня в Google 'kieseyhow'

Kieseyhow
источник