LINUX.ORG.RU
ФорумTalks

Разработчик ядра Windows NT объяснил причины низкой производительности ОС

 ,


1

5

Один из программистов компании Microsoft анонимно выступил на форуме Hacker News и выдал интересные подробности о процессе разработки ядра NT. Своим сообщением он хотел подтвердить тезис о том, что ядро неэффективно и во многом уступает по производительности другим ОС: см. оригинальное сообщение (автор удалил его, испугавшись резких формулировок) и копию.

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

В Microsoft не существует программы по систематическому улучшению производительности Windows. Во времена Windows XP компания начала уделять большое внимание безопасности, потому что с этим обнаружились серьёзные проблемы. Однако на производительность никто не обращал и не обращает особого внимание.

Ещё одна проблема в ухудшении ситуации с производительностью ОС — в утечке самых талантливых кадров. Google и другие компании Кремниевой долины активно охотятся за одаренными программистами и не стесняются переманивать их из других компаний. Из-за текучки кадров новые разработчики предпочитают реализовывать новые функции вместо оптимизации старых. Именно в этом причина появления PowerShell: многие хотели улучшить cmd.exe, но не имели возможности.

В качестве конкретных примеров разработчик называет следующее:

«Нам нельзя трогать именованные каналы. Лучше добавим %INTERNAL_NOTIFICATION_SYSTEM%! И пусть она будет несовместима с почти всеми другими именованными примитивами NT.

Мы не можем показывать %INTERNAL_NOTIFICATION_SYSTEM% остальному миру, потому что не хотим заниматься бумажной работой и терять продажи, ведь сейчас публично доступны только интерфейса Win32 APIs эпохи 90-х.

Мы не можем трогать DCOM. Так что создадим ещё один %C#_REMOTING_FLAVOR_OF_THE_WEEK%!

XNA. Что тут ещё сказать?

Зачем кому-то нужен формат архивирования с поддержкой файлов больше 2 ГБ?

Давайте поддерживать символьные ссылки, но убедимся, что никто не сможет их использовать, так что нас не обвинят в уязвимости безопасности. (Отлично! Теперь мы выглядим мудрыми и ответственными!)

Нельзя трогать Source Depot, так что давайте вместе хакнем SDX (Secure Document Exchange)!

Нельзя трогать SDX, так что давайте притворяться в течение четырёх релизов, что мы переходим на TFS (Team Foundation Server), а сами ничего не будем менять!

Господи, код NTFS — это багровый роман ужасов, написанный под опиумом в средневековье, где используются глобальные рекурсивные блокировки и контроль потока со структурной обработкой исключений (SEH). Давайте вместо неё напишем ReFs. (И да, начнем с копипаста исходников NTFS и удаления половины функциональности! Теперь добавим контрольные суммы, потому что контрольные суммы это круто, и с контрольными суммами мы почти так же круты, как ZFS, верно? И вообще, кому нужны квоты?)

Мы вообще не в силах реализовать поддержку C11, а шаблоны с переменным числом аргументов слишком сложны, чтобы внедрить их за год. (Но смотрите, мы превратили «^» в оператор указателя с подсчитанными ссылок! Ой, а что такое подсчёт ссылок?)».

Осторожно, хабр!

★★★

Последнее исправление: Andrew (всего исправлений: 3)

Стандартные проблемы любого большого софтварного продукта. В Линуксе те же грабли, только в профиль.

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

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

dib2 ★★★★★
()

Именно в этом причина появления PowerShell: многие хотели улучшить cmd.exe, но не имели возможности.

Звучит более чем странно. Скорее хотели все подвести под один .Net знаменатель.

TGZ ★★★★
()

Производительность ядра не всегда решает. Зависит от кривизны всех остальных прослоек от самого ядра до прикладного софта. И от прикладного софта тоже зависит.

spoilt ★★★
()

Забыли перевести последний параграф:

