Advanced Embedded Linux Optimization – Fall 2014

When:
January 5, 2015 @ 6:00 pm – 9:00 pm America/New York Timezone
2015-01-05T18:00:00-05:00
2015-01-05T21:00:00-05:00
Where:
Crowne Plaza Hotel
15 Middlesex Canal Park Drive
Woburn, MA 01801
USA
Cost:
Variable
Advanced Embedded Linux Optimization - Fall 2014 @ Crowne Plaza Hotel | Woburn | Massachusetts | United States
Due to the snowstorms – Classes have been rescheduled to Monday, February 16th and Tuesday, February 17th.
 
Date & Time: Mondays, Jan. 5, 12, 19, 26, 2015
Location: Crowne Plaza Hotel, 15 Middlesex Canal Park Road, Woburn, MA
Speaker: Mike McCullough, RTETC, LLC

By: Dec 18

Members: $395
Non-Members: $435

After: Dec 18:

Members: $435
Non-Members: $470
Decision: Tuesday, Dec 23

Course Summary

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.

OUTLINE

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
KGDB and KDB
Crash Dumps and Post-Mortem Debugging
Debugging Embedded Linux Systems
Backend Debuggers
JTAG and In-Circuit Emulators
Hardware Simulators
Analyzers
Debugging Device Drivers
Kernel Probes
Kexec and Kdump
Kernel Profiling
Course Schedule Day 2
Testing
Design for Test
Agile Software Design
Unit-Level Testing
System-Level Testing
Code Coverage Tools
gcov
Automated Testing
DebugFS
Configuring DebugFS
DebugFS Capabilities
Advanced Logging
LogFS
Using Logwatch and Swatch
Using syslogd and syslog-ng
Kernel Hacking
Configuring Kernel Hacking
Kernel Hacking Capabilities
Tracing
ptrace and strace
New Tracing Methods
SystemTap
Ftrace, Tracepoints and Event Tracing
Tracehooks and utrace

Course Schedule Day 3
Profiling
Basic Profiling
gprof and Oprofile
Performance Counters
LTTng
Another DDD Example
Manual Profiling
Instrumenting Code
Output Profiling
Timestamping
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