неделя, 27 септември 2009 г.

За ядрото, за разработката му, за Con Kolivas


Наскоро се заговори отново за Con Kolivas и новият му проект. За тези, които не знаят, Scheduler (sheduler) е може би една от най-ключовите технологии в съвременните операционни системи. Много опростено тя може да се обясни по следния начин: ако един процесор може да борави с една операция в даден момент, как да се организира многозадачност? Очевидно е, че така трябва да се организира последователността на операциите, че за крайният потребител да съществува илюзията, че всичко е направено едновременно. Този проблем се решава именно от Scheduler (планировчик).
Появата на многоядрени процесори на обикновени персонални компютри беше общо взето неочаквано. За крайния потребител винаги е било от значение увеличението на тактовата честота на процесора - тъй като логично се свързва с растежа на производителността: 4 MHz, после 12, 16, 33, 40, 66, 90, 100, 133, 150, 200, 233, 300, 500 ... За тези, които са се занимавали с компютри от началото на 90-те и следят с интерес развитието им - това не са само номера в прогресия, а и етапи. Сега акцентът е повече върху архитектурата, отколкото върху честотата. Многоядрените процесори, на теория би трябвало да доведат до повишаване на производителността на компютъра, като цяло. Но това не се случва. Цитират се случаи за увисване на системи с най-мощни процесори и последно поколение операционни системи при изпълнение на „тривиални“, от гледна точка на потребителя задачи, като сканиране за вируси (бел.моя - в примера става въпрос за Vista, но колкото и да проявявам сарказъм, тя все пак си остава изключително съвременна ОС). Човек неволно си задава въпроси: къде са предимствата на многоядрената архитектура; къде е плавността на работа, независимо от сложността на фоновите задачи; всичко това означава ли, че в живота на един обикновен потребител определящи приоритети са архиватори и антивирусен софтуер? Аз не знам точно какъв набор от технически недостатъци на Vista са довели до този проблем, но мисля, че неадекватността на планировчикът (Scheduler) играе съществена роля.
Ако отговорят честно, повечето потребители на Линукс го харесват, защото самата тя, като система, е не по-малко интересна игра от която и да е стратегия или пукалка...
Наскоро излезе стабилната версия на ядрото 2.6.31 и не след много се появи новината за пач към него предоставящ принципно нова разработка на C.K. с Brain Fuck Scheduler... Тук ми се иска да цитирам няколко интересни момента от едно негово интервю, даващо обяснение на причината довела до тази разработка, както и няколко впечатлили ме идеи относно актуалното състояние на ядрото, основните дистрибуции и Linux изобщо, които доста са ми близки като мнение и заключения.
Първо – кой е Con Kolivas – според wikipedia това е австралийски анестезиолог, същевременно и доста известен програмист с принос в разработката на Linux ядрото. Целта на предоставената кръпка е да се подобри работата на Linux като десктопна система, предоставящ принципно различна работа на основния елемент на ядрото, какъвто е sheduler (планировчикът). Ситуацията е малко деликатна, тъй като се противопоставя на приетия за основен такъв в момента, дело на програмиста от Red Hat – Ingo Molnar, който от своя страна е почерпил идеи за тази разработка именно от австралиеца... Става въпрос всъщност за Copletely Fair Sheduler (CFS). Ситуацията е деликатна и от друга страна, защото се намесват и донякъде лични взаимоотношения със самия Linus и изобщо с принципите и посоката на развитие на ядрото, като цяло. C.K. през 2007-ма обявява, че прекратява всякаква работа по разработката на ядрото, тъй като не се възприемат неговите идеи за подобряване на интерактивността на десктоп-средите. Това е по човешки разбираемо – не е лесно да продължаваш да работиш, след като не се приема работата ти. Но сами по себе си идеите на австралиеца са интересни – не само що се касае до ядрото, но и до пътя на развитие на цялата компютърна индустрия през последните години.
Linux-ядрото е препълнено с корпоративен баласт и това го прави слабо като десктоп среда е основния извод на Cen Kolivas.
80-те години са златното време в развитието на персоналния компютър. Тогава имаше много разработчици на хардуер и операционни системи и съществуваше истинска конкуренция. Това водеше до огромен избор за крайния потребител. Пример са PC на Amiga, чийто уникален дизайн подтикваше разработчиците на програми към нестандартни, интересни решения. В същото време IBM-PC бяха тромави и скъпи творения, които в комплект с DOS ставаха само за заместител на пишещите машини. Собствениците на такива PC непрекъснато имаха нужда от ъпгрейд на отделни негови компоненти (звук, видеокарти) за да достигнат до нивото, което по начало имаха компютрите на Amiga и Atari, примерно. Приоритетът на „желязото“ пред програмните разработки беше убийствен и водеше цялата софтуерна индустрия към такива разработки, които задоволяваха, помагаха и доставяха естетическа наслада на крайния потребител. Нещо, което не се вписваше в тази схема, или имаше лош маркетинг, просто не оцеляваше. Днес нещата са точно наопаки, процес започнал от средата на 90-те години – софтуерът е цар и хардуерът може само да се нагажда към него, колкото и несъвършени да са програмните решения... Няма да уточнявам коя операционна система стана де факто стандарт при десктопите към настоящия момент. И е напълно понятно, че хардуер несъвместим с нея, просто няма място на пазара (само ще дам един пример – SSD формално нямат нужда от SATA или PATA интерфейс, организацията на данните при тях няма нищо общо с тази при традиционните твърди дискове, но това се прави за да е възможно да работят с оная ОС и с ограниченията, които налага IBM-PC архитектурата от друга страна, впрочем друга не по-малко болна тема...). Желязото стана слуга на програмното осигуряване, пак ще повторя – колкото и несъвършено да е то... Още по-лошо е това, че производителите на хардуер бавно се поглъщат един друг. Това неминуемо намалява конкуренцията и избора за крайния клиент. Просто се произвеждат по-бързи и по-мощни версии на нещо, което е вече направено, без да се търси път за усъвършенстване и оптимизация. Необходими са ви мощни процесори, видеокарти и огромни обеми памети за да се обслужва една операционна система, програмата на вашия компютър, чиято работа вие даже не трябва да забелязвате... Иновационен хардуер престана да се разработва, за него няма пазар и пари... Хардуерът - „желязото“ стана скучно.
Но нека се върнем на Linux. Всеки знае, че той започна като хоби. Но също така се разрасна и разви до такова огромно „нещо“, което е трудно да си представим. Той се превърна в един от най-важните конкуриращи се играчи на пазара на операционни системи, една от малкото алтернативи на превърналата се де факто в стандарт (незаслужено) Microsoft Windows. Ако разработката на напредничав хардуер, все още беше двигателят в развитието на компютрите и в съперничеството между операционните системи, Windows не би имал толкова потребители и програмисти. Хардуерът се е променил много малко от 1991 година насам, когато за първи път е зареден Linux. Естествено машините са невъобразимо по-мощни, но това е за сметка на скорост, не на функционалност, или иновации. PC „умря“ от всякаква гледна точка преди 20 години и днес той е кутия с баласт. В обозримото бъдеще няма да има промяна във функционалността, методите за обработка и обмен на информацията в него. Повсеместното разпространение на интернет само циментира това положение. Linux е създаден за PC и за тези, които търсят радост, интерес от работата с компютъра си, той ви дава свобода, пълен контрол и власт върху работата на операционната система. Или, в качеството на алтернатива, повечето му последователи са убедени, че това може да се постигне, чрез тази свобода.
И все пак IBM-PC е улица без изход. Където и да го използувате винаги се оказвате в ситуация, когато той е претоварен и бавен. Има днешни машини, които по производителност са равни на суперкомпютри от преди 10 години. Преди 10 години PC бяха равни по производителност на суперкомпютрите от преди 20 години и т.н. Но защо въпреки това всичко е толкова претоварено? Защо, след като компютрите са толкова бързи, за стартирането на системата, или на отделни приложения е необходимо все повече и повече време?... Когато те се занимават с чиста обработка на информация, примерно с декодиране на видео те са възхитителни, но във всичко останало са отчайващо бавни. Биха могли да бъдат 1000 пъти по-бързи отколкото преди 10 години, но не са... Обичайното обяснение, което дават на това хора от бранша е, че те – компютрите, извършват много повече работа, отколкото преди, така че такова сравнение не е коректно. Добре, но все пак ето една проста сметка – ако те са като краен резултат 10 пъти по-бавни, вместо да бъдат 1000 пъти по-бързи, то извършват някъде 10000 операции, някъде където те са загубени за крайния потребител.
Работата на C.K. в разработката на ядрото е съсредоточена изключително върху подобряването на работата на Linux като десктопна система. Разсъжденията са много прости – след като имате контрол върху целия програмен код, съществува начин да накарате системата да работи по-бързо. Просто не може да не съществува начин да се постигне по-добра производителност. Наследството от UNIX не е никак леко. Процесът на приспособяване на една система, която изобщо не е била предназначена за десктоп е твърде болезнен. Активното участие на C.K. се отнася, като начало към версия 2.4.18, след това към версиите 2.6 и, както той споделя, измененията не били големи, но водели до известни резултати в такива неща, като поведението на процесора при голямо натоварване и пр. Следейки от близо работата по тези версии, все повече се ужасявал от крайния резултат, тъй като уважавани от него разработчици се занимавали основно с корпоративни приложения, които нямали никакво отношение към простия краен потребител. Забележително е да знаеш, че Linux може да работи на машини с 1024 процесора и 1000 твърди диска но, че включването на такава възможност в ядрото убива производителността му при обикновена десктопна система е отчайваща перспектива... Измервайки производителността, като някаква абстрактна величина, при една съвременна машина тя е много висока, но факта си е факт – аудиоплейърът ви работи накъсано и всичките гигахерци дето имате не могат да ви помогнат да чуете нормално една най-проста mp3-ка (бел.моя - на който не му се вярва това, факт от есента на 2008 година – при прясна инсталация на Fedora 10 аудиото беше точно такова – отчайващо). Или още един пример – започвате да записвате някакъв голям файл и ако имате неблагоразумието в този момент да мръднете мишката всичко на екрана замръзва и минават дълги секунди, че и минути докато отворените прозорци се обновят... Тъжна картинка. Както си спомня C.K. – направили доклад за бъг и един от разработчиците отговорил, че не може да възпроизведе проблема на компютъра си, с четириядрен процесор, 4 гигабайта RAM и твърди дискове, обединени в RAID масив... Това било преди 4 години... помислете си само по това време обикновения потребител на какви машини би работел... Това е истината – водещите разработчици на ядрото се занимават с много неща, но те нямат много, да не кажем никакво отношение към проблемите на обикновения потребител. Повечето от тях са работници в големи корпорации и проблемите на обикновените потребители са им чужди. Това което те гонят е процент увеличаване на производителността при обработка на бази данни, масиви и прочие. Linux победи на пазара на сървъри, управление на бази данни и много корпорации проявяват интерес и финансират разработката му, но усъвършенствуването му в крайна сметка става в посока, където са интересите на тези корпорации. Обикновеният настолен компютър, за който първоначално е разработен Linux остана настрана и е съвсем забравен. Производителност на машината, във вид в който я разбира простия, редови потребител всъщност няма, не само – дори няма тест с който бихте я измерили. Как бихте сравнили нещо, което няма как да измерите. Според убеждението на C.K. естественото място, където може да се подобри тази производителност е в ядрото и от тук нататък започва неговата целенасочена дейност, първо в разработка на тестова програма за оценка на производителността на една десктоп-система, разработка на кръпки към ядрото и упорито убеждаване на основните разработчици на ядрото за промени в желаната посока. Оказва се, че главните проблеми се въртят около работата на дисковата подсистема и от там, в крайна сметка се опряло до работата на планировчика (sheduler).
Много би ми се искало тук да преведа цялото интервю на C.K., но нека не надценявам собствените си сили, както и целта на една такава публикация в моя блог. За тези, които се интересуват – ползувайте препратките под линия...
Накрая искам да добавя няколко неща само. Малко е включено в основната версия на ядрото от кръпките на австралиеца, по причини много извън писането на код. Идеите, които е прокарвал са залегнали в голяма степен в работата на актуалния планировчик на ядрото, но осъществени с методи много далеч от начина по който си е представял. Това и много други разминавания с основните разработчици на ядрото довеждат до оттеглянето на Con Kolvis от участие в разработката през 2007 година... до неотдавна (шило в торба не стои).
Лично аз намерих потвърждение на много неща сред идеите на австралиеца... Искам да завърша с почти дословен цитат на следното нещо:
„ ... Всички изследвания на които се базираха моите разработки са направени много преди това – по времето на противостоенето на хардуера и софтуера. Мнозина ме обвиниха, че съм си присвоил изобретяването на „честния планировчик“, а аз не съм твърдял това никога... Заслугата ми е, че приложих вече известното към съществуващия хардуер и към ядрото... ... Академичните достижения имат тенденцията да са неприложими в ежедневния свят. От друга страна чистото хакерство има характер на катастрофа в дългосрочна перспектива, дори ако към настоящия момент може да реши даден проблем бързо. Да се намери верния баланс между хакерството и не-игнорирането на академичните изследвания – ето какво е необходимо. Аз не успях... За жалост има само неколцина от разработчиците на ядрото, които са успели...“
===================================================================
интервюто пред Apcmag
личната страница на Con Kolivas

3 коментара:

  1. Руснаците доста обсъждаха диспечера (в итературата така го превеждат, а кой съм аз да споря с професори) на Коивас. Даже искараха изследвне (включващо архиватори :) ), че няма подобрена производителност, спрямо диспечера на унгареца Молнар датиращ от 2.5.

    А и тестове за работен плот има. Направиха ги Фороникс. Даже има храниище за Дебиан, но сигурно могат да се инсталират и на Федора. Както и да е, въпреки, че ги имам инсталирни от месеци, още не съм ги пускал.

    Браво, запазваш високо йиво като винаги. Жалко, че няма още като теб в нашата свободна общност :(

    ОтговорИзтриване
  2. Жоро, аз от доста време насам ползувам изключително Debian... странно, но факт :)

    ОтговорИзтриване
  3. Брех като виждам, колко правописни грешки съм допуснал в предния коментар, настръхвам.

    За мое оправдание е от старата клавиатура, което не ме оправдава, че не съм погледнал преди да го пусна, какво е написано.

    ОтговорИзтриване