Повышение приоритета в Диспетчере задач операционной системы Windows

Как ускорить компьютер и процессор через приоритеты — Mz CPU Accelerator – Заметки Сис.Админа

Повышение приоритета в Диспетчере задач операционной системы Windows

Всем доброго времени суток. Сегодня, как Вы поняли из заголовка, мы поговорим о том как ускорить компьютер и процессор, используя приоритезацию.

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

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

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

Впрочем, давайте размышлять далее.

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

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

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

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

Вот об оном и пойдет речь в данной статье.

Как же ускорить компьютер на практике, используя программу

Месяца два назад я наткнулся на замечательную программку под названием Mz CPU Accelerator. Занимается она как раз тем, что автоматически изменяет процессорный приоритет активного окна или приложения на заранее указанный, что в общем-то нам и нужно, т.к именно оно и позволит ускорить процессор и компьютер.

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

Примечание. Как я раньше не наткнулся на это чудо, – не знаю 🙂

Скачать можно, скажем, отсюда.
Установка предельно проста и на ней я останавливаться не буду.

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

Переходим на вкладку Options и выставляем настройки как на скриншоте:

..а именно:

  • ставим кружок Realtime;
  • отмечаем галочки Load on Windows startup (чтобы программа загружалась сразу при старте системы);
  • Start Activated (чтобы программа была сразу активирована, т.е чтобы не требовала дополнительного нажатия кнопочки дабы приступить к своим обязанностям) и..
  • Start Minimized (чтобы была изначально свернута в трей).

По желанию так же можете отметить Check for updates on startup (чтобы сразу проверялось не вышли ли обновления программы), а так же на свой вкус выбрать как программа будет отображаться в трее: Show Mz CPU Accelerator Icon (в трее будет иконка самой программы) либо Shows CPU Usage (показывает насколько загружен процессор) (из выпадающего списка выбирается цвет цифр).

Всё, остается только нажать кнопку Activate и наслаждаться тем как ускорился компьютер, точнее говоря, активное окно или приложение.

Список полезных примечаний, которые стоит знать

Что еще стоит знать и понимать по этой теме:

  • Примечание: на вкладке Exlusions можно добавить приложения, которые Вы хотите исключить из списка оптимизируемых программой, т.е. она не будет присваивать оным какие-либо приортитеты. Для этого воспользуйтесь кнопкой Add new process и выберите программу, которую хотите исключить;
  • Примечание 2: на вкладке CPU Manager можно распределить процессы на разные ядра (кнопки Add new process и Run new process), т.е, скажем, отвести одним программам одни ядра, а другим другие, что в некотором смысле может сказаться на приросте производительности. По принципу схоже с работой этой программы;
  • Примечание 3: я сам не сталкивался, но допускаю (пусть и маловероятно), что на некоторых машинках могут быть проблемы (в виде притормаживания системы) из-за выбора излишне высокого приоритета. В случае оных попробуйте использовать кружок High вместо Realtime.

Теперь перейдем к послесловию.

Послесловие

Вот такая вот штука. Вообще мне программа очень понравилась, т.к она реально эффективна и позволяет ускорить компьютер и Windows, и, условно говоря, процессор.

К слову, по идее особенно сильно прирост ощутят владельцы многоядерных процессоров, а так же пользователи браузера FireFox (он процессорозависим и при получении Realtime приоритета начинает ощутимо шустрее летать (особенно в купе с этими настройками)) и всех кто как-то связан с процессорозависимыми полновесными приложениями (это я про всякие рендеры в фото, видео и 3D редакторах).

Источник: https://sonikelf.ru/optimizaciya-kompyutera-metodom-upravleniya-prioritetami-processora/

Приоритеты в Windows

Повышение приоритета в Диспетчере задач операционной системы Windows
CodeNet / Языки программирования / Visual Basic

System

По определению, Windows является многозадачной операционной системой. То есть одновременно в ней могут выполняться несколько задач. Однако задача задаче рознь. И различие это заключается в приоритете.

То есть, при выполнении какой-либо программы Windows распределяет ресурсы определенным образом, в зависимости от того, какой приоритет у какого процесса (программы). Программы в дальнейшем я буду называть процессами, так проще. Каждая запущенная программа в Windows представляет собой процесс.

Приоритеты бывают разные – большие, маленькие, но об этом потом. Чем это может нам помочь? А вот чем. Многие сетуют на медленность выполнения программ на Vb. В свое время я на это наткнулся на самом наглядном примере.

Представьте себе программу, которая должна через определенный интервал времени выполнять какое-либо действие – ну, например, что-то выводить пользователю. Просто – скажете Вы. Берем таймер и вперед.

А если помимо этого периодически программа должна что-то еще считать, и не один раз, а таймеров много? Будет тормозить. Причем не Windows, а только программа. Несправедливо? Да. Это значит, что Windows отделяет мало ресурсов Вашей программе, которых ей явно недостаточно. Значит попросить у Windows больше, только как?

