Status of Embedded Linux (2013)
Total Page:16
File Type:pdf, Size:1020Kb
Status of Embedded Linux Status of Embedded Linux October 2013 Tim Bird Architecture Group Chair LF CE Workgroup 1 1 6/5/2013 PA1 Confidential Drinking from a firehose 2 6/5/2013 PA1 Confidential Outline Kernel Versions Technology Areas CE Workgroup Projects Other Stuff Best of … Resources 3 3 6/5/2013 PA1 Confidential Outline Kernel Versions Technology Areas CE Workgroup Projects Other Stuff Best of … Resources 4 4 6/5/2013 PA1 Confidential Kernel Versions • Pace of versions is consistent and good • Kernel processes are working well 5 6/5/2013 PA1 Confidential Kernel Versions • Linux v3.6 – 30 Sep 2012 – 71 days • Linux v3.7 – 10 Dec 2012 – 71 days • Linux v3.8 – 18 Feb 2013 – 70 days • Linux v3.9 – 28 Apr 2013 – 69 days • Linux v3.10 – 30 June 2013 – 63 days • I predicted July 7, 2013 – (7 days off) • Linux v3.11 – 2 Sep 2013 – 64 days • Linux v3.12-rc6 • I predict 3.12 on … 6 6 6/5/2013 PA1 Confidential Kernel Versions • Linux v3.6 – 30 Sep 2012 – 71 days • Linux v3.7 – 10 Dec 2012 – 71 days • Linux v3.8 – 18 Feb 2013 – 70 days • Linux v3.9 – 28 Apr 2013 – 69 days • Linux v3.10 – 30 June 2013 – 63 days • I predicted July 7, 2013 – (7 days off) • Linux v3.11 – 2 Sep 2013 – 64 days • Linux v3.12-rc6 • I predict 3.12 on … 8 Nov 2013 – 68 days 7 7 6/5/2013 PA1 Confidential Outline Kernel Versions Technology Areas CE Workgroup Projects Other Stuff Best of … Resources 8 8 6/5/2013 PA1 Confidential Bootup Time • Kernel can be quick (under 1 second) • But it takes a lot of work, per product • Lots of resources available for tuning • See http://elinux.org/Boot_Time • Good recent presentation: http://www.slideshare.net/righiandr/linux-bootime- 23817352 • More focus recently on user-space • Angstrom uses systemd (yuck) 9 6/5/2013 PA1 Confidential Bootup Time • Checkpoint/Restart for Android • Jim Huang, 0xlab • Android usually takes about 30 seconds • Jim achieved about 15 seconds • See http://www.slideshare.net/jserv/implement- checkpointing-for-android-elce2012 • Also http://www.slideshare.net/jserv/tweak-boot • Other commercial systems are available for snapshot booting 10 10 6/5/2013 PA1 Confidential Graphics • Movement to higher resolutions for some embedded (e.g. Android) • These cases demand good graphics performance • Movement away from frame buffer • Crazy rendering stuff from Google • LLVM renderscript • Buffer management a big issue • Need to eliminate data copies 11 6/5/2013 PA1 Confidential Graphics • Still hoping for open source drivers for embedded GPUs • Lots of SoC GPU OSS driver projects • Lima, Etnaviv, Grate, Freedreno • See http://lwn.net/Articles/567611 • Nvidia even helping with Nouveau • http://lwn.net/Articles/568038 12 6/5/2013 PA1 Confidential Graphics • Shakeup in GPU market • ARM Mali and Vivante gaining market share GPU 1H-2012 1H-2013 Imagination 52% 37.6% Qualcomm 29.3% 32.3% ARM Mali 13.5% 18.4% Nvidia 4.9% 1.4% Vivante 0.3% 9.8% 13 6/5/2013 PA1 Confidential File Systems • UBIFS is taking over as de-facto standard for raw flash • YAFFS2 doesn’t scale to large NAND • Rise of eMMC (block-based flash) • New techniques needed to address this type of hardware • Flash Filesystem Tuning guide • F2FS 14 14 6/5/2013 PA1 Confidential Flash Filesystem tuning • CE Workgroup project to analyze filesystem performance on eMMC • Tested different block-based filesystems on flash media (ext4, btrfs, f2fs) • Measured the effect of different kernel tuning options • IO scheduler, flash geometry vs. flash part attributes and workload characteristics • Result document is NOW available at: • http://elinux.org/File_Systems#Comparison_of_flash_filesy stems • Executive summary: Correct filesystem and tuning options results depend on workload (no single winner) 15 6/5/2013 PA1 Confidential F2FS • Flash-friendly filesystem by Samsung • Mainlined in Linux version 3.8 • Support for security attributes in 3.12 • Log-structured, with lots of tweaks • E.g. hot vs. cold data separation • I heard that Moto X uses it (successfully) • See https://lwn.net/Articles/518988/ • See ELCE/ELC talks about it 16 6/5/2013 PA1 Confidential The exFAT incident • Weird sequence of events • Background: exFAT filesystem is covered by Microsoft patents • Used for sd cards – almost a requirement to support it • exFAT code released by independent Russian developer • “Liberated” from Samsung • Not sure about license • But some code may have been derived from kernel • Samsung released code a few weeks later • I wouldn’t use this code 17 6/5/2013 PA1 Confidential Memory Management • ION memory allocator 18 6/5/2013 PA1 Confidential Ion memory allocator • Allows sharing of memory areas between kernel subsystems (and devices) • Which reduces copies • Different devices have different memory constraints (cached, contiguous, etc.) • ION can select memory areas matching the least-common-denominator of the constraints • ION can manage cache relationship to memory • But, it uses arm-specific page accessors, and allows hardware-specific optimizations • It will have difficulty getting mainlined 19 6/5/2013 PA1 Confidential Power Management • Evolution of power management in Linux • Suspend/resume, voltage and frequency scaling, longer sleep (tick reduction), runtime device power management, race-to-sleep (wakelocks/autosleep) • New stuff starting to get crazy 20 6/5/2013 PA1 Confidential Power Management • Autosleep • Power-aware scheduling • Big.LITTLE scheduling • Memory power management • Full tickless 21 21 6/5/2013 PA1 Confidential Autosleep • Default state of platform is sleeping, rather than awake • Wakelock-compatible solution by Rafael Wysocki • Rafael: “This series tests the theory that the easiest way to sell a once rejected feature is to advertise it under a different name” • http://lwn.net/Articles/479841/ • Mainlined in v3.5 22 6/5/2013 PA1 Confidential Power-aware scheduling: • Small-task packing • Try to migrate tasks to allow more CPUs to go idle • Task placement on mixed cpu_power systems • Move large tasks to faster CPUs • Resources: • http://lwn.net/Articles/546664 - overview • http://lwn.net/Articles/552885 - some resistance • Ingo Molnar wants to consolidate this power stuff in the scheduler – rather than spread out into power/cpufreq/cpuidle/scheduler systems 23 6/5/2013 PA1 Confidential big.LITTLE • Crazy system with small, slow, power- efficient processors, alongside big fast, power-hungry processors • Requires some tremendous feats of scheduling to save power • Power-aware scheduling on steroids 24 6/5/2013 PA1 Confidential Big.LITTLE 25 6/5/2013 PA1 Confidential big.LITTLE scheduling • Overview: https://lwn.net/Articles/501501 • Multi-cluster power scheduling • https://lwn.net/Articles/539082/ • In-kernel-switcher work • https://lwn.net/Articles/549473/ • See talk at LCJ by Nakagawa-san of Renesas • One User Space Approach to big.LITTLE MP System on Real Silicon • Still waiting for real-product results 26 6/5/2013 PA1 Confidential Memory Power Management • Is a form of device PM • With memory regions as the devices • Restrict or migrate allocated memory into regions so that some banks/chips can be powered off • Don’t have good measurements of power savings yet • See http://lwn.net/Articles/568891 27 6/5/2013 PA1 Confidential Full tickless • Also known as “full dynamic tick” • Under some circumstance, some processors may run with no periodic ticks at all • Some restrictions: • Boot CPU cannot be ‘full’ tickless • A CPU cannot be full tickless with more than one process • See https://lwn.net/Articles/549580/ 28 6/5/2013 PA1 Confidential System Size • Kernel size • Library size • Automated reduction research 29 29 6/5/2013 PA1 Confidential Kernel size • Cooperative memory relinquishment • Volatile Ranges • Lexmark work (membroker and ANR malloc) • See talk at ELC 2013 – "SystemWide Memory Management without Swap“ 30 6/5/2013 PA1 Confidential Library reduction • olibc – bionic libc • Has good features from Android, and is smaller and more configurable than glibc glibc 2.11 : /lib/libc.so → 1,208,224 bytes uClibc 0.9.30 : /lib/libuClibc.so → 424,235 bytes bionic 2.1 : /system/lib/libc.so → 243,948 bytes • See ELC 2013 talk by Jim Huang • Kconfig for eglibc • Ability to configure parts of libc to use libc-2.17.so reduced from 1200K -> 830K ld-2.17.so reduced from 128K -> 120K libm-2.17.so reduced from 610K -> 580K • See ELC 2013 talk by Khem Raj 31 31 6/5/2013 PA1 Confidential Advanced Size Optimization of the Linux Kernel • “Auto-reduce” project • Find automated ways to reduce the kernel • Link-time optimization – 380K “free” reduction from compiler flag • System call elimination • Kernel command-line argument elimination • Kernel constraint system • Additional research - 50% of kernel code is unexecuted • Link-time re-writing • Cold-code compression • See Tim Bird’s presentation on advanced size optimization of the kernel • Notes and slides available at: http://elinux.org/System_Size_Auto-Reduction 32 6/5/2013 PA1 Confidential Security • SMACK • SE-Linux • Embedded integrity 33 6/5/2013 PA1 Confidential SMACK • SMACK for Tizen • Simplified rule set (3 tiers, 40,000 rules) • See http://lwn.net/Articles/55278 34 6/5/2013 PA1 Confidential SE-Linux • SE-Android • Implementation of SE-Linux for Android systems • SE-Linux was previously too big for embedded • Early embedded SE-Linux required 2M • Desktop SE ruleset is 900,000 rules • However, SE-Android only has 1658 rules and 263 types (71K policy size) • http://selinuxproject.org/page/SEAndroid • Especially: http://www.internetsociety.org/sites/default/files/ Presentation02_4.pdf 35 6/5/2013 PA1 Confidential Embedded Integrity • David Safford’s talk at Linux Security Summit • Some nice simple things to do to lock down a device • Cheap or free mechanisms (without having to resort to TPM chip), to achieve: • Detect firmware modification • Prevent firmware modification (lock it) • Signed updates • Trusted boot • http://lwn.net/Articles/568943 36 6/5/2013 PA1 Confidential Tracing • Ktap • Dynamic tracing, without the overhead of compiling into a module • Adds an interpreter to the kernel • Single module, that leverages ftrace, kprobes, etc.