реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Распределение ресурсов процессора в Windows
Игорь_M
сообщение Apr 20 2012, 04:56
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 4-03-08
Пользователь №: 35 632



Здравствуйте!

Я недавно наблюдал демонстрацию применения технологии адаптивного квотирования в QNX. То есть возможность выделить гарантированный процент процессорного времени приложению.
Для Windows нашел только возможность ограничить максимальное процессорное время, отводимое процессу (http://www.cyberguru.ru/operating-systems/windows-server2008/server2008-srm.html).
Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором.

P.S.: я понимаю, что для получения указанных возможностей существуют RTOS. Но мне надо точно знать о наличии или отсутствии вышеописанного механизма в Windows. Это нужно, чтобы с уверенностью сказать начальству: "Windows не может этого сделать, поэтому мне нужна RTOS и я буду тратить свое рабочее время на то, чтобы с ней разобраться".
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Apr 20 2012, 05:01
Сообщение #2


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Windows - Windows'у рознь.
ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.
Правда цена вопроса была порядка нескольких килобаксов.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
Игорь_M
сообщение Apr 20 2012, 18:17
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 4-03-08
Пользователь №: 35 632



QUOTE (demiurg_spb @ Apr 20 2012, 08:01) *
Windows - Windows'у рознь.
ЕМНИП то была надстройка для NT которая превращала её в ОСРВ.
Правда цена вопроса была порядка нескольких килобаксов.

Да-да-да) слышал я про такие вещи. Есть еще RTX, но для меня суть вопроса от этого не меняется это будет не стандартная Windows.
Уточню: вопрос заключается в том, можно ли достичь гарантированного выделения процесорного времени в стандартных Windows (XP, 7, Server).
Go to the top of the page
 
+Quote Post
V_G
сообщение Apr 21 2012, 00:50
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Про время не скажу, приоритетами потоков можно управять через SetThreadPriority
Go to the top of the page
 
+Quote Post
Игорь_M
сообщение Apr 22 2012, 06:49
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 4-03-08
Пользователь №: 35 632



QUOTE (V_G @ Apr 21 2012, 03:50) *
Про время не скажу, приоритетами потоков можно управять через SetThreadPriority

Да, спасибо, с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.
Go to the top of the page
 
+Quote Post
V_G
сообщение Apr 22 2012, 11:34
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 818
Регистрация: 15-10-09
Из: Владивосток
Пользователь №: 52 955



Думаю, большего вам никто не даст, винда никогда не станет ОСРВ, не та у нее цель.
Go to the top of the page
 
+Quote Post
Дэм
сообщение Apr 22 2012, 14:05
Сообщение #7


Участник
*

Группа: Свой
Сообщений: 47
Регистрация: 23-05-04
Из: Барнаул
Пользователь №: 18



Нет нельзя гарантировать что процессу отойдет гарантированный квант времени.


--------------------
Правильно заданный вопрос содержит половину ответа...
Go to the top of the page
 
+Quote Post
_sv_
сообщение May 10 2012, 07:12
Сообщение #8


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



Цитата(Игорь_M @ Apr 22 2012, 08:49) *
с winAPI из сферы управления потоками я знаком. этого мало для обеспечения гарантированного времени захвата процессора.

Вы как-то так ставите задачу, что ответа на нее не найти. Что вам, собственно, надо сделать?
Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?
Нет. Win такого не сделает. Готова - работай. Нужен квант времени - используй таймеры.

Гарантировать то, что Ваша программа получит управление строго по истечении времени Win не сможет.
Равно как и не сможет гарантировать непрерывность работы в течении какого-то времени.

Ну, если не полезете в драйвера, конечно. Там сможете многое.
Но с вашей постановкой задачи виндовс перестанет быть самим собой.
Скажем так: CLI в виндовс - моветон. Из этого вытекает все. Ну... почти все.

