Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   Как задать ВЫСОКИЙ приоритет ввода/вывода(IoPriority) и PagePriority через реестр/cmd (http://forum.oszone.net/showthread.php?t=209124)

19w85 16-06-2011 14:05 1695554

Как задать ВЫСОКИЙ приоритет ввода/вывода(IoPriority) и PagePriority через реестр/cmd
 
Так задается приоритет "Very Low":
Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\xyz.exe\PerfOptions]
"IoPriority"=dword:00000000

Так задается приоритет "Low":
Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\xyz.exe\PerfOptions]
"IoPriority"=dword:00000001

Так задается приоритет "Normal" (идет по дефолту):
Код:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\xyz.exe\PerfOptions]
"IoPriority"=dword:00000002

Вопрос: как через реестр задать для нужного exe-шника хоть какой-нибудь приоритет выше "Normal"? (Выше среднего, высокий и т.п.? Например, программа Process Lasso умеет задавать приоритет ввода/вывода "Высокий", т.е. установка более высокого приоритета всё-таки возможна, но через реестр ни при каких значениях мне это не удалось)

P.S. Если через реестр задать высокий приоритет всё-таки невозможно, то тогда может быть кто-нибудь подскажет как через командную строку запустить с высоким приоритетом?

Vadikan 16-06-2011 15:14 1695602

19w85, если верить этой статье (судя по всему, человек изучал вопрос), Microsoft не рекомендует задавать приоритет I/O для приложений напрямую. Вместо этого рекомендуется задавать приоритет CPU, откуда уже производной идет приоритет I/O. Поэтому и нет соотв. параметров реестра. В той же статье есть ответ на вопрос, как это делает Process Lasso.

Процессу приоритет задается в командной строке: strat /?

19w85 16-06-2011 15:48 1695632

Vadikan, спасибо за ответ.

Цитата:

Цитата Vadikan
В той же статье есть ответ на вопрос, как это делает Process Lasso. »

А в двух словах, не переведете-перескажите? (не силен в английском и переводчик тут не очень помогает)

Цитата:

Цитата Vadikan
Вместо этого рекомендуется задавать приоритет CPU, откуда уже производной идет приоритет I/O. »

