The OpenNET Project / Index page

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



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

Исходное сообщение
"Линус Торвальдс опроверг проблемы с планировщиком задач, всп..."
Отправлено Аноним, 07-Янв-20 21:09 
Я уже начинаю уставать от этого диалога, если честно.

Я не говорю, что автор графика накосячил (вероятнее всего ошибок в графике нет, хотя к нему не хватает комментариев). Я утверждаю, что подобное поведение (перескакивание потока с ядра на ядро) легко объясняется без пинков в сторону "примитивности" планировщика. Я предоставляю очень вероятный сценарий (в сообщении 11.318), в котором график абсолютно корректен.

Дополню сценарий дополнительными комментариями:
Планировщик, запускаемый на только что освободившемся ядре 2 (которое могло выполнять очень лёгкую работу, и/или в конце добровольно отдавать управление, поэтому на графике, даже если это график полной нагрузки каждого ядра, оно могло быть любым кол-вом процентов), решает забрать нашу сложную ("single-threaded workload", поток A из 11.318) работу у ядра 0, которая недавно была вытеснена другим потоком по причине истечения кванта времени (SMT, preemptive scheduling). Это позволяет избежать простаивания на любом ядре в любой момент времени (что, конечно, хорошо), но да, это действительно перекидывание потока с ядра на ядро. Да, оно ведёт к L1 cache miss, но есть хороший шанс (обеспеченный алгоритмически, ибо планировщик Windows знает про сеты процессоров и NUMA ноды), что L2 или L3 всё ещё содержат нужные данные.
Подчеркну, что ядро 0, отдав наш поток A, могло начать заниматься чем угодно (любая ненулевая нагрузка любой сложности), но это должно было бы произойти (если есть хотя бы один ещё поток в очереди), ядро должно хотя бы иногда переключать контекст (опять, кванты времени). А ядро 2 могло в любой момент (разумеется, после того, как ядро 0 переключилась с потока А) украсть поток A, чтобы не простаивать. Объективно, это позволяет эффективнее использовать все ядра.

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

 

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



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

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