?

Log in

No account? Create an account
Previous Entry Share Next Entry
2016-01

The Linux Scheduler: a Decade of Wasted Cores

The Linux Scheduler: a Decade of Wasted Cores

"Cores may stay idle for seconds while ready threads are waiting in runqueues"

"Regenerating the scheduling domains is a two-step process: the kernel regenerates domains inside NUMA nodes, and then across NUMA nodes. Unfortunately, the call to the function generating domains across NUMA nodes was dropped by Linux developers during code refactoring. We added it back, and doing so fixed the bug."

"The gist of this bug is that a thread that was asleep may wake up on an overloaded core while other cores in the system are idle"




via soloviewoff / Новости с полей

  • 1
dmih April 17th, 2016
Да, я вот недавно как раз писал во внутренней рассылке, что в силу долбоебизма ядра, 100% занятые процессором ядра на Linux наблюдать при смешанной нагрузке можно крайне редк, поэтому критерий "процессор прилип к 100%" (в целях мониторинга) там надо воспринимать творчески.
Просто вот привык к этому и всё.
И вот иди ж ты ;)

sorhed April 17th, 2016
Эта их дурацкая привычка «сначала напишем для одного ядра, а потом поверх добавим распараллеливание».

Хуже только «сделаем пока message passing локально, а потом добавим код, работающий по сети». Famous last words.

swizard April 17th, 2016
> Хуже только «сделаем пока message passing локально, а потом добавим код, работающий по сети».

А чем это плохо?

sorhed April 17th, 2016
Потому что сеть, бывает, отваливается (иногда целым регионом сразу), или, что ещё хуже, то работает, то не работает целой кучей разнообразных способов (например, может поменяться IP и сразу же вернуться назад, и тогда приходят сообщения, о которых уже и думать забыл).

Когда сразу дизайнишь систему, учитывая особенности сети, это всё учитывается, и в локальном контексте всё тоже работает (как тривиальный случай). А наоборот не выходит, кругом будут leaky abstractions.

justy_tylor April 17th, 2016
Всё так. Но отвалиться может и надолго, так что удобнее считать крайним случаем "курьера с дискеткой".

sorhed April 17th, 2016
Может и надолго. И этот случай должен быть предусмотрен в системе (нужно ли восстанавливаться после долгого простоя? Какие вещи нужно зашатдаунить, а какие оставить живыми? как можно сообщить о проблеме, если интернета нет?), а не падать с сообщением «ой, всё, нимагу, связи нет, разгребайте теперь всё сами».

justy_tylor April 17th, 2016
Это архитектор информационной системы решает. А фреймворк должен предоставить настройки. В том числе, и для применения любых нестандартных средств связи, когда все стандартные упали.

soonts April 17th, 2016
>это всё учитывается, и в локальном контексте всё тоже работает (как тривиальный случай).
Да, помнится когда-то пилил шо-то масштабируемое, отлаживал локально, запуская несколько копий одного процесса на разных портах, которые путём UDP discovery друг друга находили и дальше общались друг с другом по сети.
Но для тестов конечно были и виртуалки тоже, в т.ч. связанные через интернет.

109 April 17th, 2016
о, а где почитать про UDP discovery?

soonts April 17th, 2016
Давно было, помню плохо, но по-моему там была IPv4 сеть и самописный не особо сложный велосипед, который UDP broadcasts слал.

Сейчас в 2016 IPv6, я бы вероятно что-то готовое взял.
Для венды возможно вот это, для всего остального возможно SSDP.

swizard April 17th, 2016
> Потому что сеть, бывает, отваливается (иногда целым регионом сразу), или, что ещё хуже, то работает, то не работает

Дак а чем в этом случае аккуратно спрограммированное локальное многопоточное приложение с message passing проще? Там же те же самые супервайзеры/хартбиты/таймауты и тд, иначе любая внештатная ситуация сразу приводит к режиму "чёт опять всё зависло", который крайне мучительно дебажить потом.

В этом плане с сетью даже легче, потому что траблшутить проще :)

ЗЫ: это я просто к сравнению "напишем для одного ядра — потом распараллелим", там да, другая ситуация

Нет повода не набросить :)

worm_ii April 18th, 2016
А как же "Преждевременная оптимизация — корень всех бед" ?

Re: Нет повода не набросить :)

sorhed April 18th, 2016
Преждевременная — конечно. Но если сразу известно, что это будет работать в распределённой среде...

zeit_raffer April 22nd, 2016
Какая прелесть!
"Этот стон у нас песней зовется..."

  • 1