Advanced Embedded Linux Optimization

This course has been cancelled

Winter 2017 Course

Dates: Mondays, Jan. 9, 16, 23, 30, 2017

Time: 6 – 9 pm

Decision date: Friday, December 30, 2016

Early Registration Date deadline: December 27

Before Early Registration Date:
IEEE Members $395
Non-members $415

After Early Registration Date:
IEEE Members $415
Non-members $435

WHERE: Crowne Plaza Hotel
15 Middlesex Canal Park Drive
Woburn, MA 01801

Phone 781-245-5405
Fax 781-245-5406

If paying by check, the check must be received before the appropriate dates for Early Registration and Decision Dates.

Make Checks payable and send to:
IEEE Boston Section
One Centre Street, Suite 203
Wakefield, MA 01880

Speaker: Mike McCullough, RTETC, LLC

Course Overview:

This 4-day technical training course provides advanced training in the debugging, testing, profiling and performance optimization of Embedded Linux software. The first part of the course focuses on advanced debugging, testing and profiling in an Embedded Linux context with a focus on using Eclipse, Backend Debuggers, JTAG and In-Circuit Emulators as well as Kernel Logging capabilities and Kernel Hacking. The latter part of the course covers performance measurement and optimization affecting boot, memory, I/O and CPU performance and key performance optimization tools for Embedded Linux software including the perf tool, advanced cache usage and compiler-based optimization.

Who Should Attend

The course is designed for real-time engineers who are developing high-performance Linux applications and device drivers using Embedded Linux distributions. It is also targeted at experienced developers requiring a refresher course on Advanced Embedded Linux optimization.

Course Objectives

• To understand methods for debugging, profiling and testing Embedded Linux software.
• To provide an overview of Linux application performance measurement and optimization.
• To understand the tools used for performance optimization of Embedded Linux software.
• To give students the confidence to apply these concepts to their next Embedded Linux project.

Course Schedule

Course Schedule Day 1
Getting Started with Embedded Linux
Linux and the GPL
Building the Kernel Source Code
Embedded Linux Kernels
BSPs and SDKs
Linux References (Books and Online)
Basic Debugging Review
Embedded Applications Debugging
GDB, GDB Server and the GDB Server Debugger
An Eclipse Remote Debug Example
Debugging with printk and LTTng
System Logs
Other Debuggers
System-Level Debug
System-Level Debug Tools
The /proc and /sys Filesystems
Basic Logging
Crash Dumps and Post-Mortem Debugging
Debugging Embedded Linux Systems
Backend Debuggers
JTAG and In-Circuit Emulators
Hardware Simulators
Debugging Device Drivers
Kernel Probes
Kexec and Kdump
Kernel Profiling

Course Schedule Day 2
Design for Test
Agile Software Design
Unit-Level Testing
System-Level Testing
Code Coverage Tools
Automated Testing
Configuring DebugFS
DebugFS Capabilities
Advanced Logging
Using Logwatch and Swatch
Using syslogd and syslog-ng
Kernel Hacking
Configuring Kernel Hacking
Kernel Hacking Capabilities
ptrace and strace
New Tracing Methods
Ftrace, Tracepoints and Event Tracing
Tracehooks and utrace

Course Schedule Day 3
Basic Profiling
gprof and Oprofile
Performance Counters
Another DDD Example
Manual Profiling
Instrumenting Code
Output Profiling
Measuring Embedded Linux Performance
Some Ideas on Performance Measurement
Common Considerations
Uncommon Considerations
Using JTAG Methods
BootLoader Optimizations
Boot Time Measurements
Effective Memory and Flash Usage
Filesystem Choices
Addressing Performance Problems
Types of Performance Problems
Using Performance Tools to Find Areas for Improvement
Application and System Optimization
Device Driver Optimization
CPU Usage Optimization
Memory Usage Optimization
Disk I/O and Filesystem Usage Optimization
The Perf Tool
Improving Boot Performance
Boot Time Optimization
The Linux Fastboot Capability
Building a Smaller Linux
Building a Smaller Application
Filesystem Tips and Tricks
Some Notes on Library Usage
Performance Tool Assistance
Recording Commands and Performance
System Error Messages and Event Logging
Dynamic Probes
User Mode Linux and Virtualization

Course Schedule Day 4
Improving CPU Performance
Run Queue Statistics
Context Switches and Interrupts
CPU Utilization
Linux Performance Tools for CPU
Process-Specific CPU Performance Tools
Stupid Cache Tricks
Improving System Memory Performance
Memory Performance Statistics
Linux Performance Tools for Memory
Process-Specific Memory Performance Tools
More Stupid Cache Tricks
Improving I/O and Device Driver Performance
Disk, Flash and General File I/O
Improving Overall Performance Using the Compiler
Basic Compiler Optimizations
Architecture-Dependent and Independent Optimization
Code Modification Optimizations
Feedback Based Optimization
Application Resource Optimization
The Hazard of Trust
An Iterative Process for Optimization
Improving Development Efficiency
The Future of Linux Performance Tools
Some Final Recommendations