А я читал (например, даже тут http://www.oszone.net/4364/Windows_Vista), что приоритет на CPU как раз не влияет на приоритет I/O и фоновый процесс с низким приоритетом CPU (но дефолтовым нормальным приоритетом I/O) будет также "тормозить" систему, как если бы он был с обычным приоритетом CPU.


Цитата:

Цитата Vadikan
Процессу приоритет задается в командной строке: strat /? »

В данном контексте, конечно, что же имелось ввиду задание приоритета I/O при запуске процесса через батник. (в процессе поиска для unix попадались утилиты, для windows консольных утилит пока не нашёл :()

Vadikan 16-06-2011 16:05 1695650

Цитата:

Цитата 19w85
А в двух словах, не переведете-перескажите? (не силен в английском и переводчик тут не очень помогает »

Там идет речь о программных методах, для разработчиков. Вас же интересует совсем другое.
Цитата:

Цитата 19w85
В данном контексте, конечно, что же имелось ввиду задание приоритета I/O при запуске процесса через батник. »

Повторю свою мысль, простите уж за дублирование
Цитата:

Цитата Vadikan
Вместо этого рекомендуется задавать приоритет CPU, откуда уже производной идет приоритет I/O.
<...>
Процессу приоритет задается в командной строке: strat /?»

И разжую:
Код:

start /high /d"C:\Windows" notepad.exe

Vancouver 16-06-2011 17:06 1695718

Уже постилось, на примере μTorrent Here be dragons: Управление памятью в Windows как оно есть [3/3]

19w85 17-06-2011 06:01 1696069

Цитата:

Цитата Vadikan
Повторю свою мысль, простите уж за дублирование »

Повоторяться не стоит, т.к. это всё равно не ответ на поставленный вопрос. Командой start я, конечно, же умею пользоваться.
Запущенный таким образом с повышенным приоритетом CPU до High НИКАК не влияет на I/O приоритет, он остаётся нормальным: http://i23.fastpic.ru/big/2011/0617/...1fb97cae9f.png
Т.е. вот тоже повторюсь:
Цитата:

Цитата 19w85
А я читал (например, даже тут http://www.oszone.net/4364/Windows_Vista), что приоритет на CPU как раз не влияет на приоритет I/O и фоновый процесс с низким приоритетом CPU (но дефолтовым нормальным приоритетом I/O) будет также "тормозить" систему, как если бы он был с обычным приоритетом CPU. »

Приоритет CPU и I/O разные вещи. Меня интересует повышение именно второго, т.е. I/O

Цитата:

Цитата Vancouver
Уже постилось, на примере μTorrent Here be dragons: Управление памятью в Windows как оно есть [3/3] »

Что именно постилось? Эту статью я уже читал ранее. Ответа на сабж я там не нашёл ни тогда, ни сейчас.

Раз уж выяснилось, что штатными средствами Win7 установка High приоритета на I/O не предусмотрена, то уточняю вопрос:
Возможно ли тогда с помощью какой-нибудь консольной утилиты запустить нужный процесс с High приоритетом I/O?

user_z 17-06-2011 07:19 1696075

Я когда-то искал способ повышения PagePriority до 6, но как оказалось, стандартными средствами этого не сделать. Тоже самое и с приоритетом В/В. Функция установки приоритета В/В - это функция ядра IoSetIoPriorityHint. Возможные варианты значений приоритета В/В. Вот тут уже интересно - высокий и критический приоритетет зарезервирован системой.
Цитата:

Цитата 19w85
Например, программа Process Lasso умеет задавать приоритет ввода/вывода "Высокий", т.е. установка более высокого приоритета всё-таки возможна, но через реестр ни при каких значениях мне это не удалось) »

Следует проверить через windows performance tools, я не думаю, что происходит реальное изменение приоритета В/В. Если происходит, то здесь есть консольная утилита для установки CPU, memory и I/O приоритетов, но только Normal и ниже. Вместе с ней есть исходный код, который Вы можете отредактировать и скомпилировать по-своему усмотрению.

19w85 17-06-2011 07:37 1696081

Цитата:

Цитата user_z
Я когда-то искал способ повышения PagePriority до 6, но как оказалось, стандартными средствами этого не сделать »

И на каком нестандартном варианте повышения в итоге остановились?

Стандартным средствами (через реестр) как оказалось нельзя даже задать дефолтовые PagePriority=5
(например, планирощик заданий запускает все процессы с приоритетом I/O=Low и PagePriority=3. Через реестр можно это "исправить" для нужных процессов и "восстановить" I/O=Normal, а вот для PagePriority только максимум PagePriority=4 можно задать)

Цитата:

Цитата user_z
Следует проверить через windows performance tools, я не думаю, что происходит реальное изменение приоритета В/В. »

Думаете все эти "Process Explorer", "Process hacker", "Process Lasso" ошибочно пишут I/O=High для тех процессов где поднят приоритет до высокого?

Цитата:

Цитата user_z
Если происходит, то здесь есть консольная утилита для установки CPU, memory и I/O приоритетов, но только Normal и ниже. »

Normal и ниже можно и через рестр задать...:(

user_z 17-06-2011 07:52 1696086

Цитата:

Цитата 19w85
И на каком нестандартном варианте повышения в итоге остановились? »

Оставил как есть :(
Цитата:

Цитата 19w85
Стандартным средствами (через реестр) как оказалось нельзя даже задать дефолтовые PagePriority=5
(например, планирощик заданий запускает все процессы с приоритетом I/O=Low и PagePriority=3. Через реестр можно это "исправить" для нужных процессов и "восстановить" I/O=Normal, а вот для PagePriority только максимум PagePriority=4 можно задать) »

Ага, знаю. Такое ощущение, что пользователей ограничивают.
Цитата:

Цитата 19w85
Думаете все эти "Process Explorer", "Process hacker", "Process Lasso" ошибочно пишут I/O=High для тех процессов где поднят приоритет до высокого? »

Сейчас испытаю, чуть позже отпишусь. Дело в том, что высокий приоритет - зарезервирован на уровне ядра.
Цитата:

Цитата 19w85
Normal и ниже можно и через рестр задать... »

Там же есть исходный код - замените или допишите свою константу и скомпилируйте.

user_z 17-06-2011 08:44 1696102

Цитата:

Цитата user_z
чуть позже отпишусь. »

Интересно то, что я не нашел в WPT высокого приоритета - там есть <=Low и >=Normal. Поэтому пришлось протестрировать "в живую":

Так что Вы правы - установка высокого приоритета возможна.
А что Вам мешает использовать многократно упоминаемый
Цитата:

Цитата 19w85
Process Lasso»

для Вашей цели? Ведь в нем можно установить

19w85 17-06-2011 09:06 1696114

Цитата:

Цитата user_z
Так что Вы правы - установка высокого приоритета возможна.

Отлично :)

Цитата:

Цитата user_z
А что Вам мешает использовать многократно упоминаемый Process Lasso»

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

Цитата:

Цитата user_z
Там же есть исходный код - замените или допишите свою константу и скомпилируйте. »

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

user_z 17-06-2011 09:23 1696125

Цитата:

Цитата 19w85
При компилировании исходного кода из архива по той ссылке сыпятся куча ошибок (уже на двух компиляторах проверил)...т.е. еще ничего даже не редактировал в нём. »

Я сейчас установлю VS и посмотрю, может у меня что получиться.

Valeant 17-06-2011 09:28 1696127

Уточню согласно книги Windows Internals Fifth Edition - стр.547 существует:
I/O Priority ---------- Usage
Critical --------------- Memory manager
High ----------------- Not use
Normal -------------- Normal application I/O
Low ----------------- Not use
Very Low ----------- Schedule, Superfetch, defrag, content index, background activities

user_z 17-06-2011 09:56 1696140

Valeant,
Это верно для Vista, в Seven Schedule и defrag получают приоритет Low

19w85 17-06-2011 10:30 1696167

Цитата:

Цитата user_z
Я сейчас установлю VS и посмотрю, может у меня что получиться. »

Ну как результаты?

user_z 17-06-2011 10:59 1696182

Цитата:

Цитата 19w85
Ну как результаты? »

Скомпилировалось без ошибок, поменял константы, но высокий приоритет

Да я вообщем-то и не программист - в школе на паскале только писал, так что здесь мои возможности закончились. :dont-know
Интуитивно могу сказать, что нужен выход на уровень ядра, то есть нужен драйвер.

19w85 17-06-2011 12:21 1696257

Цитата:

Цитата user_z
но высокий приоритет не ставит, зараза »

Присмотрелся, эта утилитка меняется сразу все три параметра. В исходном виде может пригодится разве что вернуть PagePriority=5 для процессов запущенных планировщиком заданий.

А если подправить значение PagePriority на большее 5, тоже не поставится?

P.S. А для установки High приоритета I/O через батник я всё-таки нашёл работающий вариант:
http://processhacker.sourceforge.net...php?f=14&t=139

Vadikan 17-06-2011 12:30 1696262

Цитата:

Цитата 19w85
Запущенный таким образом с повышенным приоритетом CPU до High НИКАК не влияет на I/O приоритет, он остаётся нормальным »

Я и не говорил, что это изменит приоритет I/O. Process Explorer показывает приоритет "как есть". Но вопрос в том, что на самом деле происходит, если сравнить запуск процесса с высоким приоритетом CPU (и обычным I/O) с запуском с высоким I/O, который в принципе не предусмотрен для приложений.

Ведь установка приоритета у вас не является самоцелью, не так ли? Должно быть, вы преследуете какую-то более конкретную цель. И раз уж вы так упорно ее преследуете, я полагаю, вы проводите сравнительное тестирование производительности приложения с разными приоритетами. Опубликуйте результаты!

19w85 17-06-2011 13:00 1696299

Цитата:

Цитата Vadikan
И раз уж вы так упорно ее преследуете, я полагаю, вы проводите сравнительное тестирование производительности приложения с разными приоритетами. Опубликуйте результаты!»

Я не провожу сравнительное тестирование. Я ищу баланс при котором обе нужные мне программы (одна из них utorrent, вторая специфическая и требовательная, критичная к задержкам) будут работать и не мешать друг другу. Понижение приоритетов utorrent'а меня не устроило, поэтому решил подойти с другой стороны. По первым наблюдениям High I/O ничего мне не дало, видимо проблема была не в этом. А вот с PagePriority пока не определился, поэтому всё ещё ищу способ задать значение больше 5.

user_z 17-06-2011 13:21 1696311

Цитата:

Цитата 19w85
А если подправить значение PagePriority на большее 5, тоже не поставится? »

Нет, ни 6, ни даже 0 не ставит. Только от 1 до 5.

uTorrent у меня работает с Normal I/O и Memory Priority = 0

19w85 17-06-2011 13:45 1696324

Цитата:

Цитата user_z
Нет, ни 6, ни даже 0 не ставит. Только от 1 до 5. »

Жаль...получается просто нечем выставить PagePriority больше 5... :(

Цитата:

Цитата user_z
uTorrent у меня работает с Normal I/O и Memory Priority = 0 »

О, а ноль для Memory Priority я даже ещё нигде и не пробовал, попробую :)
I/O именно Normal только и подходит для utorrent, а вот с Memory Priority возможны варианты, это как раз похоже мне и нужно.

Valeant 17-06-2011 15:48 1696438

Цитата:

19w85,
Я не провожу сравнительное тестирование. Я ищу баланс при котором обе нужные мне программы (одна из них utorrent, вторая специфическая и требовательная, критичная к задержкам) будут работать и не мешать друг другу. Понижение приоритетов utorrent'а меня не устроило, поэтому решил подойти с другой стороны.
А не проще озвучить проблему - одна часть ее видна, а вот вторая пока нет.


Время: 23:58.

Время: 23:58.
© OSzone.net 2001-