The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Линус Торвальдс опроверг проблемы с планировщиком задач, всп..."
Отправлено Ordu, 08-Янв-20 02:06 
>  Объективно, это позволяет эффективнее использовать все ядра.

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

> В статье же, по незнанию автора (статьи, ибо автор статьи и графика
> может не совпадать) этот эффект истолковывается иначе (и делаются неверные выводы),
> якобы ядро 2 крадёт поток A у ядра 0 только потому,
> что оно освободилось (в реальности ядро 0 просто отключилось от потока
> A по расписанию, и начало другую работу; если другой работы бы
> не было, планировщик продлил бы т.н. Quantum Target и вернул управление
> потоку A). Утверждая про некорректное истолкование, я напрямую опираюсь на чётко
> описанный материал в самой авторитетной технической книге по внутренностям Windows.

Ах вот оно что... Знаешь как планировщику следовало бы поступить? Ему бы следовало мониторить активность задач, и заметить, что одна задача серьёзно занята чем-то и хочет сожрать столько процессорных квантов, сколько возможно, и в то же время он должен был заметить, что суммарная производительность остальных ядер более чем в 100 раз больше, чем требуется остальным задачам, а раз так, то следует прибить гвоздями занятую задачу к тому ядру, на котором он выполняется, и шедулить остальные задачи по свободным ядрам.

Именно это делает ядро linux, именно поэтому в аналогичной ситуации на линуксе, сильно занятая задача будет "захватывать" ядро на несколько секунд за раз, а не на 40 миллисекунд в среднем. Ядро windows этого не делает, что ты своими объяснениями подтверждаешь. Именно поэтому "dumb windows scheduler", и "ненужное перекидывание потоков".

Обрати внимание, несмотря на техническую неграмотность, автор статьи лучше тебя ухватил суть проблемы. Это очень похоже на тот редкий случай, когда избыточная грамотность вредит.

Самое интересное, что твоё более точное описание ничего не изменило в моём понимании ситуации. Ну, то есть, понятно, что крайне сложно выстроить идеальную ситуацию, когда в системе есть ровно один процесс, и всегда есть много процессов, и даже если они и спят 99.99% времени, всё же они иногда просыпаются и требуют квантов процессорного времени. Это настолько понятно, что не заслуживает даже упоминания, если по-хорошему. И способность венды держать занятый поток на одном ядре в идеальной ситуации, когда нет этих почти-всегда-спящих процессов -- совершенно бесполезная способность, потому что так не бывает. А как при этом объяснять это -- "ядро крадёт задачу" или "планировщик выделяет квант другой задаче" -- с мой точки зрения не важно совершенно: это просто разные уровни объяснений. Так же как одну и ту же программу можно написать на lisp'е или на asm'е, в каждом случае выбирая различные абстракции в предметной области, так и объяснять можно на разных уровнях и в разных абстракциях.

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру