Защо все пак Windows е толкова по-бавен от Linux?

Най-четени

Даниел Десподов
Даниел Десподов
Новинар. Увличам се от съвременни технологии, информационна безопасност, спорт, наука и изкуствен интелект.

През далечната 2013 г. един от разработчиците на Microsoft обясни подробно какви са били основните технически проблеми при разработването на ядрото на Windows NT. Десет години по-късно Windows 10/11 работи със същото ядро и много от старите проблеми остават нерешени.

Въпреки че Windows превъзхожда Linux в редица задачи, в повечето тестове тази ОС всъщност е по-бавна. Според разработчика това изоставане се задълбочава, а причината е „социална“. В крайна сметка става дума за това как е организиран процесът на разработка и как се правят промените в операционната система. Ако в света на отворения код това е отворен процес, който е полезен и подобрява системата, то в света на корпоративния софтуер промените често се правят по причини, свързани с егоизъм, желание за кариерно израстване, слава и т.н. Всичко това води до влошаване на качеството на продукта.

Защо все пак Windows е толкова по-бавен от Linux?
Времето за изпълнение на най-често използваните команди на Git в Ubuntu и Windows 11 (в секунди, колкото по-кратко, толкова по-добре). Източник: OpenBemchmarking.org

Проблемите с ядрото на Windows NT

Истината е, че в Microsoft отделните групи за разработка „притежават“ отделните системни компоненти и обикновено са открито враждебни към външните кръпки. Дори ако вие, като разработчик на даден компонент, приемете външен пач, това разгневява вашия ръководител (защото трябва да поддържате пача и да оправдаете непланираната промяна в дизайна). И да, разгневява отдела за тестване (той трябва да се увери, че промяната не нарушава нищо, а вие само сте му възложили работа). Също така разгневява и ръководителя на проекта (заради промяната в графика на разработката заради пача). В крайна сметка няма никакъв стимул да се приемат външни промени.

Защо все пак Windows е толкова по-бавен от Linux?
Производителност на играта Starfileld под Linux и Windows 11 (FPS). Източник: Computer Base

Освен това няма никакъв стимул да правите промени сами. При разработката на ядрото на Linux, ако подобрите производителността на обхождане на директориите с 5%, ви хвалят и всички са ви благодарни. В ОС Windows, дори ако кодът ви премине покрай притежателите на компонента и влезе в основата на основите, ръководството не го е грижа. Разбира се, мащабните подобрения могат да бъдат забелязани на върха и това ще помогне на кариерата ви. Но това е така, ако оптимизацията е наистина мащабна. Що се отнася до обикновените подобрения, те просто дразнят всички и няма да повлияят по никакъв начин на кариерата ви (освен да я влошат). След известно време разработчиците осъзнават, че е по-добре да не вършат непланирана работа.

Защо все пак Windows е толкова по-бавен от Linux?

Google и другите конкуренти постоянно привличат най-умните и талантливи специалисти. Наблюдава се отлив на таланти. Microsoft е принудена на тяхното място да наема студенти директно от колежа. Крайният резултат е момчета на ниво SDE и SDE II да поддържат огромни системи с много код. Те искат да направят най-доброто и са достатъчно умни, но не разбират защо преди време са били взети определени решения. Те не разбират тънкостите на работата на системите си и най-важното – не искат да променят това, което вече работи. Тези млади разработчици също така са склонни да подобряват системата, като въвеждат съвсем нови функции, вместо да подобряват старите. Ако погледнете последните версии, Microsoft не поправя старите функции, а добавя нови (следва цитат):

Новите функции са много по-полезни за напредъка в кариерата, отколкото оптимизирането на старите. Ето как се появи PowerShell. Много хора искаха да подобрят cmd.exe, но нямаше как.

Ето няколко примера за това, как протича процесът на разработка в Microsoft, по думите на един служител:

  • Тъй като не можете дори да докоснете именуваните канали, нека да добавим %INTERNAL_NOTIFICATION_SYSTEM%! И да го направим несъвместим с почти всички други именувани примитиви на ядрото.
  • Не можем да покажем на света %INTERNAL_NOTIFICATION_SYSTEM%, защото не искаме да попълваме маса документи. И продажбите не спадат поради факта, че само древните API на Win32 от 90-те години са публично достъпни.
  • Не може да се пипа DCOM. Затова създаваме още един %C#_REMOTING_FLAVOR_OF_THE_WEEK%!
  • XNA. Какво да добавим тук?
  • Защо някой би искал архивен формат, който поддържа файлове, по-големи от 2 GB? Никой няма нужда от това.
  • Нека да поддържаме символни линкове, но така че никой да не може да ги използва и да не бъдем обвинени в уязвимост. (Чудесно! Сега изглеждаме мъдри и отговорни!).
  • Не може да се пипа Source Depot (фирмената система за контрол на версиите на Microsoft), затова нека хакнем SDX!
  • Не можете да се пипа SDX, затова нека се преструваме, че за четири издания преминаваме към TFS, но всъщност не променяме нищо!
  • Кодът на NTFS е викторианска история на ужасите, която използва глобални рекурсивни блокировки и SEH за контрол на потока. Нека вместо това напишем ReFS. (И нека започнем с копиране и поставяне на изходния код на NTFS и премахване на половината функции! ) След това нека добавим контролни суми, защото контролните суми са готини и сега сме толкова добри, колкото ZFS с контролни суми, нали? А и на кого му трябват квоти?).