«Look: Microsoft still has some old-fashioned hardcore talented developers who can code circles around brogrammers down in the valley. These people have a keen appreciation of the complexities of operating system development and an eye for good, clean design. The NT kernel is still much better than Linux in some ways --- you guys be trippin' with your overcommit-by-default MM nonsense --- but our good people keep retiring or moving to other large technology companies, and there are few new people achieving the level of technical virtuosity needed to replace the people who leave. We fill headcount with nine-to-five-with-kids types, desperate-to-please H1Bs, and Google rejects. We occasionally get good people anyway, as if by mistake, but not enough. Is it any wonder we're falling behind? The rot has already set in. »

Nebuchadnezzar ★★★★
()

Мы вообще не в силах реализовать поддержку C11,

А кому он нафиг нужен?

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

variadic templates не единственная проблема Visual C++ и похоже у Microsoft поддержка С++11 увы не самая приоритетная вещь, они же запилили C++ AMP и поддержку ARM.

Begemoth ★★★★★
()

Рекомендую всем почитать книгу Джоела «Софт - отстой!». Там он вполне обоснованно называет все причины почему МС делает то-то в ущерб другого.

Зря создали тему. Бо, чел раскрыл свое недовольство, но забыл упомянуть факты почему выбрали тот или иной путь. Вобщем, нытик он и не более.

К вопросу о тех же новых «старых» технологиях: в линуксе если мы все ломаем к чертовой бабушке и говорим, что мы стали лучше остается лишь две вещи: смериться или послать подальше. В МС всегда идут третьим путем: софт, написанный с устаревшими технологиями - будет работать, софт, написанный с новыми - будет работать. Да, цену надо заплатить и только идиоты хнычат, что надо все было делать иначе. ИМХО.

gh0stwizard ★★★★★
()
Последнее исправление: gh0stwizard (всего исправлений: 1)
Ответ на: комментарий от Begemoth

PowerShell скорее замена WSH с его VBScript и JScript.

Но в тоже время есть интерактивность, которой нет в WSH. Правда для такой интерактивности надо серьезно пересмотреть свой подход к командной строке.

TGZ ★★★★
()

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

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

Забыли перевести последний параграф:
«Look: Microsoft still has some old-fashioned...

ты тоже забыл перевести.

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

Кто мы? И какую ОС?

мы - Николай Второй. Ось - freedos.

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

У меня там компиз каждые 5 минут падает. Голая ос только поставленная

onanij
()
Ответ на: комментарий от TGZ

Но в тоже время есть интерактивность, которой нет в WSH.

Скриптовая среда без repl-а - извращение.

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

В каком плане?

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

Они хоть работают

убунту тоже работает. Вот у меня убунту, она работает, я в ней работаю. Не мешает вроде.

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

В каком плане?

Ну хотя бы в том, что получаешь не строку, а объект. Если, например, надо узнать размер файла (stat, du ?, я уже ничего не помню), то обычно выведут результат команды и если необходимо отпарсят этот вывод, или, как в cmd, воспользуются модификатором (%~z1), а здесь несколько иной подход, необходимо обратиться к свойствам объекта-результата: (ls 1.txt).length. Вот такой грубый пример.

TGZ ★★★★
()

Как будто всё это не было очевидно.

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

Ну хотя бы в том, что получаешь не строку, а объект

А ну это-то я знаю, и это переключение для меня как раз произошло безболезненно, а вот имеено интерактивный возможностей там и сейчас не хватает: (такого как в zsh /u/s/d/boo<TAB> -> /usr/share/doc/boost), поиска по истории (C-r).

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

такого как в zsh

Да. Такого нет. На счет истории можно же посмотреть по F7, F9. Или искать с помощью get-history, например: (history) -match 'get-*'

Историю можно сохранять, а потом импортировать.

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

Нет, но многие компоненты Убунту написаны именно на нем.

LongLiveUbuntu ★★★★★
()

Поменять Название компании на Название_любой_крупной_компании и заменить аналогично проблемы - выясняем что везде все одинаково. Чем крупнее организация, тем она более инертна и бюрократична.

saibogo ★★★★
()

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

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

говноUnity, говноCompiz, GовноTK, говнносвистелки, говноперделки

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

Мне архитектура win кажется ошибочной. Сейчас поглядываю в сторону Plan9.

А ты где архитектуру-то смотрел? :) Посмотри внимательно в сторону VMS.

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

...но забыл упомянуть факты почему выбрали тот или иной путь...

