Process Explorer может показывать эффективный приоритет ввода-вывода для данного потока, но не изменять его. Поскольку поддержка приоритетов ввода-вывода является сравнительно новой функцией, большинство программ не устанавливают свои собственные приоритеты ввода-вывода. Похоже, что по умолчанию приоритет ввода-вывода выводится из приоритета потока (а не приоритета процесса), который Process Explorer также не может изменить.
Существуют ли какие-либо другие инструменты, которые могут помочь мне изменить приоритет ввода-вывода данного потока / всех потоков данного процесса?
Ответы:
Готовый инструмент
Сторонним инструментом для установки приоритетов ввода / вывода процесса, либо путем ручного действия пользователя, либо с помощью автоматизации и постоянства, будет Process Lasso . Он может устанавливать практически любые параметры процесса и делать это постоянно или по правилам (например, когда это происходит, измените приоритет ввода / вывода для этого).
Программный ответ
Ответ - простой вызов API для Native API NTSetInformationProcess . Он определяется как класс IoPriority в DDK 2008 года. В NT6 поддерживаются только два уровня: Очень низкий (фон) и Нормальный . Технически определены 5 уровней: критический, высокий, нормальный, низкий и очень низкий. Критический уровень зарезервирован для пейджинговых операций. Нет данных по остальным.
Тем не менее, правильный способ использования приоритета ввода / вывода состоит в том, чтобы запустить «фоновый режим» только через вызов Windows API SetProcessPriorityClass , предоставляющий PROCESSS_MODE_BACKGROUND_BEGIN. Это заставит его использовать очень низкий (фоновый) приоритет ввода / вывода вместе с классом приоритета CPU IDLE. Когда закончите, вернитесь через PROCESS_MODE_BACKGROUND_END.
SetThreadPriority API также позволит этот же фоновый режим для конкретных потоков. Здесь вы должны указать THREAD_MODE_BACKGROUND_BEGIN / END.
источник
Я разработал это, увидев, что никто не беспокоился об этом: https://sourceforge.net/projects/iopriority/ (с открытым исходным кодом)
Эта программа может установить приоритет ввода / вывода для процесса, и он сразу воздействует на все потоки. Его довольно легко изменить, чтобы он работал с потоками, а не с процессами.
источник
ProcessHacker - это инструмент с графическим интерфейсом, который может изменять приоритет ввода-вывода произвольного процесса.
источник
Я неравнодушен к бесплатному приложению под названием PRIO, которое позволяет сохранять приоритеты процесса (помимо прочего) с очень маленьким (менее 1 МБ) размером. После установки он работает в фоновом режиме до тех пор, пока он вам не понадобится, а его интерфейс встроен непосредственно в диспетчер задач Windows, расширяя его функциональность и делая его так, как будто добавленные функции всегда были частью диспетчера задач. Когда вы щелкаете правой кнопкой мыши по процессу в Диспетчере задач с намерением изменить его приоритет, некоторые дополнительные функции PRIO становятся очевидными, поскольку вы можете изменить не только приоритет ЦП процесса, но и его приоритет ввода / вывода (поэтому ваш вопрос) , и вы можете сохранить новые настройки, если хотите. Последнее позволяет сделать так, что каждый раз, когда этот процесс (то есть эта программа) запускается, устанавливаются и сохраняются приоритеты процесса и процессора ввода-вывода, установленные и сохраненные вами.
Приложение имеет другие функции, которые также расширяют функциональность различных вкладок в диспетчере задач Windows. Существуют версии как для 32-, так и для 64-битных систем, и приложение бесплатно для личного использования.
источник