P.S. Добавил: А вообще ответ на ваш вопрос либо
- "однозначно ДА" в том смысле, что Win позволяет работать и задачам с высоким приоритетом и низким одновременно.
- "однозначно НЕТ" в том смысле, что никто не выключит готовую и активную задачу если есть свободное время.

Сообщение отредактировал _sv_ - May 10 2012, 07:20
Go to the top of the page
 
+Quote Post
gerber
сообщение May 10 2012, 08:47
Сообщение #9


Знающий
****

Группа: Участник
Сообщений: 750
Регистрация: 1-11-11
Пользователь №: 68 088



Цитата(_sv_ @ May 10 2012, 11:12) *
Вам надо, что бы sheduler насильно заставил уснуть готовую и активную задачу?
Нет. Win такого не сделает. Готова - работай.

То есть, Вы хотите сказать, что задача, состоящая из одного бесконечного цикла, полностью подвесит остальные процессы ?

Цитата(Игорь_M @ Apr 20 2012, 08:56) *
Вопрос: есть ли в Windows механизмы, позволяющие гарантировать процессу процент времени владения процессором.

Конечно же, есть. И этот механизм называется вытесняющая многозадачность. Каждому процессу планировщиком гарантированно выделяется квант времени. Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС. Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.

Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.

Сообщение отредактировал gerber - May 10 2012, 08:51


--------------------
"... часами я мог наблюдать, как люди работают." (М. Горький)
Go to the top of the page
 
+Quote Post
_sv_
сообщение May 10 2012, 15:38
Сообщение #10


Участник
*

Группа: Участник
Сообщений: 52
Регистрация: 6-03-11
Пользователь №: 63 436



Цитата(gerber @ May 10 2012, 10:47) *
хотите сказать, что задача ... полностью подвесит остальные процессы ?
Хочу сказать, что для вытеснения задачи должны быть причины.
Если причин нет, то и вытеснения не будет.
Виндовс даст время всем процессам в системе.
Другие ОС - совсем не факт.

Цитата(gerber @ May 10 2012, 10:47) *
Каждому процессу планировщиком гарантированно выделяется квант времени.
Другой вопрос, КОГДА процесс получит этот самый квант времени - никто не знает, поэтому Windows не является РТОС.
Да. Так и есть. Почти.
Виндовос не является RTOS по той причине, что часть событий регистрируется флагами, а не счетчиками.
Поэтому узнать сколько именно событий прошло - не получиться.
Причина таких решений в том, что никто не знает сколько задач будет запущено пользователем.
Если, скажем, запущено 20 задач и каждая просит по 10% времени, то сделать что-либо - сложно.
По этой причине приоритеты виртуализированы.

Цитата(gerber @ May 10 2012, 10:47) *
Система приоритетов в Windows достаточно убога - поэтому в каком порядке в реальности процессы будут получать управление вряд ли прогнозируемо.
Система проритетов Windows - гибка и адаптивна.
Алгоритм учитывает приоритеты задач, профиль производительности, тип ОС (сервер/рабочая станция),
активно ли приложение и еще много чего. Алгоритм меняется от версии к версии Win и установленного SP.

По названным причинам нет возможности установить прямую связь между приоритетом
задач(и) и процессорным временем.

Цитата(gerber @ May 10 2012, 10:47) *
Однако, если вопрос был о выделении какого-то определённого процента времени CPU, скажем, 10% процессу А, 5% процессу Б (адаптивное квотирование) - то таких возможностей в Win нет.
Да.
Go to the top of the page
 
+Quote Post
Игорь_M
сообщение May 11 2012, 04:17
Сообщение #11


Участник
*

Группа: Участник
Сообщений: 53
Регистрация: 4-03-08
Пользователь №: 35 632



Я понял, что Windows не может гарантировать фиксированного процента процессорного времени.
Всем спасибо!
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 28th July 2025 - 15:16
Рейтинг@Mail.ru


Страница сгенерированна за 0.0145 секунд с 7
ELECTRONIX ©2004-2016