Там речь не про выбор пути.

...в линуксе если мы все ломаем к чертовой бабушке...

В этом нет ничего плохого.

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

Новые технологии в ОС которой 10 лет (я про xp)?

...только идиоты хнычат, что надо все было делать иначе...

Хнычат те кто приговорил себя пользоваться этим.

ya-betmen ★★★★★
()
Ответ на: комментарий от TGZ

Консоль в винде вообще и cmd.exe в частности в угоду совместимости это настолько трэш и угар, насколько вообще позволяет буйная фантазия.

Dark_SavanT ★★★★★
()

XNA. Что тут ещё сказать?

quote of the day!

Мы вообще не в силах реализовать поддержку C11

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

x0r ★★★★★
()

Как показывает практика основная проблема проявляется не в ядре, а в юзерспейсе. Чего только стоят линуксовые игрушки с графикой а-ля «Марио» и требующие 1.5ГБ оперативки. Да, линукс выигрывает в производительности ядра, но пока большинство софта пишется студентами на коленке на пестоне, все будет очень плохо.

drull ★☆☆☆
()
Ответ на: комментарий от Dark_SavanT

в частности в угоду совместимости

Это был до поры, до времени command.com. А что за трэш и угар? Чего такого, из типовых задач нельзя сделать в cmd?

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

Тоже это заметил. Интересно, что он хотел сказать фразой «you guys be trippin' with your overcommit-by-default MM nonsense».

Вроде бы еще никто не жаловался на Memory Managment в Linux.

crypt ★★★★★
()

Видел где-то тему насчёт не самой лучшей реализации memcpy внутри ntdll вроде, потом вспомнил относительно недавнюю историю с «багом» в оптимизированной memcpy в glibc. Есть смысл ничего не трогать если оно у всех работает и всех устраивает, если вас волнует доля на рынке, конечно =)

frame ★★★
()
Ответ на: комментарий от ya-betmen

Там речь не про выбор пути.

Нет, конечно. Просто изливание души.

В этом нет ничего плохого.

Ты видимо плохо представляешь о чем я говорю. Возьмем яркий пример наших дней: некий Леннарт Поттеринг создает systemd и сговаривается с разработчиками udev о модернизации всего и вся. Что в итоге? udev встает в зависимость от systemd и другие разработчики, за не имением онных, дважды форкают udev. Что происходит в МС? Да тоже самое, только у них все выглядит иначе: старый udev остается как есть, а для systemd пишется специально новая версия с новым блекджеком. Это плохо? Отчасти, потому что Поттеринг умудрился своими действиями поссорить других разработчиков: глянь реакцию на Mir, просто сразу посылают в лес (в wayland никогда не будет поддержки). И все в таком духе.

Новые технологии в ОС которой 10 лет (я про xp)?

А это ядерные технологии? Нет. Имеются ли еще клиенты с win xp, которые их купили тысячами? Да. И почему они должны страдать, когда у нас есть ресурсы, способные их обеспечить всем необходимым. Ах, я понял, чуваку просто недодали миллиардные прибыли, вот он и комплексует :)

Хнычат те кто приговорил себя пользоваться этим.

Ты новенький тут, так что просто поглядывай за ниосиляторами среди тебя. Они будут изливать свои сопли прямо здесь, в толксах, как им видите ли не удалось поставить и настроить линукс. Раслабься, у тебя все еще в переди :)

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

другие разработчики, за не имением онных, дважды форкают udev

Это я так понимаю вы привели в пример ребят из gentoo, которые столь испугались за себя, что быстро перевели стрелки и сказали, что на eudev они будут тренероваться вместо кошек? И ребят из ubuntu, которые из вредности форкают всё, что делают в redhat?

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

http://blog.zorinaq.com/?e=74

Он же о линуксе:

you guys have systemd, which if I'm going to treat it the same way I treated NTFS, is an all-devouring octopus monster about crawl out of the sea and eat Tokyo and spit it out as a giant binary logfile.

«...у вас есть systemd, по аналогии с моим описанием NTFS — всепожирающий осьминогоподобный монстр, который вот-вот вылезет из моря, съест Токио и выплюнет его в виде гигантского бинарного лога.»

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