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

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Microsoft Windows 7 (http://forum.oszone.net/forumdisplay.php?f=95)
-   -   [решено] Как заставить приложение работать с одним ядром процессора (http://forum.oszone.net/showthread.php?t=199496)

tim.exe 14-02-2011 20:04 1612906

Как заставить приложение работать с одним ядром процессора
 
В диспетчере задач для любого приложения можно задать соответствие: сколько процессоров использовать. Есть приложение, которое нормально работает только с одним ядром. Как этому приложению назначить соответствие, чтобы оно автоматически использовало 1 ядро, не заходя каждый раз в диспетчер задач?

Phoenix 14-02-2011 20:25 1612919

Интересует способ только средствами системы, или с привлечением стороннего софта?

Petya V4sechkin 14-02-2011 20:26 1612920

Start an Application Assigned to a Specific CPU

Казбек 14-02-2011 20:31 1612924

tim.exe,
CPU Control - утилита для управления распределением физических ядер процессоров
Программа позволяет управлять приоритетом использования ядрами процессоров (поддерживаются как двухядерные, так и четырехядерные CPU). Вместо того, чтобы оставлять распределение на систему, можно самостоятельно установить последовательность использования свободных ресурсов, например, определив браузер на первое ядро, а межсетевой экран на второе.

Утилита предоставляет несколько режимов управления:
автоматический: CPU-Control самостоятельно отвечает за распределение приложений
ручной: по заранее заданному списку выполняет запуск пользовательских приложений
все процессы запускаются на первом логическом процессоре: для совместимости со старыми приложениями
все процессы запускаются на втором логическом процессоре

Phoenix 14-02-2011 20:32 1612925

Способ предложенный Petya V4sechkin интересный :) Но ведь в этом случае процессор перейдет на одноядерный режим обработки данных для всех без исключения программ? Если конкретно для какого-то приложения, то: Ashampoo Core Tuner

tim.exe 14-02-2011 20:44 1612934

Да нужно конкретно для одного приложения.
Буду пробовать предложенные способы

Petya V4sechkin 14-02-2011 20:44 1612935

Цитата:

Цитата Phoenix
Но ведь в этом случае процессор перейдет на одноядерный режим обработки данных для всех без исключения программ?

С чего это вдруг? Не вводите в заблуждение.

rsod 14-02-2011 20:49 1612939

http://www.robpol86.com/index.php/ImageCFG
кратко:
imagecfg.exe "application/path.exe" -u
p.s. модифицирует исполняемый файл, так что делаем бэкап.

tim.exe 14-02-2011 20:58 1612942

Цитата:

Цитата Petya V4sechkin
Start an Application Assigned to a Specific CPU »

И теперь у меня приложение всегда будет работать с одним ядром?

upd
Вроде понял. Теперь надо ярлык сделать для приложения, но у меня почему то не выходит.
Создаю ярлык, пишу C:\Windows\System32\cmd.exe /C start /affinity 1 "Путь к приложению", запускается командная строка и всё.

бубликов 14-02-2011 21:58 1612980

Попутно в тему: а если использовать программу Process Explorer для этого? Я ей пользуюсь. Она сохраняет значение или в следующий раз снова надо прописывать? Вообще на ХР использовал для этого Prio http://www.prnwatch.com/rus/prio.html но на Семёрке конфликтует...Хотя это для задания приоритета.. но тоже ничего программка.

Phoenix 14-02-2011 22:43 1613023

Цитата:

Цитата tim.exe
запускается командная строка и всё. »

а что Вы еще ждете? :)
Цитата:

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

rsod 14-02-2011 22:43 1613024

tim.exe, используйте вариант с imagecfg.
http://www.robpol86.com/index.php/File:Imagecfg.zip
Запустить командную строку из папки с распакованным файлом, в ней написать:
HTML код:

imagecfg "ПУТЬ_К_ПРИЛОЖЕНИЮ.exe" -u
Тогда данное приложение будет всегда запускаться на одном цп (алгоритм выбора цп зависит от фазы луны).
HTML код:

imagecfg "ПУТЬ_К_ПРИЛОЖЕНИЮ.exe" -a 0x00
позволяет явно указать ЦП, на которых надо запускать приложения
0x01 = 1 = CPU0
0x02 = 2 = CPU1
0x04 = 4 = CPU2
0x08 = 8 = CPU3
0x10 = 16 = CPU4
0x20 = 32 = CPU5
0x40 = 64 = CPU6
0x80 = 128 = CPU7
0x0f = 15 = CPU0, CPU1, CPU2, and CPU3 (1+2+4+8 = 15)

0xff уберёт это ограничение.
И никаких программ в фоне держать не надо. И никаких запусков через командную строку - приложение будет всегда запускаться на одном цп (или на тех, которые были указаны).
Конечно, этот способ мало пригоден для компонентов системы, но для них это и не требуется. А вот для игр, для прикладного ПО - этот способ подходит отлично.

tim.exe 15-02-2011 00:52 1613112

Цитата:

Цитата rsod
imagecfg "ПУТЬ_К_ПРИЛОЖЕНИЮ.exe" -u »

Не работает.
Приложение также использует 2 ядра.
Цитата:

Цитата Phoenix
а что Вы еще ждете? »

command prompt window will briefly flash on the screen на русском "окно командной строки кратко вспыхнет на экране".
Т.е. приложение должно запуститься.

upd
Цитата:

Цитата rsod
imagecfg "ПУТЬ_К_ПРИЛОЖЕНИЮ.exe" -a 0x00 »

Наверное надо так
Код:

imagecfg -a 0x00 "ПУТЬ_К_ПРИЛОЖЕНИЮ.exe"
Но теперь вообще игра не запускается.

Petya V4sechkin 15-02-2011 09:10 1613229

Цитата:

Цитата tim.exe
Теперь надо ярлык сделать для приложения, но у меня почему то не выходит.
Создаю ярлык, пишу C:\Windows\System32\cmd.exe /C start /affinity 1 "Путь к приложению", запускается командная строка и всё.

Если путь в кавычках, то так:
Код:

C:\Windows\System32\cmd.exe /C start /affinity 1 "" "Путь к приложению"

tim.exe 15-02-2011 09:15 1613233

Я победил эту проблему.
Создаем ярлык, в поле расположение пишем
Код:

C:\Windows\System32\cmd.exe /C start /affinity 1 имя приложения.exe
Называем ярлык как хотим. Далее заходим в свойства ярлыка и поле Рабочая папка пишем путь к исполняемому файлу.
Должно получится, чтото типа этого


Время: 12:17.

Время: 12:17.
© OSzone.net 2001-