LINUX.ORG.RU
ФорумTalks

MS - Многоядерность требует переписать заново операционные системы


0

0

Программист Microsoft Дейв Проберт, участвующий в разработке ядра Windows, выступал на прошлой неделе с презентацией. Она проходила в спонсируемом Microsoft и Intel Исследовательском Центре Параллельных Вычислений при Иллинойском Университете. В выступлении Проберт рассматривал дальнейшее развитие ядра операционной системы, учитывая массовый переход на использование многоядерных процессоров. Он задавался вопросом, почему переход на многоядерное железо не улучшил скорость реакции компьютера на действия пользователя.

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

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

Дейв Проберт проектирует в Microsoft следующее поколение ядра Windows. Как он сам признал, не все инженеры Microsoft разделяют его взгляды, хотя соглашаются, что необходимость менять архитектуру операционной системы назрела.

По его мнению, не успевшие завершиться процессы являются главной причиной нашего ожидания при работе за компьютером. Нам приходится ждать окончания загрузки документа, обработки веб-странички, вычисления электронной таблицы или чего-то еще. Назначение ядрам определенных процессов не меняет этого - проблема не в эффективности переключения между задачами, так как оно гораздо быстрее всех разумных реакций человека. Программы медленно реагируют, потому что им выделяется ограниченное время на исполнение, и если его не хватает, окончание выполнения будет отложено.

Другие программы наоборот умышленно не реагируют на запросы пользователя, пока выполняется какой-либо ресурсоемкий процесс. Это плохой код, который не дает прерывать назначенные ядрам процессы, и он лежит целиком на совести разработчиков. Сложной и обширной проблемой до сих пор является распараллеливание задачи на несколько ядер. Успешное ее решение даст нам возможность увеличивать скорость исполнения задачи пропорционально количеству задействованных для ее решения ядер. Из всех проблем эта - самая трудная, над которой Исследовательский Центр Параллельных Вычислений продолжает работать.

Существующие операционные системы тоже меняются, следуя требованиям времени. Windows 7, к примеру, включает множественные изменения для улучшения масштабируемости на многоядерных системах. Другие системы тоже могут назначать процесс определенному ядру и дают ему возможность выполняться непрерывно. Они так же могут множество процессов назначать на одно ядро, что позволяет исполнять на этом ядре больше чем один процесс.

Я не спец в эти делах, но как linux ядро управляет процессами? («спецам» мс не верится)

★★★★★

> Программист Microsoft Дейв Проберт

Программист Microsoft

Программист



ээээ. может я что-то не понимаю но мне кажется что такое мог ляпнуть только программист на фокспро, и то спьяну.

vahvarh ★★★ ()
Ответ на: комментарий от one_more_hokum

>На каждый поток.


Шикарно! Иметь несколько потоков на ядро нельзя?

ShTH ()
Ответ на: комментарий от unikoid

>Объясните, чем принципиально отличается многоядерность от многопроцессорности?


Вроде бы тем, что процессор работает вроде бы как один, но имеет кучу ядер. И сам ими управляет. не отвечаю за слова.

ShTH ()
Ответ на: комментарий от unikoid

Многопроцессорность - физически несколько процессоров, а ядра - это части одного физического элемента (процессора).

f3ex ★★ ()
Ответ на: комментарий от unikoid

принципиально, наверное, ничем

первые многоядреники, ЕМНИП, были тупо двумя процессорами, упакованными в один

потом у них появился общий кэм и прочее, но принцип работы, думаю, не изменился кардинально

FractalL ()

не будут похожи на современные Windows или Linux


(выплевывая семачки) А ЧО ТАМ МАКОС?

splinter ★★★★★ ()
Ответ на: комментарий от f3ex

>Многопроцессорность - физически несколько процессоров, а ядра - это части одного физического элемента (процессора).
И все-таки Капитан Очевидность - невымышленный персонаж.
//Еще один вопрос, уж очень лениво гуглить - на многоядерных процессорах кэш общий на все ядра или же раздельный?

unikoid ★★★ ()

>проблема не в эффективности переключения между задачами, так как оно гораздо быстрее всех разумных реакций человека.

Как раз в винде скорость переключения контекста и сосет. Но надо виновным назначить процессоры!

