Portál AbcLinuxu, 1. května 2024 17:47

Alan Cox odpovídá

11. 6. 2007 | Robert Krátký
Články - Alan Cox odpovídá  

Alan Cox odpovídal na otázky čtenářů abclinuxu.cz. Mluví se o kevents, novinkách v jádře, smlouvě Novellu s Microsoftem, spolupráci s výrobci hardwaru i volném čase.

1) Jaký je váš názor na mikrojádra vs. monolitická jádra?

Alan Cox: Moc mě ta debata netrápí. Když začnete mluvit o tom, jestli je lepší mikrokernel nebo monolitické jádro a berete to jako rozhodnutí typu buď-anebo, tak opomíjíte fakt, že obě varianty mají své výhody a existují alternativy, které si berou od každého trochu. Linux se vědomě snaží urvat to nejlepší z obou, ale vyhnout se při tom režii, kterou mnohá mikrojádra přinášejí.

2) A co moderní mikrokernel L4 (viz jeho implementace L4Ka::Pistachio a Fiasco) a projekt L4Linux (Linux s jádrem L4)?

Nejsem s vnitřnostmi projektu L4 seznámen natolik dobře, abych to mohl komentovat.

3) V Minixu je systém na regeneraci (odstřel a restart) ovladačů. Jsou plány něco takového vytvořit i v Linuxu? Jde to vůbec?

Už teď to u mnoha zařízení funguje. Pokud zařízení přestanete používat [unconfigure], odstraníte ovladač pomocí rmmod a pak ho zase nahrajete přes insmod zpátky, tak jste ho vlastně znovu natáhli a restartovali. Nemáte sice ochranu/kontrolu potřebnou k tomu, aby to šlo provést nuceně, nebo aby šlo zaručit, že bude takový restart vždy možný, ale to je velmi náročná [expensive] operace.

4) Která část jádra je nejhůře a která nejlépe napsaná?

Tohle se opakuje pořád dokola. Když je kód je upraven, hackuje se na něm a aktualizuje se, tak se zhoršuje. Pak je však pročištěn a přepsán, takže hacky a změny, které během času přibyly, se stanou součástí designu - přestanou to být jen dodatečné doplňky.

Je však jeden kandidát na "nejhorší kód", který vydržel opravdu dlouho - floppy ovladač.

5) Je nějaká technologie, kterou byste rád viděl jako součást Linuxu?

V tuto chvíli ne, ale časem se něco určitě objeví. Jsou však věci, které bych rád viděl vyřešeny - především celá situace s X vs. framebuffer vs. konzole.

6) Poslední dobou se na LKML (popř. na LWN) probírá téma asynchronních volání. Máme tu fibrily, syslety/threadlety a kevents. Jakému řešení byste dal přednost? A proč se nedaří prosadit kevent, i když to vypadá jako zajímavé a komplexní řešení?

Líbí se mi přístup se syslety/fibrily a mohlo by to být opravdu přínosné, pokud se dokážeme vyhnout tomu, aby ten paralelismus v budoucnu způsoboval více zbytečného načítání a ukládání [thrashing] a režie. Kevents se mi líbí daleko méně - prostě proto, že programování založené na událostech není způsob, který by lidé chtěli používat při psaní systémů. Místo toho by se samozřejmě všichni měli naučit pořádně používat korutiny 8).

7) S kým se vám nejlépe spolupracuje (z vývojářů jádra)?

Takhle to ve skutečnosti nefunguje. Jsou lidé, se kterými nevycházím, a lidé, se kterými se mi pracuje lépe - ale to samo o sobě může být nebezpečné. Lidé, se kterými dobře vycházíte, často sdílí vaše názory, takže vám mohou uniknout důležitá hlediska.

Obecně to funguje velmi dobře, protože je v komunitě kolem jádra hodně chytrých lidí, díky čemuž je zajímavé tam pracovat, a člověk se může hodně naučit.

8) Kteří výrobci hardwaru patří k těm lepším z hlediska vývojáře jádra - poskytují specifikace, spolupracují a podobně?

