|
This course is 3 days (24 hours). Customizing the topic list will affect the time requirement.
Performance management specialists and system administrators who are or will be responsible for the tuning and capacity monitoring of one or more machines running Linux.
Performance management requires an understanding of overall system architecture. This course takes the approach of tackling each major system of Linux individually, covering the necessary architectural background and then pointing out how resources are allocated, consumed, released, and reused.
Upon completion of this course, the student will be able to:
Understand the operating system subsystems and their interactions
Understand the basic performance trade-offs of resource allocation
Describe how requests for CPU time, disk space, and memory are handled
Understand the performance implications of kernel tunable parameters
Use performance diagnostic tools to monitor and plan for future upgrades
Students are invited to bring their current ideas and questions to the classroom for discussion. Case studies, lecture, and group problem solving will be used (online labs are difficult in this environment, although demonstrations can be performed if appropriate equipment access is available).
Familiarity with Unix concepts such as the command line shell, pipes, I/O redirection, process ids, and paging space. All information required for a proper understanding of the course material will be provided; however, hands-on experience with the techniques listed above is required to fully master these topics.
Performance Basics
Response Time vs. Throughput (or "You can't have it both ways")
Processes and Threads
Overall Performance Factors
Metrics
Caching vs. Buffering
Architecture as a Factor
RedHat Monitoring Tools
Other Optional Tools
How is the /proc Filesystem Used?
User-written Tools
Kernel Tunable Parameters
Interactive Commands
top
gnome-system-monitor
htop
sar and isag
Scripting Commands
sadc
vmstat
iostat
ifstat
netstat
Programmer's Tools
lsof
size
ltrace
strace
Process Management Overview
The Native POSIX Threads Library
Resource Limits
Process Lifecycle
The fork() Function Call
The exec() Function Call
The exit() Function Call
The wait() Function Call
Time Slices
Real-Time Threads
CPU Affinity
Task Scheduling
The Nice Factor
The O(1) Scheduler
Virtual Memory Concepts
Swapping vs. Paging
Pageable Memory vs. Pinned Memory
Process Address Space Management
Address Translations
Page Table Entries
How Page Faults Are Resolved
Memory Zones
Subsystem Cache Allocations (SLAB and SLUB allocators)
Shared Libraries
Overview of Linux I/O
Filesystem vs. Block Device
The ext3 and ext4 Filesystem Layout
Measuring I/O Speeds
I/O Schedulers
The Completely Fair Queueing Scheduler - cfq
The Deadline Scheduler - deadline
The Anticipatory Scheduler - anticipatory
Tuning the ext3 and ext4 Filesystems
Logical Volume Manager Tuning
TCP/IP Layers
Network Layers
LAN Topology
Socket Controls
Network Services
Network File System
UDP Optimizations
TCP Optimizations
Techniques for Automatic Monitoring
Post-processing Monitoring Data
Planning Ahead