Программы медленно реагируют, потому что им выделяется ограниченное время на исполнение,


Кэп?

и если его не хватает, окончание выполнения будет отложено.


Если есть другие задачи, то вообще-то и им надо выполнится.

Я не спец в эти делах, но как linux ядро управляет процессами? («спецам» мс не верится)


Берет и управляет. Старается просто так не перебрасывать задачи между процессорами, а так ничего особенного по сравнению с однопроцессорными системами.

Pavval ★★★★★ ()
Ответ на: комментарий от unikoid

>Объясните, чем принципиально отличается многоядерность от многопроцессорности?

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

jcd ★★★★★ ()

выступление у него кстати укуренное шописец.

jcd ★★★★★ ()
Ответ на: комментарий от tailgunner

в десктопных системах с обычными процессорами общего пользования - всегда, или как же иначе? пример, если можно.

jcd ★★★★★ ()

они предлагают концепцию доса с расширением для многоядерных систем? Если у вас 4 ядра вы можете одновременно выполнять аж три программы плюс ядро! =)

azure ★★ ()

>Он задавался вопросом, почему переход на многоядерное железо не улучшил скорость реакции компьютера на действия пользователя.
ололо
при чём здесь кол-во ядер?

megabaks ★★★★ ()
Ответ на: комментарий от tailgunner

>Ранние SMP на Pentium.

там же просто используется общая память? разве там on-board L1-L3? во всяком случае насколько мне известно - сейчас L1-L3 на материнки никто не ставит.

jcd ★★★★★ ()
Ответ на: комментарий от unikoid

Объясните, чем принципиально отличается многоядерность от многопроцессорности?

Многопроцессорность - куча процев, соединенных на одной мамке, многоядерность - несколько процессоров в одном корпусе, с чем-либо там общим.

Zhbert ★★★★★ ()
Ответ на: комментарий от jcd

>>Ранние SMP на Pentium.

там же просто используется общая память?

Общая память - это как бы определение SMP. Даже на NUMA память в некотором смысле общая.

разве там on-board L1-L3?

Деталей я уже не помню, помню только, что кэш был общий.

tailgunner ★★★★★ ()

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

Патамушта ядер много, а диск всё равно один!

darkshvein ☆☆ ()
Ответ на: комментарий от tailgunner

>Общая память - это как бы определение SMP

ну да, я и не понял, к чему ты.

помню только, что кэш был общий.


ясно. по крайней мере сейчас о таком я не слышал.

jcd ★★★★★ ()
Ответ на: комментарий от undertaker

>Увеличение количества процессоров (или ядер) общего назначения — тупиковый путь

если говорить о десктопе и о ядрах: почему?

jcd ★★★★★ ()
Ответ на: комментарий от Zhbert

>Многопроцессорность - куча процев, соединенных на одной мамке,

на одной мамке,


Кстати, тоже тормоза. И ещё один повод МС для отмазывания своих кривых рук.

darkshvein ☆☆ ()
Ответ на: комментарий от unikoid

Объясните, чем принципиально отличается многоядерность от многопроцессорности?


Для ОС ничем
Для разработчиков мат. плат большим трахом

Boy_from_Jungle ★★★★ ()
Ответ на: комментарий от darkshvein

> Значит в будущем будут менять логику

да как-бы уже, потихоньку, в сторону лучшего распараллеливания.

isden ★★★★★ ()

Это избавит от необходимости вводить многие абстрактные ограничения, такие, как защищенная память, например.


O_o

Boy_from_Jungle ★★★★ ()

они явно пропустили DragonFly BSD

annulen ★★★★★ ()

Если будут делать дешёвые процессоры с тысячами ядер, может быть это и правильно.

Хотя процитированный кусок переведён на редкость промптом, я вообще не уверен, что правильно понял изначальную мысль.

Legioner ★★★★★ ()
Ответ на: комментарий от jcd

если говорить о десктопе и о ядрах: почему?

IMHO, потому, что сейчас узкое место вовсе не в производительности CPU, а в синхронизации того набортного хозяйства, что обитает в нынешних ПК. Например, на LOR давно гуляет идея о видеокарте со встроенным X-сервером. Это более правильный путь, I think.