Z velkých výrobců, se kterými pracuji, bych řekl, že nejvíce spolupracuje Intel. Poskytují dobrou dokumentaci a informace o objevených chybách a také pro svůj hardware sponzorují nebo sami píší důležité ovladače, například v oblastech 3D podpory (od Tungsten Graphics) a bezdrátového síťování. To se skutečně vyplatilo a jejich systémy jsou teď vybírány přednostně.

Mnoho dalších výrobců hodně pomáhá, zvláště někteří z těch menších, například Jmicron. Jiní se chovají trochu podivně - třeba firma AMD bývala velmi vstřícná, ale teď, když koupili ATI, dělají samé problémy. Je však nutné si pamatovat, že většina výrobců Linuxu pomáhá, protože v něm vidí možnost zisků, což může znamenat, že v některých oblastech pomáhat budou a v jiných ne. Například podpora Linuxu ze strany IBM se týká výhradně zájmů IBM - podobně jako u většiny ostatních.

Nepomáhají však jen specifikace. Prodejci jako Dell, kteří chtějí dodávat systémy připravené pro Linux, a jsou ochotni se zasadit o to, aby k tomu nakonec došlo, nemusejí zrovna poskytovat dokumentaci a psát kód (i když Dell to dělá). Ale dávají dalším výrobcům a prodejcům obchodní důvod jít do toho také, což je velmi užitečné.

9) Budoucnost vývoje jádra v horizontu 5 let; na co se můžeme těšit? Jsou chystané nějaké "revoluce"?

Z těch velkých a viditelných věcí to bude asi škálování - především velikostí pamětí a úložných zařízení. To také přináší otázku spolehlivosti a počtů chyb, což znamená změny až na úroveň diskového rozhraní, z nichž některé vyžadují podporu operačního systému.

Lidé se také zajímají o nové souborové systémy - takové, u kterých je možné fsck jejich části, takže lze disk obnovit za přiměřenou dobu, a které umí lépe odhalovat a řešit poškození při přenosu nebo na disku.

10) Nemohlo by plánované vydání Solarisu s GPLv3 oslabit pozici Linuxu (který zůstane pod GPLv2)? Nebojíte se odchodu některých vývojářů k práci na Solarisu?

Ani ne. Vlastně doufám, že se dočkáme rozumných diskuzí o dualním licencování částí kódu, abychom z toho mohli všichni těžit.

11) Co si myslíte o dohodě mezi Novellem a Microsoftem? Kdyby v budoucnu takovou dohodu podepsal i Red Hat, co by to pro vás znamenalo?

Osobně si myslím, že to není dobrý nápad, a také si myslím, že GPLv3 Novell zabolí, což je jen správné. Ta licence je navržena tak, aby software udržovala svobodný - pokud se jí to nedaří, měla by být opravena, takže GPLv3 snad tuto chybu napraví.

Pokud by s Microsoftem uzavíral dohody Red Hat, doufal bych, že se vymyslí lepší způsob, jak to provést - aby společnosti spolupracovaly na věcech, které pomáhají koncovým uživatelům, ale neohrožovaly svobodu kódu, ani nehrály podivné hry.

12) Sdílíte obavy z výhrůžek (patenty a intelektuální vlastnictví) Microsoftu?

Neřekl bych, že je to největší nebezpečí. Jak se Microsoft poslední dobou přesvědčil, tak největší hrozbou v USA jsou patentoví trollové a organizace s ukrytými patenty týkajícími se zajímavých oblastí. Skutečná odpověď na tento problém je však dostat USA zpátky na úroveň zbytku světa, který prostě neuznává patenty na software, ale respektuje je jako literární díla podléhající zákonu na ochranu autorských práv. Proto se také musíme snažit, aby byly odvráceny neustálé americké pokusy o rozšíření nesmyslných patentových zákonů do EU.

13) Jak se žije vývojáři jádra a co to obnáší? Kolik času trávíte programováním (případně testováním) a kolik studiem. Jaké jsou vaše další koníčky (kromě velštiny). A co rodina? Dá se dělat tolik práce pro vývoj, a přitom se nestat workoholikem.