Забележка: файловата система NTFS е много надеждна и добре тествана и се поддържа от някои от най-талантливите и опитни разработчици. Но това не отменя грозотата на кода, въпреки че зад грозния код може да се крият добри и надеждни компоненти, а грозотата по своята същност е субективна). Същото може да се каже и за редица други основни компоненти на ядрото на Windows NT.

Този пост на разработчик от Microsoft е написан преди десет години, но не е загубил своята актуалност. Очевидно в процеса на разработка няма много промени.

Присъщата на Windows мудност се проявява и в последната актуализация Windows 11 24H2, която изобщо не се инсталира на по-старите компютри. И дори на конфигурации, на които Windows 11 неотдавна можеше да се инсталира с лека ръка.

Защо все пак Windows е толкова по-бавен от Linux?

Според предварителната информация тази компилация не е съвместима с процесорите, които не поддържат инструкцията POPCNT. Малко познатата инструкция, известна като инструкцията на NSA, преброява броя на битовете в машинната дума и в съвременните процесори е част от набора инструкции SSE4 ( процесорите на Intel и AMD съответно от 2008 г. и 2007 г.). Въпреки че е напълно възможно ентусиастите да намерят начин да заобиколят това ограничение.

Преди време също така беше съобщено, че криптирането на целия диск BitLocker в ОС Windows забавя системния SSD диск с 45%. Като заобиколен вариант беше предложено да се деактивира вградената функция на Windows (да се преинсталира операционната система с изключен BitLocker) и вместо това да се използва хардуерно криптиране на диска.

Известно е дори явлението, наречено „умора от Windows“, когато се работи с операционната система на Microsoft за дълъг период от време. Дългогодишните потребители на Windows изпитват носталгия по Windows XP и Windows 7, които бяха най-добрите операционни системи на своето време. За съжаление последните версии на Windows 11 не предизвикват такива положителни емоции. Така например в тестовете на OpenBemchmarking.org ОС Windows 11 22000.51 губи от Windows 10 21H1 в почти всички тестове, което означава, че новата версия е по-бавна от старата.

Защо все пак Windows е толкова по-бавен от Linux?
Бенчмаркът DaCapo, тест на Java: Tradesoap (в секунди, колкото по-малко, толкова по-добре). Източник: OpenBemchmarking.org

Може би част от проблемите с влошаването на състоянието на системата се дължат на необходимостта да се поддържат по-старите функции и по-старите версии на операционната система. Кодовата база се разраства, броят на функциите непрекъснато се увеличава и в резултат на това софтуерът се забавя по-бързо, отколкото хардуерът се ускорява (правило, известно като закон на Уирт). Това се дължи на непрекъснатото разпълзяване на функциите (feature-creep), които са се превърнали буквално във „валутата“ в корпоративната разработка.

Многобройни проучвания показват, че при избора на продукт потребителите положително оценяват броя на неговите функции:

Защо все пак Windows е толкова по-бавен от Linux?

Едва след като започнат да използват продукта, прекомерната функционалност и мудността на системата започват да дразнят хората:

Защо все пак Windows е толкова по-бавен от Linux?

Поддръжката на старите версии

Интересно е, че дори най-старите версии на Windows все още се използват в производството. Например GULP Experts United, една от най-големите германски агенции за набиране на персонал, наскоро обяви свободна позиция за системен администратор на Windows 3.11.

Защо все пак Windows е толкова по-бавен от Linux?

От кандидатите се изисква да имат познания за Windows 3.11 и MS-DOS, като е желателно да имат опит в железопътната индустрия.

Така че наследяването и използването на старото продължава много дълго…

Как се създаваше Linux ядрото

Един от състудентите на Линус Торвалдс си спомня за ранните дни на Linux и за това как е започнало всичко. От историческа гледна точка мемоарите на Ларс Вирзениус съдържат много интересни факти. Те дават представа за концепциите, които са повлияли върху създаването на ядрото на Linux. Общността на отворения код е напълно различен свят от корпоративната разработка.

