Игорь | Дата: Суббота, 15.07.2017, 01:19 | Сообщение # 1 |
Майор
Группа: Администраторы
Сообщений: 24
Статус: Оффлайн
| Приоритет процессаНаверняка, практически все знают что такое приоритет процесса, если же нет, постараюсь кратко объяснить.
Это понятие, в определенном смысле, равно как для Windows, так и для Linux, а так же для некоторых других операционных систем.
Сейчас речь пойдет об операционных системах Windows Vista и Windows 7.
Windows Vista и Wnidows 7, впрочем, как и предыдущие версии, системы мультизадачные, т.е. могут выполнять параллельно множество программ, причем, еще и мультипоточные, но это уже отклонение, точнее, ненужное углубление в тему.
Каждая программа, запущенная в Windows, представляет из себя процесс или несколько процессов. Под каждый процесс, при его запуске, в системе выделяется память, а так же устанавливается приоритет по умолчанию, если только в самой программе нет упоминания о приоритете, с которым необходимо её запускать.
Чем выше приоритет процесса, тем больше ему выделяется процессорного времени, чем ниже приоритет, тем меньше процессу выделяется процессорного времени. Или если простым языком — чем выше приоритет, тем чаще и больше процессор «уделяет внимание» процессу и его операциям, а чем ниже приоритет, тем меньше «уделяет внимание».
Соответственно это сказывается на скорости выполнение той или иной программы.
Практическая польза от изменения приоритета процессаВ Windows 7 меня изначально удивлял тот факт, что по-сути чисто декоративным процессам, вроде sidebar.exe (гаджеты на рабочий стол) уделяется процессорного времени ровно столько же, как и остальным процессам. При этом sidebar.exe сам по себе не выполняет каких-то сверх важных и сверх нужных функций. Так зачем же ему уделять столько же процессорного времени, как, например, тяжелому ресурсоёмкому приложению, вроде 3D-игры или 3D-редактора с большой сценой?
Исходя из этого вопроса я и начал, что называется, играть с приоритетами процессов. Главное что я понял, выше приоритета Normal (Средний) пользовательским программам лучше не подниматься, ибо тогда Windows Vista/7 может начать некорректно распределять процессорное время и некоторые важные системные процессы начнут «подтормаживать».
На самый крайний случай, нужному вам пользовательскому процессу можно выставить приоритет AboveNormal (Выше среднего), но это в очень редких случаях добавляет ощутимую разницу в производительности программе. Но при этом никто не запрещает снизить приоритет другим, мало или не столь важным процессам, дабы они не отъедали ценное процессорное время, например, у игры. Часто такие манипуляции действительно позволяют выиграть 5-10FPS.
Автоматический запуск процесса с определенным приоритетомНедостаток, который известен многим — при изменении приоритета через «Диспетчер задач», он сохраняется лишь до завершения процесса, потом же процесс вновь запускается с приоритетом по-умолчанию. Т.е. ваши настройки приоритетов не запоминаются. Из-за этого в интернете появилось множество программ, которые запоминают ваш выбор приоритета, а при следующем запуске программы, меняют его за вас автоматически.
Я же изначально не поверил в то, что в Windows нет какого-нибудь инструмента для управления и запоминания приоритета процесса и начал рыть документацию на сайтах Microsoft. Не буду разводить полемику на тему плохой документированности возможностей Windows, но я оказался прав. Любому процессу в Windows можно вручную через реестр указать приоритет и еще некоторые свойства, с которыми он будет запускаться.
Путь к разделу реестра:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution OptionsКак запустить редактор реестра?Нажмите сочетание клавиш Win+R (быстрый вызов команды «выполнить»), в появившемся окошке, в текстовой строке наберите regedit и нажмите Enter =) Для того, что бы указать приоритет для процесса, с которым он должен сразу всегда запускаться, вам нужно в указанной выше ветке реестра создать раздел с его именем. Далее в нем создать еще один раздел, т.е. уже подраздел с названием PerfOptions, а уже в нем создать параметр DWORD (32бита) с названием CpuPriorityClass и задать ему одно из десятичных значений — 1, 3, 5, 6 или 8.8 — приоритет Normal (средний); 1 — приоритет Idle (низкий); 3 — приоритет High (высокий); 5 — приоритет BelowNormal (ниже среднего); 6 — приоритет AboveNormal (выше среднего); Разберем на примере sidebar.exe. В ветке ресстра HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options я создаю раздел sidebar.exe. В нем создаю подраздел PerfOptions. И в этом подразделе создаю параметр DWORD (32бита) с названиемCpuPriorityClass c десятичным значением 1.
Таким образом sidebar.exe теперь у меня всегда будет запускаться с низким приоритетом (Idle). 1024 Так же все вышеописанные операции можно делать и через командную строку (cmd). Я написал небольшой универсальный пакетный файл, который все это делает за пользователя. Ссылка на пакетный файл:save_process_priority.cmdВ пакетном файле все пункты расписаны на русском языке. От пользователя потребуется только вводить нужное ему имя процесса и выбирать приоритет.
Для того что бы ваши настройки приоритета вступили в силу, необходимо перезапустить процесс. Либо если вы внесли сразу несколько системных процессов, перезагрузите систему, так будет проще. Это необходимо потому что данные с реестра считываются только при загрузке и запуске программ, но не при их работе.
|
|
| |
psypeheinty | Дата: Четверг, 27.06.2019, 08:43 | Сообщение # 2 |
Группа: Удаленные
| купить телевизор LG - imac купить, samsung galaxy S9 plus купить
|
|
| |
psypeheinty | Дата: Четверг, 04.07.2019, 13:55 | Сообщение # 3 |
Группа: Удаленные
| hydra сайт - hydra, гидра онион
|
|
| |
hiolda | Дата: Суббота, 20.07.2019, 16:29 | Сообщение # 4 |
Сержант
Группа: Пользователи
Сообщений: 6
Статус: Оффлайн
| спасибо за информацию.
|
|
| |