The future of Linux Arnoud de Geus March 5 th  2008
Welcome @Sioux <ul><li>Agenda </li></ul><ul><li>18:00 hrs Welcome </li></ul><ul><li>Alan Cox I </li></ul><ul><li>19:30 – 2...
Introduction <ul><li>Arnoud de Geus </li></ul><ul><li>Business Development Manager </li></ul><ul><li>Responsible for Linux...
Hot-or-Not @Sioux <ul><li>Why Hot-or-Not? </li></ul><ul><li>Increase productivity by innovation </li></ul><ul><li>We invit...
Innovation & Open Source <ul><li>Open source accelerates innovation </li></ul><ul><li>Open innovation is the only way for ...
Linux @Sioux <ul><li>Linux frequently used in projects @Sioux since end 90’s </li></ul><ul><li>Stable open platform used i...
Linux Knowledge @Sioux <ul><li>Kernel related </li></ul><ul><ul><li>Linux kernel tweaking, Linux device driver development...
Employee Programs  @Sioux <ul><li>Embedded Linux Courses (MontaVista) </li></ul><ul><li>Device Driver Courses (MontaVista)...
© Sioux Embedded Systems 2008 | Confidential | The future of Linux Alan Cox
Welcome to HTS valley <ul><li>High Tech Systems Industry 2004-2007 </li></ul><ul><ul><li>20-24 Billion  € growth,  average...
Alan Cox <ul><li>Linux entrepreneur </li></ul><ul><li>Early Linux adopter at University of Wales ( Rewriting the network l...
THE FUTURE OF LINUX presented at Hot-or-Not powered by Sioux March 5th 2008 Alan Cox
How do we predict the future <ul><li>Analyze The Past </li></ul><ul><li>Identify Trends </li></ul><ul><li>Propose The Resu...
What Influences Linux Development <ul><li>Business Evolution </li></ul><ul><li>Hardware Is Evolving </li></ul><ul><li>Soft...
Why Put Business First <ul><li>Most Technology Benefits Come Through </li></ul><ul><li>Exploiting Business Opportunities <...
What Is Business Driving <ul><li>Small Footprint </li></ul><ul><li>Embedded Devices Have Memory Constraints </li></ul><ul>...
What Is Business Driving <ul><li>Real Time </li></ul><ul><li>Embedded Uses </li></ul><ul><li>Large Servers Needing Predict...
Hardware Evolution <ul><li>Storage </li></ul><ul><li>Solid State Storage </li></ul><ul><li>Disk Approaches Flat Cost </li>...
Hardware Evolution <ul><li>Performance </li></ul><ul><li>Single Thread Of Execution Ceiling </li></ul><ul><li>Multi-thread...
Software <ul><li>Validation </li></ul><ul><li>New Better Tools </li></ul><ul><li>Find Bugs At Compile Time </li></ul><ul><...
Security <ul><li>Liability (Notably For Data Loss) </li></ul><ul><li>Interest In Real Security </li></ul><ul><li>Systems W...
Legal Evolution <ul><li>Liability Law </li></ul><ul><li>EU Determined To &quot;Fix&quot; Software Liability </li></ul><ul>...
Big Picture <ul><li>Everyone wants </li></ul><ul><li>security </li></ul><ul><li>power management </li></ul><ul><li>real ti...
Dynamic Configuration <ul><li>Historical Unix System </li></ul><ul><li>Device configuration at compile </li></ul><ul><li>D...
Dynamic Configuration <ul><li>Modern Systems </li></ul><ul><li>Device hotplug </li></ul><ul><li>System responds to events ...
Dynamic Configuration <ul><li>KObject </li></ul><ul><li>A basic kernel refcount and name </li></ul><ul><li>Refcounted </li...
Dynamic Configuration <ul><li>Sysfs </li></ul><ul><li>Built on kobject and devices </li></ul><ul><li>Heirarchical file sys...
Dynamic Configuration <ul><li>Triggering User Actions </li></ul><ul><li>/sbin/hotplug </li></ul><ul><li>netlink </li></ul>...
Dynamic Configuration <ul><li>The /dev Problem </li></ul><ul><li>MAKEDEV </li></ul><ul><li>Devfs (policy in the wrong plac...
Dynamic Configuration <ul><li>Modern Desktop Is Complicated </li></ul><ul><li>Inserting An SD Card </li></ul><ul><li>Kerne...
Dynamic Configuration <ul><li>Inserting an SD Card (2) </li></ul><ul><li>Kernel: Key Event </li></ul><ul><li>HAL: Password...
Usual Implementation <ul><li>Usage Counts </li></ul><ul><li>foo_get and foo_put operators </li></ul><ul><li>destroy is del...
Speeding Updates <ul><li>Read Copy Update </li></ul><ul><li>Self consistent object view </li></ul><ul><li>Less synchroniza...
Driver Mentality <ul><li>Historically </li></ul><ul><li>Driver entry point scans for devices </li></ul><ul><li>Driver crea...
Power Management <ul><li>Saving Power </li></ul><ul><li>increases battery life </li></ul><ul><li>reduces cooling cost </li...
Power Management <ul><li>Full Stack Optimisation </li></ul><ul><li>Hardware supports power levels </li></ul><ul><li>Kernel...
Power Management <ul><li>We need to know </li></ul><ul><li>How to turn stuff off </li></ul><ul><li>When to turn stuff off ...
Mainframes and Phones <ul><li>Why are mainframes and phones alike ? </li></ul><ul><li>Virtualisation needs reduced wakeup ...
Tickless Kernel <ul><li>Our most rapid wakeup becomes the clock </li></ul><ul><li>Avoid the clock tick </li></ul><ul><li>I...
Real Time Linux <ul><li>Historically </li></ul><ul><li>Soft (very soft) real time </li></ul><ul><li>Memory locking </li></...
Real Time Linux <ul><li>Systematic Approach </li></ul><ul><li>Replace most semaphores with mutexes </li></ul><ul><li>Suppo...
Real Time Linux <ul><li>Priority Inversion </li></ul><ul><li>Multireader locks cause problems </li></ul><ul><li>Fixable fo...
The Trouble With Disks <ul><li>Disk Scaling </li></ul><ul><li>Capacity Keeps Doubling </li></ul><ul><li>Seek Time Unchange...
The Trouble With Disks <ul><li>Filesystems </li></ul><ul><li>How to lay out the file store </li></ul><ul><li>Block pointer...
The Trouble With Disks <ul><li>Long Term </li></ul><ul><li>Support partial disk checking </li></ul><ul><li>Integrity and s...
The Trouble With Disks <ul><li>User Space </li></ul><ul><li>Back up times </li></ul><ul><li>Find/Search times </li></ul><u...
Memory Scaling <ul><li>Page Size </li></ul><ul><li>Stuck at 4K on PC systems </li></ul><ul><li>Very large number of pages ...
Management <ul><li>Drowning in PCs </li></ul><ul><li>Want to reduce data centre cost </li></ul><ul><li>Want to save power ...
Virtualisation <ul><li>Impacts </li></ul><ul><li>Wasted resources are now real waste </li></ul><ul><li>How to manage memor...
Virtualisation <ul><li>User Space </li></ul><ul><li>Management interfaces (libvirt) </li></ul><ul><li>Removing waste </li>...
Multiprocessing <ul><li>Threaded Software </li></ul><ul><li>Poor C language support </li></ul><ul><li>More threads more bu...
Multiprocessing <ul><li>Avoiding Kernel Bugs </li></ul><ul><li>Validation tools for locking </li></ul><ul><li>Debug aids <...
Software Quality And Approach <ul><li>Once Upon A Time </li></ul><ul><li>Well written tight code </li></ul><ul><li>Program...
Video Support <ul><li>Hardware Changes </li></ul><ul><li>2D to 3D </li></ul><ul><li>Fast programmable 3D engines </li></ul...
Video Support <ul><li>Software Demands </li></ul><ul><li>Alpha blending for truetype </li></ul><ul><li>Video playback over...
Video Support <ul><li>In The Pipeline </li></ul><ul><li>Kernel side video mode setting </li></ul><ul><li>Oops reporting in...
Different Hardware <ul><li>Unix Model </li></ul><ul><li>Processor with MMU </li></ul><ul><li>Memory </li></ul><ul><li>Disk...
Different Hardware <ul><li>Currently Unsupported </li></ul><ul><li>36bit systems (no PDP 10) </li></ul><ul><li>Very small ...
And finally.. <ul><li>To understand the future we need to understand the processes involved </li></ul><ul><li>Nobody under...
Systems Theory <ul><li>Systems Theory </li></ul><ul><li>Models to explain how self organising systems behave. </li></ul><u...
The future of Linux © Sioux Embedded Systems 2008 | Confidential |
More Hot-or-Not <ul><li>Erlang - is functional programming the newest trend after OO? </li></ul><ul><li>Joe Armstrong May ...
Alan Cox and Linux... <ul><li>Sioux will donate  € 3.000,- to </li></ul><ul><li>Foundation for a Free Information Infrastr...
Alan Cox and Linux... <ul><li>Sioux will donate  € 3.000,- to </li></ul><ul><li>Foundation for a Free Information Infrastr...
Alan Cox and trains... © Sioux Embedded Systems 2008 | Confidential | Alan has a passion for software, and also a passion ...
www.sioux.eu [email_address] +31(0)40 2677100
Upcoming SlideShare
Loading in …5
×

Sioux Hot-or-Not: The future of Linux (Alan Cox)

2,490 views

Published on

Sioux Hot-or-Not 5 maart 2008, The future of Linux met Alan Cox

Published in: Business, Technology
  • Be the first to comment

  • Be the first to like this

Sioux Hot-or-Not: The future of Linux (Alan Cox)

  1. 1. The future of Linux Arnoud de Geus March 5 th 2008
  2. 2. Welcome @Sioux <ul><li>Agenda </li></ul><ul><li>18:00 hrs Welcome </li></ul><ul><li>Alan Cox I </li></ul><ul><li>19:30 – 20:00 hrs Break </li></ul><ul><li>Alan Cox II </li></ul><ul><li>21:00 hrs Social </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  3. 3. Introduction <ul><li>Arnoud de Geus </li></ul><ul><li>Business Development Manager </li></ul><ul><li>Responsible for Linux @ Sioux </li></ul>
  4. 4. Hot-or-Not @Sioux <ul><li>Why Hot-or-Not? </li></ul><ul><li>Increase productivity by innovation </li></ul><ul><li>We invite experts from all around the world to inspire us in improving the productivity of our region. </li></ul><ul><li>Is it ‘Hot’? or is it ‘Not’? </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  5. 5. Innovation & Open Source <ul><li>Open source accelerates innovation </li></ul><ul><li>Open innovation is the only way for certain commodities such as operating systems </li></ul><ul><li>Embedded appliance of open source layers accelerates time-to-market enormously </li></ul><ul><li>OEM: focus on core technologies </li></ul><ul><li>One of the best examples: Linux </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  6. 6. Linux @Sioux <ul><li>Linux frequently used in projects @Sioux since end 90’s </li></ul><ul><li>Stable open platform used in both embedded environments and on application level </li></ul><ul><li>Examples </li></ul><ul><ul><li>Consumer Electronics (like high end TV’s, ADSL modems, domotics, Wifi routers, ..) </li></ul></ul><ul><ul><li>Professional Equipment (like copiers, electron microscope’s, wafer scanners, ..) </li></ul></ul><ul><ul><ul><li>Fri-Jado Food vending machine > demo </li></ul></ul></ul>© Sioux Embedded Systems 2008 | Confidential |
  7. 7. Linux Knowledge @Sioux <ul><li>Kernel related </li></ul><ul><ul><li>Linux kernel tweaking, Linux device driver development, USB, Linux system boot, Linux system configuration, .. </li></ul></ul><ul><li>Development / Test environment </li></ul><ul><ul><li>GNU, MontaVista, WindRiver, Eclipse, .. </li></ul></ul><ul><li>Linux user space </li></ul><ul><ul><li>Graphics subsystems like DirectFB, VNC, .. </li></ul></ul>© Sioux Embedded Systems 2008 | Confidential |
  8. 8. Employee Programs @Sioux <ul><li>Embedded Linux Courses (MontaVista) </li></ul><ul><li>Device Driver Courses (MontaVista) </li></ul><ul><li>Linux Knowledge Expertise Group ~25 members (both Belgium & Netherlands) </li></ul><ul><li>Linux conference attendance </li></ul><ul><li>Actively acquiring Linux projects (frequently we choose Linux for projects @ Sioux Development Centre) </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  9. 9. © Sioux Embedded Systems 2008 | Confidential | The future of Linux Alan Cox
  10. 10. Welcome to HTS valley <ul><li>High Tech Systems Industry 2004-2007 </li></ul><ul><ul><li>20-24 Billion € growth, average > 6% growth </li></ul></ul><ul><li>Consumer Electronics / Telecom, Professional equipment with high accuracy, Medical systems, Automotive, Semiconductor </li></ul><ul><li>E.g. ASML, Bosch, FEI, NXP, Oc é, Medtronic, TomTom, Thomson, Philips, Vanderlande, … </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  11. 11. Alan Cox <ul><li>Linux entrepreneur </li></ul><ul><li>Early Linux adopter at University of Wales ( Rewriting the network layer) </li></ul><ul><li>Alan Cox branches –ac (2.4 branch) (Very stable platform for vendor branches) </li></ul><ul><li>Supports programming freedom Is against software patents </li></ul><ul><li>Honorary degree CS, MBA University of Wales </li></ul><ul><li>Advisory board FIPR, ORG </li></ul><ul><li>Working @Red Hat </li></ul><ul><li>Living in Wales with Telsa Gwynne </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  12. 12. THE FUTURE OF LINUX presented at Hot-or-Not powered by Sioux March 5th 2008 Alan Cox
  13. 13. How do we predict the future <ul><li>Analyze The Past </li></ul><ul><li>Identify Trends </li></ul><ul><li>Propose The Result </li></ul>We cannot predict the future of the kernel by considering the kernel alone
  14. 14. What Influences Linux Development <ul><li>Business Evolution </li></ul><ul><li>Hardware Is Evolving </li></ul><ul><li>Software Methodologies Are Improving </li></ul><ul><li>The Security Situation </li></ul><ul><li>Microsoft </li></ul><ul><li>Law and Politics </li></ul>
  15. 15. Why Put Business First <ul><li>Most Technology Benefits Come Through </li></ul><ul><li>Exploiting Business Opportunities </li></ul><ul><li>Enabling People and Processes </li></ul><ul><li>Focus on the code and you are walking blindly </li></ul>
  16. 16. What Is Business Driving <ul><li>Small Footprint </li></ul><ul><li>Embedded Devices Have Memory Constraints </li></ul><ul><li>Flash Size Determines Profits </li></ul><ul><li>Virtualization: Memory Is No Longer Free </li></ul><ul><li>Power </li></ul><ul><li>Battery Limitations In Laptop/Embedded </li></ul><ul><li>Cost Of Power For Server Rooms </li></ul><ul><li>State and Economic Pricing Pressure </li></ul>
  17. 17. What Is Business Driving <ul><li>Real Time </li></ul><ul><li>Embedded Uses </li></ul><ul><li>Large Servers Needing Predictible Response </li></ul><ul><li>Trading Floor </li></ul><ul><li>Scalability </li></ul><ul><li>More Storage </li></ul><ul><li>More Memory </li></ul><ul><li>More Processors </li></ul><ul><li>More Systems To Manage </li></ul>
  18. 18. Hardware Evolution <ul><li>Storage </li></ul><ul><li>Solid State Storage </li></ul><ul><li>Disk Approaches Flat Cost </li></ul><ul><li>Scaling File Systems </li></ul><ul><li>Scaling Search/Index/Backup </li></ul><ul><li>Price </li></ul><ul><li>Ever Downward </li></ul><ul><li>Enabling New Opportunities (EeePC) </li></ul><ul><li>Almost No Margin For Software </li></ul>
  19. 19. Hardware Evolution <ul><li>Performance </li></ul><ul><li>Single Thread Of Execution Ceiling </li></ul><ul><li>Multi-threaded, Multi-core </li></ul><ul><li>Challenges Of Parallelism </li></ul><ul><li>Dynamic Configuration </li></ul><ul><li>Hardware Used To Change At Power Cycle </li></ul><ul><li>Dynamic Devices </li></ul><ul><li>Object Lifetimes </li></ul><ul><li>Dynamic Application Events </li></ul>
  20. 20. Software <ul><li>Validation </li></ul><ul><li>New Better Tools </li></ul><ul><li>Find Bugs At Compile Time </li></ul><ul><li>Verifiers At Runtime </li></ul><ul><li>Languages And Tools </li></ul><ul><li>More Interpreters </li></ul><ul><li>Stronger Security Models </li></ul><ul><li>Faster Locking Models </li></ul>
  21. 21. Security <ul><li>Liability (Notably For Data Loss) </li></ul><ul><li>Interest In Real Security </li></ul><ul><li>Systems Which Fail Safe </li></ul><ul><li>Compartments </li></ul><ul><li>Strong Encryption </li></ul><ul><li>Smart Cards </li></ul>
  22. 22. Legal Evolution <ul><li>Liability Law </li></ul><ul><li>EU Determined To &quot;Fix&quot; Software Liability </li></ul><ul><li>Standards Of Design </li></ul><ul><li>Standards Of Operation </li></ul><ul><li>Properly Stating What Software Is Fit For </li></ul><ul><li>Patents </li></ul><ul><li>EU Software Patents War Goes On </li></ul>
  23. 23. Big Picture <ul><li>Everyone wants </li></ul><ul><li>security </li></ul><ul><li>power management </li></ul><ul><li>real time </li></ul><ul><li>performance/efficiency </li></ul><ul><li>There are clashes between </li></ul><ul><li>footprint and scalability </li></ul><ul><li>dynamic devices and footprint </li></ul><ul><li>security and performanc </li></ul>
  24. 24. Dynamic Configuration <ul><li>Historical Unix System </li></ul><ul><li>Device configuration at compile </li></ul><ul><li>Device configuration at boot </li></ul><ul><li>Object lifetime is kernel </li></ul><ul><li>Administrator manages /dev </li></ul><ul><li>User Interface </li></ul><ul><li>User driven </li></ul><ul><li>No event model </li></ul><ul><li>(User requests status) </li></ul><ul><li>Dynamic reconfiguration </li></ul>
  25. 25. Dynamic Configuration <ul><li>Modern Systems </li></ul><ul><li>Device hotplug </li></ul><ul><li>System responds to events </li></ul><ul><li>User application events </li></ul><ul><li>New Rules </li></ul><ul><li>Object lifetimes matter </li></ul><ul><li>Kernel to user events exist </li></ul><ul><li>Device namespace is dynamic </li></ul>
  26. 26. Dynamic Configuration <ul><li>KObject </li></ul><ul><li>A basic kernel refcount and name </li></ul><ul><li>Refcounted </li></ul><ul><li>Can be grouped </li></ul><ul><li>No garbage collectors </li></ul><ul><li>Used to build other objects </li></ul><ul><li>Device objects </li></ul><ul><li>Sysfs - generic configuration </li></ul><ul><li>And many many more </li></ul>
  27. 27. Dynamic Configuration <ul><li>Sysfs </li></ul><ul><li>Built on kobject and devices </li></ul><ul><li>Heirarchical file system </li></ul><ul><li>Namespace for configuration </li></ul><ul><li>Replaces much of /proc/sys and sysctl </li></ul><ul><li>Dynamically extensible </li></ul>Allow user space to configure and explore the object heirarchy in the kernel.
  28. 28. Dynamic Configuration <ul><li>Triggering User Actions </li></ul><ul><li>/sbin/hotplug </li></ul><ul><li>netlink </li></ul><ul><li>User Space </li></ul><ul><li>HAL </li></ul><ul><li>Dbus </li></ul><ul><li>Desktop events </li></ul>
  29. 29. Dynamic Configuration <ul><li>The /dev Problem </li></ul><ul><li>MAKEDEV </li></ul><ul><li>Devfs (policy in the wrong place) </li></ul><ul><li>Use events </li></ul><ul><li>Udev </li></ul><ul><li>Udev can also drive user space via HAL. </li></ul>
  30. 30. Dynamic Configuration <ul><li>Modern Desktop Is Complicated </li></ul><ul><li>Inserting An SD Card </li></ul><ul><li>Kernel: New hardware found </li></ul><ul><li>Hotplug: Load module </li></ul><ul><li>Kernel: New device </li></ul><ul><li>UDev: Make device node </li></ul><ul><li>Kernel: New volume found </li></ul><ul><li>HAL: Mount it </li></ul><ul><li>... </li></ul>
  31. 31. Dynamic Configuration <ul><li>Inserting an SD Card (2) </li></ul><ul><li>Kernel: Key Event </li></ul><ul><li>HAL: Password Prompt, Send key </li></ul><ul><li>Kernel: Mounted </li></ul><ul><li>HAL: Dbus message to apps </li></ul><ul><li>Desktop: Add new icon </li></ul><ul><li>Desktop: Umm &quot;dcim/&quot;... </li></ul><ul><li>Desktop: Start photo manager </li></ul><ul><li>And at any point the card might be removed! </li></ul>
  32. 32. Usual Implementation <ul><li>Usage Counts </li></ul><ul><li>foo_get and foo_put operators </li></ul><ul><li>destroy is delayed until users = 0 </li></ul><ul><li>internal implementation via locks/atomic types </li></ul><ul><li>Problems </li></ul><ul><li>Easy to get use counts wrong </li></ul><ul><li>Scaling of use counters across processors </li></ul><ul><li>Fine for most object types </li></ul>
  33. 33. Speeding Updates <ul><li>Read Copy Update </li></ul><ul><li>Self consistent object view </li></ul><ul><li>Less synchronization </li></ul><ul><li>No or little locking </li></ul><ul><li>Some memory overhead </li></ul>Objects are copied before update and then the pointer atomically switched. Old objects are discarded at a point we know they are no longer in use.
  34. 34. Driver Mentality <ul><li>Historically </li></ul><ul><li>Driver entry point scans for devices </li></ul><ul><li>Driver creates devices </li></ul><ul><li>Today </li></ul><ul><li>Devices are enumerated by bus drivers </li></ul><ul><li>Device match functions </li></ul><ul><li>Bus matches device to drivers </li></ul><ul><li>Bus calls driver probe/remove methods </li></ul><ul><li>Everything assumed to be dynamic </li></ul>
  35. 35. Power Management <ul><li>Saving Power </li></ul><ul><li>increases battery life </li></ul><ul><li>reduces cooling cost </li></ul><ul><li>saves money and planets </li></ul><ul><li>It is not </li></ul><ul><li>just about hardware </li></ul><ul><li>just about kernels </li></ul>
  36. 36. Power Management <ul><li>Full Stack Optimisation </li></ul><ul><li>Hardware supports power levels </li></ul><ul><li>Kernel makes best use of them </li></ul><ul><li>Governors set strategy </li></ul><ul><li>User Space </li></ul><ul><li>Fewerwatts.org </li></ul><ul><li>Reduce unneccessary wakeup events </li></ul><ul><li>Tools to identify power hogs </li></ul>Open source means we can fix the entire stack without being limited by a single badly performing vendor.
  37. 37. Power Management <ul><li>We need to know </li></ul><ul><li>How to turn stuff off </li></ul><ul><li>When to turn stuff off </li></ul><ul><li>The order to do it </li></ul>Old Linux kernels had a simple power event model, unsuited to anything but firmware managed power. Today we use bus and device heirarchies to sequence power events.
  38. 38. Mainframes and Phones <ul><li>Why are mainframes and phones alike ? </li></ul><ul><li>Virtualisation needs reduced wakeup events in order to be efficient. Phones need reduced wakeup events to save power. </li></ul><ul><li>We need to identify </li></ul><ul><li>Common goals </li></ul><ul><li>Different goals with a common solution </li></ul><ul><li>Sometimes this is hard with embedded </li></ul><ul><li>Power specific memory </li></ul>
  39. 39. Tickless Kernel <ul><li>Our most rapid wakeup becomes the clock </li></ul><ul><li>Avoid the clock tick </li></ul><ul><li>Initial ’stop clock when idle’ hack </li></ul><ul><li>Proper timer based methods </li></ul><ul><li>Identify timeouts </li></ul><ul><li>Maintainer a timer for the timeout point </li></ul><ul><li>Aggregate nearby time events </li></ul><ul><li>Still Needed </li></ul><ul><li>Ability to indicate required accuracy </li></ul>
  40. 40. Real Time Linux <ul><li>Historically </li></ul><ul><li>Soft (very soft) real time </li></ul><ul><li>Memory locking </li></ul><ul><li>Adding Pre-emption points </li></ul><ul><li>Pre-emptible kernel </li></ul><ul><li>Approaches </li></ul><ul><li>Guest OS on RT uKernel (RTLinux) </li></ul><ul><li>Add on patches (many) </li></ul><ul><li>Fix the kernel cleanly (hard) </li></ul>
  41. 41. Real Time Linux <ul><li>Systematic Approach </li></ul><ul><li>Replace most semaphores with mutexes </li></ul><ul><li>Support schedulable interrupt handlers </li></ul><ul><li>Preserve most existing behaviour guarantees </li></ul><ul><li>Compromises </li></ul><ul><li>Reader/writer lock is actually single reader </li></ul>Linux is developed by evolution. Sudden large changes are generally opposed. Thus the realtime patches must not break existing code.
  42. 42. Real Time Linux <ul><li>Priority Inversion </li></ul><ul><li>Multireader locks cause problems </li></ul><ul><li>Fixable for mutexes and single reader locks </li></ul><ul><li>RCU never causes priority inversion </li></ul><ul><li>Schedulable interrupts permit sleeping IRQs </li></ul>Switch any problematic reader/writer locks to RCU and boost performance for all. Can deliver 100uS - 1mS guarantees dependant on hardware.
  43. 43. The Trouble With Disks <ul><li>Disk Scaling </li></ul><ul><li>Capacity Keeps Doubling </li></ul><ul><li>Seek Time Unchanged </li></ul><ul><li>Data Rate Rises Too Slowly </li></ul><ul><li>Disks typically perform under 300 ops/second. </li></ul>
  44. 44. The Trouble With Disks <ul><li>Filesystems </li></ul><ul><li>How to lay out the file store </li></ul><ul><li>Block pointers and bitmaps </li></ul><ul><li>Scalable error recovery </li></ul><ul><li>Linear runs are important </li></ul><ul><li>Short Term Approaches </li></ul><ul><li>Grow the on the disk pointer sizes </li></ul><ul><li>Adjust layout for faster checking </li></ul><ul><li>Add Encryption </li></ul>
  45. 45. The Trouble With Disks <ul><li>Long Term </li></ul><ul><li>Support partial disk checking </li></ul><ul><li>Integrity and self healing </li></ul><ul><li>Media level assistance </li></ul><ul><li>Flash addons for power management </li></ul><ul><li>Will we be using disks ? </li></ul>
  46. 46. The Trouble With Disks <ul><li>User Space </li></ul><ul><li>Back up times </li></ul><ul><li>Find/Search times </li></ul><ul><li>Versioning data </li></ul><ul><li>Visualising disk usage </li></ul>
  47. 47. Memory Scaling <ul><li>Page Size </li></ul><ul><li>Stuck at 4K on PC systems </li></ul><ul><li>Very large number of pages </li></ul><ul><li>Lot of meta data </li></ul><ul><li>Makes paging and I/O decisions costly </li></ul><ul><li>Memory Management </li></ul><ul><li>Free memory management </li></ul><ul><li>Virtualisation </li></ul><ul><li>Caches and SMP </li></ul>
  48. 48. Management <ul><li>Drowning in PCs </li></ul><ul><li>Want to reduce data centre cost </li></ul><ul><li>Want to save power </li></ul><ul><li>PC systems mostly idle resource </li></ul><ul><li>Virtualisation </li></ul><ul><li>Dynamic resource assignment </li></ul><ul><li>Higher total utilisation </li></ul><ul><li>Less hardware </li></ul><ul><li>Isolate software from hardware </li></ul>
  49. 49. Virtualisation <ul><li>Impacts </li></ul><ul><li>Wasted resources are now real waste </li></ul><ul><li>How to manage memory dynamically </li></ul><ul><li>Disk optimisation between guests </li></ul><ul><li>Too many cooks </li></ul><ul><li>Approaches </li></ul><ul><li>Xen - microkernel plus special guest </li></ul><ul><li>KVM - Linux as hypervisor </li></ul>
  50. 50. Virtualisation <ul><li>User Space </li></ul><ul><li>Management interfaces (libvirt) </li></ul><ul><li>Removing waste </li></ul><ul><li>Visualising and controlling </li></ul><ul><li>Integration with older tools </li></ul><ul><li>Software licensing </li></ul><ul><li>Research Areas </li></ul><ul><li>Disk management </li></ul><ul><li>Timer management across guests </li></ul><ul><li>Gang scheduling </li></ul><ul><li>RT and Hypervisors </li></ul>
  51. 51. Multiprocessing <ul><li>Threaded Software </li></ul><ul><li>Poor C language support </li></ul><ul><li>More threads more bugs </li></ul><ul><li>Cost of locking </li></ul><ul><li>Cache affinity management </li></ul><ul><li>Approaches </li></ul><ul><li>Kernel futex locks </li></ul><ul><li>NUMA and affinity aware scheduler </li></ul><ul><li>Reconsidering software models </li></ul>
  52. 52. Multiprocessing <ul><li>Avoiding Kernel Bugs </li></ul><ul><li>Validation tools for locking </li></ul><ul><li>Debug aids </li></ul><ul><li>Well defined locking policies </li></ul><ul><li>We can’t change language </li></ul><ul><li>User Space </li></ul><ul><li>Language choice </li></ul><ul><li>Threading or messaging </li></ul><ul><li>Give hard jobs to tools </li></ul>
  53. 53. Software Quality And Approach <ul><li>Once Upon A Time </li></ul><ul><li>Well written tight code </li></ul><ul><li>Programmers wrote programs </li></ul><ul><li>Programmers fixed inefficiencies </li></ul><ul><li>Kernel developers told users to fix sillyness </li></ul><ul><li>Nowdays </li></ul><ul><li>Non programmers put together code </li></ul><ul><li>PC CPU is cheaper than fixing code </li></ul><ul><li>Systems must be robust to poor coding </li></ul><ul><li>Efficiency under stupid loads </li></ul>
  54. 54. Video Support <ul><li>Hardware Changes </li></ul><ul><li>2D to 3D </li></ul><ul><li>Fast programmable 3D engines </li></ul><ul><li>Fast main memory paths </li></ul><ul><li>Much harder to program </li></ul><ul><li>Fortunately there are few players left who matter </li></ul>
  55. 55. Video Support <ul><li>Software Demands </li></ul><ul><li>Alpha blending for truetype </li></ul><ul><li>Video playback overlay and compositing </li></ul><ul><li>OpenGL 3D </li></ul><ul><li>Robustness with speed </li></ul><ul><li>Compositing for effects </li></ul><ul><li>User Space </li></ul><ul><li>Cairo </li></ul><ul><li>X EXA Acceleration Model </li></ul><ul><li>RandR </li></ul><ul><li>Xv </li></ul>
  56. 56. Video Support <ul><li>In The Pipeline </li></ul><ul><li>Kernel side video mode setting </li></ul><ul><li>Oops reporting in graphics mode </li></ul><ul><li>Improved 3D and DRI integration </li></ul><ul><li>Hardware Direction </li></ul><ul><li>Closer CPU and 3D integration </li></ul><ul><li>From 3D engine to parallel CPU </li></ul><ul><li>Expect on CPU video </li></ul>
  57. 57. Different Hardware <ul><li>Unix Model </li></ul><ul><li>Processor with MMU </li></ul><ul><li>Memory </li></ul><ul><li>Disks </li></ul><ul><li>Block/Char devices </li></ul><ul><li>tty device for console </li></ul><ul><li>Linux Today </li></ul><ul><li>MMU optional </li></ul><ul><li>Disks or Flash or RAM </li></ul><ul><li>Block devices optional </li></ul><ul><li>Still need memory 8) </li></ul>
  58. 58. Different Hardware <ul><li>Currently Unsupported </li></ul><ul><li>36bit systems (no PDP 10) </li></ul><ul><li>Very small embedded </li></ul><ul><li>Processors without atomic pointer_t writes </li></ul><ul><li>Really warped hardware designs </li></ul>
  59. 59. And finally.. <ul><li>To understand the future we need to understand the processes involved </li></ul><ul><li>Nobody understands how free software happens ? </li></ul><ul><li>1995 - True </li></ul><ul><li>2008 - False </li></ul>
  60. 60. Systems Theory <ul><li>Systems Theory </li></ul><ul><li>Models to explain how self organising systems behave. </li></ul><ul><li>Hard mathematics to analyse those models </li></ul><ul><li>Understanding of emergent behaviour </li></ul>We thus finally have the tools to make important breakthroughs in understanding how free software communities form, why they are robust against people dropping out and how they scale. For both good and bad uses that may prove to be the most important development yet.
  61. 61. The future of Linux © Sioux Embedded Systems 2008 | Confidential |
  62. 62. More Hot-or-Not <ul><li>Erlang - is functional programming the newest trend after OO? </li></ul><ul><li>Joe Armstrong May 8 th </li></ul><ul><li>Agile Manifesto - the essentials unveiled </li></ul><ul><li>Alistair Cockburn June 26 th </li></ul><ul><li>The evolution of testing - xUnit Test Patterns </li></ul><ul><li>Gerard Meszaros September 10 th </li></ul><ul><li>Taking Software Architecting into the next decade </li></ul><ul><li>Bran Selic October 8 th </li></ul><ul><li>www.jouwontwikkelingtelt.nl </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  63. 63. Alan Cox and Linux... <ul><li>Sioux will donate € 3.000,- to </li></ul><ul><li>Foundation for a Free Information Infrastructure </li></ul><ul><li>Free Software Foundation Europe </li></ul><ul><li>Electronic Frontier Foundation Europe </li></ul><ul><li>You will choose the destination(s)! </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  64. 64. Alan Cox and Linux... <ul><li>Sioux will donate € 3.000,- to </li></ul><ul><li>Foundation for a Free Information Infrastructure </li></ul><ul><li>Free Software Foundation Europe </li></ul><ul><li>Electronic Frontier Foundation Europe </li></ul><ul><li>You will choose the destination(s)! </li></ul>© Sioux Embedded Systems 2008 | Confidential |
  65. 65. Alan Cox and trains... © Sioux Embedded Systems 2008 | Confidential | Alan has a passion for software, and also a passion for model trains. This train (scale 1:160), which carries the city of Eindhoven logo, is a present for Alan to remember his visit to the Netherlands.
  66. 66. www.sioux.eu [email_address] +31(0)40 2677100

×