|
Компьютерный форум OSzone.net » Сфера Microsoft » Программное обеспечение Windows » Система - Переключение задач на одно ядро |
|
Система - Переключение задач на одно ядро
|
Ветеран Сообщения: 1344 |
Профиль | Отправить PM | Цитировать Есть ли какая-нибудь утилитка, позволяющая на время действия некоторого процесса отдать ему 3 (2, 1) из нескольких ядер, а остальные процессы автоматически переключить на другие ядра? Естественно, после завершения процесса всё должно автоматически вернуться "на круги своя".
|
|
Отправлено: 21:29, 13-03-2011 |
Ветеран Сообщения: 5380
|
Профиль | Отправить PM | Цитировать |
------- Отправлено: 21:37, 13-03-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Сообщения: 53456
|
Профиль | Отправить PM | Цитировать rsod, в Диспетчере задач на процессе правой кнопкой мыши -> Задать соответствие.
|
Отправлено: 21:39, 13-03-2011 | #3 |
Ветеран Сообщения: 1344
|
Профиль | Отправить PM | Цитировать Казбек, Petya V4sechkin, эти способы я знаю, но мне нужно немножко другое. Мне нужно автопереключение всех выполняющихся и вновь запущенных процессов на, скажем, первые два ядра, а два другие ядра отдать под единственный процесс. Временно, конечно. Я, конечно, думаю, что такого в природе не существует, но всё-таки для верности создал тему
|
Отправлено: 15:01, 14-03-2011 | #4 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать rsod, теоретически это можно сделать. Практически же — малопредсказуемо, как поведут себя в этом случае системные процессы. Проще сделать так, как описано выше («ручками», або программно), а у запускаемого Вами процесса дополнительно выставить высокий приоритет. Я думаю так.
|
|
Отправлено: 17:38, 14-03-2011 | #5 |
Ветеран Сообщения: 1344
|
Профиль | Отправить PM | Цитировать Цитата Iska:
|
|
Отправлено: 19:27, 14-03-2011 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать rsod, принцип понятен.
Цитата rsod:
# Имя текущего пользователя $sUserName = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name # Хэш-таблица для имен владельцев процессов $aProcessOwners = @{ } # Заполняем хэш-таблицу именами владельцев процессов Get-WmiObject "Win32_Process" | % { $aProcessOwners[$_.Handle] = $_.GetOwner().Domain + "\" + $_.GetOwner().User } # Получаем коллекцию процессов, владельцем которых является текущий пользователь, # и которые имеют текущий приоритет выполнения равный 8 (Normal Priority) $cProcess = Get-Process | ` Where-Object -FilterScript { ($aProcessOwners[$_.Id.ToString()] -eq $sUserName) ` -and ($_.PriorityClass -eq [System.Diagnostics.ProcessPriorityClass]::Normal) } # Каждому процессу из полученной коллекции пытаемся понизить приоритет до 6 (BelowNormal Priority) # и назначаем для его исполнения нулевой процессор (битовая маска 0x01 — binary 00000001) $cProcess | ` ForEach-Object -Process { Try { $_.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::BelowNormal $_.ProcessorAffinity = 0x01 } Catch {} } # Запускаем новый процесс «Косынка» $oProcess = Start-Process -FilePath "c:\windows\system32\freecell.exe" -PassThru # Задаём ему высокий приоритет выполнения, равный 13 (High Priority) # и назначаем для его исполнения первый процессор (битовая маска 0x02 — binary 00000010) $oProcess.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::High $oProcess.ProcessorAffinity = 0x02 # Ожидаем завершения запущенного процесса $oProcess | Wait-Process # Вобрат перебираем процессы из коллекции, пытаемся установить приоритет процесса на 8 (Normal Priority) # и назначаем для его исполнения оба из имеющихся процессоров (битовая маска 0x03 — binary 00000011) $cProcess | ` ForEach-Object -Process { Try { $_.PriorityClass = [System.Diagnostics.ProcessPriorityClass]::Normal $_.ProcessorAffinity = 0x03 } Catch {} } * если у процесса и так был пониженный приоритет — нет нужды его трогать; * если у процесса был повышенный приоритет — его лучше не трогать . Поскольку в моём наличии было лишь два ядра, я привёл пример кода именно для такого количества. Вы же можете задавать потребные битовые маски для своего процессора. Если Вам недостаточно «BelowNormal»/«High», и Вы хотите большей разницы — можете экспериментировать. Я не стал. |
|
Отправлено: 04:06, 15-03-2011 | #7 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Разное - [решено] как сделать чтоб процесс автоматически использовал только одно ядро? | mitiya | Microsoft Windows 2000/XP | 11 | 11-05-2014 15:46 | |
Разное - SP2 , нет понели задач и значков на рабочем столе + диспечер задач не открывается | McIntosh | Лечение систем от вредоносных программ | 6 | 10-04-2010 13:08 | |
Работает только одно ядро | nomad73 | Процесcоры | 18 | 03-06-2008 14:46 |
|