Docela dobře. Většinu času pracuji na věcech, o kterých si myslím, že je potřeba je udělat, a někdy jsou to věci, o kterých si to myslí Red Hat (obyčejně se to překrývá, i když ne vždy). Snažím se dodržovat rozumný rozvrh, abych měl čas i na jiné věci, mezi které patří rodina, železnice (jak opravdová stará železnice, tak modely) a věci jako hodiny velštiny.

Snažím se netrávit příliš času prací. Kromě toho je dost důkazů o tom, že příliš času stráveného prací nakonec způsobí méně udělané práce než při rozumném zatížení.

14) Jaké pivo vám nejvíc chutnalo a kde?

Dobrá otázka a předpokládám, že z .CZ jsem ji měl čekat. Ale nejsem moc velký fanda piva. Mám rád některá belgická světlá [blonde] a německá bílá piva (weißbier). Zkusil jsem pár českých piv, ale buď jim nesvědčí cestování, nebo nejsou moc dobrá ;)

Alan

Mnozí z těch, kdo pokládali otázky, by chtělo využít tuto příležitost a poděkovat za práci, kterou jste odvedl na linuxovém jádře. Já se připojuji s díkem za čas a ochotu poskytnout tento rozhovor.

1) Where do you stand in the microkernel vs monolithic kernel debate?

I'm not greatly bothered by it. If you start talking about Microkernel versus Monolithic and assuming there is an either/or decision you lose sight of the fact that there are advantages to both and there are alternatives that get some of the benefits of each. Linux conciously tried to steal the best bits from both while avoiding the overhead many microkernels impose.

2) What about the modern L4 microkernel (especially the L4Ka::Pistachio and Fiasco implementations) and the L4Linux project (Linux on top of L4)?

I'm not really familiar enough with the internals of the L4 project to comment.

3) There is a system in Minix that allows device drivers recovery (by killing and restarting). Are there any plans for a similar functionality in Linux? Is it even possible?

It actually works today for a lot of devices. If you unconfigure a device, rmmod the driver and insmod it again it will effectively be reloaded and restarted. You don't have the needed protection/control to do that forcibly or to guarantee that such a restart is always possible - but that is very expensive to do.

4) What part of the kernel would you label as the best (in terms of programming)? And which is the worst?

I find this goes in cycles as code is modified, hacked about and updated it gets worse and then at some point it gets tidied and rewritten so that the hacks and changes made over time become part of the design not afterthoughts.

There is one candidate for "worst code" that has lasted a very long time and that is probably the floppy driver.

5) Is there a technology that you would like to be included in the kernel?

At the moment no, although one will no doubt come along in time. There are some I'd like to see sorted out however - notably the whole X versus framebuffer versus console situation.

6) There have been a lot of discussions in LKML (and LWN) recently about asynchronous system calls. We have fibrils, syslets/threadlets, and kevents. Which one would you prefer? And why do you think it's so hard to push kevents through when it seems to be an interesting and complex solution?

I like the syslet/fibril approach and I can see real advantages in that if we can avoid the extra parallelism simply causing more thrashing and overhead later on. I find kevents a lot less interesting simply because event based programming isn't how a lot of people want to program systems. They should of course all learn how to use co-routines properly 8).

7) Of the kernel developers, who do you like to work with the most?

It doesn't really work like that. There are certainly people I don't get on with, and people who I work better with - but that itself can be dangerous. Often the people you get along with are the people who think the same way and you can end up missing other viewpoints.

Generally it works very well, and there are a lot of very bright people in the kernel community which makes it very interesting and ensures there is a lot to learn.

8) What hardware vendors do you consider the best from a kernel developer's point of view -- in that they provide specification, cooperate, etc?

Of the big vendors I deal with I would say Intel are probably the most co-operative today, they provide good documentation, errata information and also fund or write key drivers for their hardware such as the 3D support (done by Tungsten Graphics) and the wireless. That has really paid off and made their systems hardware of choice.