Ларс се запознава с Линус Торвалдс през първата година от обучението си в Университета в Хелзинки (и двамата говорят шведски, което ги сближава). Те също така получават достъп до Unix сървър и случайно откриват Usenet, когато погрешно въвеждат командата rn вместо rm. След като служат в армията през 1990 г., момчетата посещават курс по програмиране на C и Unix, който включва изучаване на архитектурата на ядрото на Unix. Ларс и Линус също се интересували и изучили ядрата и на други операционни системи, като QNX и Plan 9.

Защо все пак Windows е толкова по-бавен от Linux?
Легендарната операционна система Plan 9 е първата, която прилага концепцията за услуги чрез файлова система и разпределени изчисления. При нея всеки компютър може да използва всичките ресурси на друг компютър като свои собствени. Това са файловете, процесите, дисковете, мрежата, графиката, клавиатурата и мишката.

Ядрото на Linux е написано от студенти, силно повлияни от Unix. През август 1991 г. Линус за първи път споменава за своя проект в конференцията comp.os.minix echo. Първоначално системата се е наричала Freax. През 1992 г. е пусната първата дистрибуция Softlanding Linux System (SLS) и системата X11 е пренесена в Linux, което оказва голямо влияние върху популярността на Linux.

Когато Линус програмирал на служебния си компютър, той се дразнел от бавността на машината – затова прекарва цял ден в пренаписване на анализатора на командния ред в ядрото. При това на езика асемблер (след това той е пренаписан обратно на C). След това Линус играл няколко дни на Quake, като го представял за стрес тест за управление на паметта на ядрото.

Както и да е, разработчиците на Linux от самото начало имат мислене, ориентирано към производителността, пишат на C и асемблер и като цяло това е солидна и мощна концепция. Вероятно това е една от разликите с ядрото на Windows NT, върху което работят хиляди програмисти в Microsoft, само че без единна визия.

През пролетта на 1994 г. Linux ядрото беше в по-голямата си част завършено, така че Ларс организира представяне на Linux 1.0 в пресата

По време на презентация на 30-ти март 1994 г. Линус Торвалдс се шегува, че комерсиалният лиценз за Unix е толкова скъп, че е по-лесно да се напише собствена операционна система.

Превъзходството на Linux

Повишената производителност зависи до голяма степен от конкретното приложение и хардуер. За някои игри синхронизацията на NT не е тясно място, така че ускорение няма да има. При други обаче увеличението на FPS е 50-150%. В таблицата са показани данните за FPS на различни игри на различен хардуер от няколко потребители:

ИграТекущ FPSntsync, FPSПодобрение
Anger Foot699943%
Call of Juarez99,8224,1125%
Dirt 3110,6860,7678%
Forza Horizon 510816048%
Lara Croft: Temple of Osiris141326131%
Metro 2033164,4199,221%
Resident Evil 22677196%
The Crew265196%
Tiny Tina’s Wonderlands130360177%
Total War Saga: Troy10914634%

Сега *nix е най-популярната операционна система в света, която работи на милиарди устройства и доминира в сървърите и мобилните устройства.

Защо все пак Windows е толкова по-бавен от Linux?
Делът на уеб сайтовете под различни операционни системи. Статистиката на W3Tech за февруари 2024 г.

Linux ядрото е в основата на Android и много други системи. Могат да се направят различни предположения защо една система, написана от студенти, е завладяла света. Една от причините е интелигентната и кратка архитектура на ядрото, което още в самото начало е ориентирано към производителност по подобие на Unix, QNX и Plan 9.

Служител на Microsoft казва, че в компанията също има хора, които се опитват да направят света по-добър и да оптимизират производителността. Но те почти винаги се провалят. Microsoft няма официална или неофициална системна програма за подобряване на производителността. Започвайки с Windows XP SP3, компанията започва да се грижи за сигурността, защото тя се превръща в екзистенциална заплаха за бизнеса. Но слабата производителност всъщност не е такава заплаха. На този проблем не се дава приоритет.

P. S. За съжаление, разлагането на функционалностите, влошаването на производителността и съсипването на софтуера не е проблем единствено на ядрото на Windows, а е широко разпространено явление.

АбонаментВсичко важно от света на технологиите, директно в пощата ти.

С абонирането приемате нашите Условия и Политика за поверителност. Може да се отпишете с един клик по всяко време.


Коментирайте статията в нашите Форуми. За да научите първи най-важното, харесайте страницата ни във Facebook, и ни последвайте в Google Новини, TikTok, Telegram и Viber или изтеглете приложението на Kaldata.com за Android, iPhone, Huawei, Google Chrome, Microsoft Edge и Opera!

31 Коментара
стари
нови оценка

Нови ревюта

Подобни новини