Advanced Embedded Linux Optimization
Dates: Mondays, January 8, 15, 22, & 29, 2018
Time: 6:00PM – 9:00PM
Decision date: Thursday, December 28, 2017
Early Registration Date deadline: Tuesday, December 26, 2017
Advanced Embedded Linux Optimizaton Register Now
Before Early Registration Date
IEEE Members: $395
Non-members: $415
After Early Registration Date
IEEE Members: $415
Non-members: $435
WHERE: TBD
Phone 781-245-5405
email sec.boston@ieee.org
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
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