A lot of other vendors are very helpful, some of the small ones like Jmicron especially so. Others can be very strange in their behaviour - AMD for example used to be very helpful but now they own ATI are being extremely problematic. At the end of the day it is important to remember that most of them are helping Linux because they see it as a revenue earner and that can mean they will be helpful in some areas and not others. IBM support for Linux for example is ultimately about IBM's interests - likewise almost anyone else.

It isn't just specifications that help, vendors like Dell wanting to ship Linux ready systems and willing to make sure this happens don't neccessarily provide documentation and write code (although Dell do) but they provide a business reason for other vendors to do so, and that is also very helpful.

9) Where do you see the Linux kernel in five years? Any radical changes coming up?

The big ones that are visible are probably scaling ones - particularly memory sizes and storage. These also trigger concerns about reliability and error rates which mean changes right down to the disk interface level, some of which need operating system support.

People are looking at new file systems - file systems you can fsck parts of so it is possible to recover a disk in realistic time scales, and which can handle and detect corruption on the link or disk better.

10) Do you think that licensing Solaris under the GPLv3 might weaken the position of Linux (which is about to continue using the GPLV2)? Are you worried about the possibility of Linux developers leaving to work on Solaris?

Not greatly. In fact I would hope we will see sensible discussions about dual licensing bits of code so that we can all benefit from them.

11) What is your take on the Novell - Microsoft deal? Should Red Hat be a party to such agreement sometime in the future, what would that mean for you?

Personally I think it's a bad idea and that Novell are going to get stung by the GPLv3, and rightfully so. The license is designed to keep the software free, if it fails to do this then it needs fixing, so GPLv3 hopefully will fix this flaw.

If Red Hat did deals with Microsoft I'd hope they would find a better way to do things, to co-operate on things that help end users but not to compromise the freedom of the code or play any funny games.

12) Do you share some people's fear of Microsoft's threats (concerning patents and intellectual property)?

I don't think they are the biggest danger. As Microsoft has been finding out recently it is the patent trolls, and organisations with buried patents in interesting areas that are the biggest threat in the USA. The real answer to that problem however is to pull the USA back into line with the majority of the world which simply does not recognize patents on software but respects them as literary works subject to copyright law. Also therefore we have to make sure the continuing US attempts to spread bogus patent law into the EU are defeated.

13) What is a kernel developer's life like? How much time do you spend writing code (or testing) and how much do you study? What are your other hobbies (besides Welsh)? And what about your family? Is it possible to work so much without becoming a workoholic?

Pretty good. Most of the time I am working on the things I think need doing, sometimes on the things Red Hat thinks need doing (usually the two co-incide but not always). I try and keep sensible hours so I have time for other things, which include family, railway related stuff (both full size heritage railway and model), and things like Welsh lessons.

I try not to spend too much time on work stuff, and there is good evidence anyway that spending too much time on work actually ends up getting less done than working sensibly.

14) What beer did you enjoy the most and where?

Good question and one I suppose I should expect from .CZ. I'm not actually a great beer fan however. I do like some of the Belgian blonde beers and the German weißbeers. I've tried a couple of Czech beers and either they don't travel well or they are not very good ;)

Alan

Many of those who asked questions wanted to use this opportunity to thank you for your work on the Linux kernel. I also thank you for your time and goodwill regarding this interview.

Související články

Ptejte se Alana Coxe
Rozhovor: Richard Stallman
Interview: Matthew Szulik, Red Hat
Rozhovor: Miguel de Icaza - I (Mono)
Rozhovor: Petr "Pasky" Baudiš
Rozhovor s Vladimírem Mlynářem, ministrem informatiky

Další články z této rubriky

Michal Švec ze SUSE na téma Virtualizace a SLES
Rozhovor s Radkem Špimrem, IBM na téma nových serverů IBM Power Systems LC
Zpověď startupu na vlně IBM
ČVUT jako MIT? Lendl, Navrátilová, Jágr, Sáblíková, nebo absolvent FELu?
Práce vývojáře je dobrodružství

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.