Вот так

Значит надо менять приоритет. Самое время о них поговорить. В Windows'98 приоритетов меньше, чем в Windows Me или 2000, но они таки есть J. Вот они.

Приоритет реального времени (real time) – программа выполняется так, как будто она одна и есть цель жизни Windows. Все ресурсы отдаются ей.

Высокий приоритет (high) – программа выполняется так, чтобы оставить чуть-чуть остальным приложениям.

Нормальный (normal) – выполнение идет обычным путем.

Низкий (idle) – если выполнение и идет, то только когда Windows делать нечего.

Ну так вот, запущенная программа сначала получает приоритет Normal, и выполняется своим чередом. При этом приоритете, что бы программа ни делала, она не сможет съесть ресурсов столько, чтобы повис Windows. В теории. Но нам так не подходит.

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

Итак, как же все таки приоритет поменять.

Снова API

Да, за установку приоритета отвечает функция SetPriorityClass. То есть, вызвав ее, и передав все, что ей надо, мы получим нужный приоритет.

Private Declare Function SetPriorityClass _ Lib “kernel32” (ByVal hProcess As Long, _ ByVal dwPriorityClass As Long) As Long

  • hProcess – это Handle процесса. О нем ниже.
  • dwPriorityClass – приоритет. Он то нам и нужен.

Константы приоритетов:

Private Const REALTIME_PRIORITY_CLASS = &H100 Private Const HIGH_PRIORITY_CLASS = &H80 Private Const NORMAL_PRIORITY_CLASS = &H20 Private Const IDLE_PRIORITY_CLASS = &H40

Все просто – берем константу и вперед, но нам надо получить Handle процесса.

То есть, процесс и окно для Windows вещи хоть и почти синонимичные, но не всегда. Handle окна – одна вещь, Handle процесса – совсем другая. То есть, у процесса может быть много окон, но у окна только один процесс владелец. Значит, нам надо научиться находить Handle именно процесса.

В этом нам поможет функция OpenProcess, которая после передачи ей параметров, скажет, что за Handle у процесса.

Private Declare Function OpenProcess _ Lib “kernel32” (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long

dwDesiredAccess – что мы хотим узнать (Handle у процесса бывают разные, для завершения процесса – одни, для получения информации – другой). Мы будем использовать константу PROCESS_QUERY_INFORMATION, то есть опрашивать процесс.

Private Const PROCESS_QUERY_INFORMATION = &H400

bInheritHandle – переменная Boolean. Если ее передать True, то полученный Handle может в будущем быть использован другим процессом. Но нам это не надо. Передаем туда False.

DwProcessId – так, а это очередная вещь – идентификатор (id) процесса. Нам надо и его получить. Как? Просто! Функция GetCurrentProcessId, вызываемая без параметров (слава Богу) просто возвращает id текущего процесса.

Private Declare Function GetCurrentProcessId _ Lib “kernel32” Alias “GetCurrentProcessId” () As Long

Все. Можно вздохнуть и все сделать красиво.

Немного кода

Option Explicit Private Declare Function SetPriorityClass _ Lib “kernel32” (ByVal hProcess As Long, _ ByVal dwPriorityClass As Long) As Long Private Const REALTIME_PRIORITY_CLASS = &H100 Private Const HIGH_PRIORITY_CLASS = &H80 Private Const NORMAL_PRIORITY_CLASS = &H20 Private Const IDLE_PRIORITY_CLASS = &H40 Private Declare Function OpenProcess _ Lib “kernel32” (ByVal dwDesiredAccess As Long, _ ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long Private Const PROCESS_QUERY_INFORMATION = &H400 Private Declare Function GetCurrentProcessId Lib “kernel32” () As Long Private Sub SetPriority(Priority As Long) Dim ProcId As Long 'переменная для id процесса Dim ProcHandle As Long 'переменная для handle процесса ProcId = GetCurrentProcessId 'получим id ProcHandle = OpenProcess(PROCESS_QUERY_INFORMATION, False, ProcId) 'получили Handle Call SetPriorityClass(ProcHandle, Priority) ' ставим приоритет End Sub Private Sub Form_Load() 'ставим приоритет SetPriority HIGH_PRIORITY_CLASS End Sub

Готовый проект тут.

Но сразу предупрежу – приоритет лучше всего менять не постоянно, а на время. То есть, перед критическим участком кода ставим приоритет High или RealTime, а потом снова Normal. Еще раз повторюсь, что использование RealTime приоритета – вещь опасная. Ну вот и все, заставьте Windows поделиться пирогом ресурсов!

«Щас будем творить» © System

Источник: http://www.codenet.ru/progr/vbasic/prior.php

Поделиться:
Нет комментариев

    Добавить комментарий

    Ваш e-mail не будет опубликован. Все поля обязательны для заполнения.