undertaker ★★ ()

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

SMP бывает разный - обычно общая память разные процы и у каждого свой кеш. Бывает у каждого проца своя память.

demmsnt ()

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

iSage ★★★★ ()

>переход на многоядерное железо не улучшил скорость реакции компьютера на действия пользователя.

К Линуксу это не относится.

Операционные системы, рассчитанные на многоядерное железо, будут

назначать процессы ядрам, не вмешиваясь в их работу.



Пусть тогда расскажет, как это сейчас происходит в венде. Неужели
непривилегированные пользовательские вычисления выполняются в режиме
ядра? Поэтому венда такая дырявая?

Он хочет дать возможность процессам работать напрямую с железками?!
Позволит им самостоятельно изменять блоки на жестком диске? OMG

Это избавит от необходимости вводить многие абстрактные ограничения,

такие, как защищенная память, например.



Ага, надо вообще все нахрен отменить: защищенный режим, виртуальную
память. Позволить процессам изменять друг друга. Тогда быстро будет
работать.

Очевидно, что современные операционные системы расходуют ресурсы

крайне иррационально. Например, не умеют самостоятельно определять,


какая из задач имеет большее значение. Они зависят от того, как сами


программы установят приоритеты.



Не надо обобщать. В отличие от Винкаки в планировщике линукса заложен
эвристический алгоритм, который на основании предыдущего поведения
процесса принимает решение об динамическом изменении его приоритета.
Может увеличить отведенный процессу квант времени, а может уменьшить.
Таким образом, даже не устанавливая приоритеты вручную, пользователь
получает систему с честным распределением процессорного времени между
его потребителями.

Если в ms wind планировщик на такое не способен, то это их проблемы.
И вообще - пусть сначала освоят хотя бы одну новую аппаратную
платформу, отличную от x86. А то такое ощущение, что все даже
казалось бы архитектурно независимое в ядре, жестко прибито у них
гвоздями.

По его мнению, не успевшие завершиться процессы являются главной

причиной нашего ожидания при работе за компьютером. Нам приходится


ждать окончания загрузки документа, обработки веб-странички,


вычисления электронной таблицы или чего-то еще. Назначение ядрам


определенных процессов не меняет этого - проблема не в эффективности


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


разумных реакций человека. Программы медленно реагируют, потому что


им выделяется ограниченное время на исполнение, и если его не


хватает, окончание выполнения будет отложено.



Производительность процессора имеет свой предел. Поэтому программа
не может выполняться быстрее, чем процессор это позволяет. А когда
программ несколько, то все ресурсы они между собой делят.

Понятное дело, можно, например, посадить на процессор только браузер,
и никого туда больше не пускать. Но тогда какой-нибудь другой процесс
не сможет выполняться. Музыкальный проигрыватель, например. Ему будет
нужен ещё один процессор. Ещё процессор для графической среды,
по одному процессору для каждого апплета, переключалки языков и т.д.
Ядру тоже нужен свой процессор и причем не один. Монструозная
аппаратная конструкция получается.
Хотят отменить преемптивность - сделать шаг назад.

Другие программы наоборот умышленно не реагируют на запросы

пользователя, пока выполняется какой-либо ресурсоемкий процесс.



Таки ядро windows не преемптивное? OMG OMG OMG...

Это плохой код, который не дает прерывать назначенные ядрам процессы,

и он лежит целиком на совести разработчиков. Сложной и обширной


проблемой до сих пор является распараллеливание задачи на несколько


ядер. Успешное ее решение даст нам возможность увеличивать скорость


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


решения ядер. Из всех проблем эта - самая трудная, над которой


Исследовательский Центр Параллельных Вычислений продолжает работать.



ZOG не дремлет - пока вы спите, они уже зомбируют ваш мозг
программировать параллельные приложения. Закрывайте форточку на ночь! :)

Другие системы тоже могут назначать процесс определенному ядру и дают

ему возможность выполняться непрерывно. Они так же могут множество


процессов назначать на одно ядро, что позволяет исполнять на этом


ядре больше чем один процесс.



Ну хотя бы тут не наврал.


Не программист это, а скорее всего маркетолог. Слишком уж у него много бреда.

ttnl ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.