Fair warning, I just took this exam Friday and scored only 60% on it, but this was my initial study guide I put together. I know why I failed and it's mainly due to not remembering which parameters are in which format: bytes, kebibytes, mebibytes, pages, blocks, etc.. I'm going to study up and practice more. I did only get to study for four days and made a 60%, so hopefully more study will get me a pass. Below is my own study guide made before taking the exam via looking at exam objectives.
#NOTES FOR EX442
______________________
#RANDOM
#DISK SCHEDULER
- cat /sys/block/sda/queue/scheduler
#SAR and RRD FILES TO PNG FILES
-Know how to do sar -A, pick a section, find it in man page how to output just that specific section for cpu, device io, everything
-example sar -q
-14:50:01 runq-sz plist-sz ldavg-1 ldavg-5 ldavg-15
-15:00:01 3 278 0.00 0.00 0.01
-want time, load avg 1, 5, and 15
-sar -q | awk '/^
:digit:][:space:][:punct:/ {print $1,$4,$5,$6}' > /root/loadavg.data
-14:50:01 ldavg-1 ldavg-5 ldavg-15
-15:00:01 0.00 0.00 0.01
#RRD files
-know how to handle RRD files and get whatever data out of it that I want
-rrdtool graph /var/www/html/file.png -X 0 --start=$(date --date=-1hour +%s) --end=$(date +%s) DEF:virtual_name_I_define:/tmp/file.rrd:datasource_name_from_file:consolidation_factor LINE1:virtual_name_I_define#000000:"Visual Name for Graph"
-man rrdgraph_examples
*****
-Above two sections for - Exam Objective - configure systems to provide performance metrics using utilities such as RRDtool
______________________
#Kernel Modules Tuning
#Services
-service tuned start
-service ktune start
#Module conf directory
/etc/modprobe.d/*
#Install module
- modprobe -v module_name
#persistently
/etc/sysconfig/modules/*
#Remove module
- modprobe -rv module_name
#Install module with params
- modprobe -v module_name param=x
#Persistently
- /etc/modprobe.d/module.conf
-options module_name param=x
*****
-Above for - Exam Objective - configure kernel behavior by altering module parameters
______________________
#Tuned Profiles
#List of tuned profiles
-tuned-adm list
#Apply a tuned profile
-tuned-adm profile $profileName
#tuned conf file (comes from /etc/tune-profiles/my442demo/tuned.conf)
-/etc/tuned.conf
#ktune conf file (comes from etc/tune-profiles/my442demo/ktune.sysconfig)
-/etc/sysconfig/ktune
*****
-Above for - Exam Objective - select and configure tuned profiles.
______________________
#PAM Resource Limits
-man limits.conf
-edit /etc/security/limits.conf for changes
*****
-Use above for - Exam Objective -use the Pluggable Authentication Modules (PAM) mechanism to implement restrictions on critical system resources
______________________
#CGroups
#Services
-service cgconfig start
-service cgred start
#Create control groups
-vi /etc/cgconfig.conf
group bigload {
blkio {
blkio.throttle.read_bps_device = "8:0 1048576";
}
}
#Create rules based on control group
-vi /etc/cgrules.conf
*:dd blkio bigload/
#Find parameters to tune in the already-existing cgroup directories in /cgroup
*****
- Use above cgroup controls for - Exam Objective - manage system resource usage using control groups
_______________________
#HARDWARE PROFILING
-less /var/log/dmesg for hardware info at boot time
-lscpu for cpu info like cores, sockets, cache size
-getconf -a for more info, like page size
-dmidecode for hardware information
-/sys/class/dmi/... for hardware information as well
-lspci - pci bus
-lsusb - usb devices
-lshal - devices registered via HAL
-sosreport - makes tar file with lots of the above done for you in /tmp/
#I/O scheduling
-dir /sys/block/sda/queue/ has lots of tunables, such as:
nomerges - default 0 - Setting to nonzero will disable all but the most trivial merge logic
n_requests - default 128 - max # of requests which can be pending in block layer
read_ahead_kb - default 128 - max read-ahead for file systems on this devie, in KB
rq_affinity - default 1 - 1=enabled, so request completions will be scheduled on same CPU that generated request (cach optim)
scheduler - default cfq - list of potential scheduler algorithms
^ CANNOT be set persistently, so requires using a tuned profile OR /etc/init.d/rc.local
*****
- Use above for - Exam Objective - use utilities such as dmesg, dmidecode, x86info, sosreport etc. to profile system hardware configurations
_________________________
SOFTWARE PROFILING
#RHEL6 runs CFS io scheduler
-/proc/sys/kernel/ sysctl values
sched_latency_ns -default 5,000,000 - epoch duration
sched_min_granularity_ns -default 1,000,000 - 5 processes
sched_compat_yield -default 0 - blocks cpu yielding
sched_migration_cost -default 500,000 - cost to migrate to another cpu, if runtime is less than this, will try not to move
sched_rt_runtime_us -default 950,000 - max cpu time can be used on real-time tasks before pausing for below time
sched_rt_period_us -default 1,000,000 - time to wait after running real time tasks
#Processes
-chrt - manipulate real-time attribute of a process, like scheduling policy & priority
-strace -c
-ltrace -c
-nice -n $$ /dir/program
-starts a program with specific priority, if forget do man nice to see priority range
-renice allows changing priority of pid, process group, user, etc.
-look at man page for usage
*****
-Use above chrt/nice/renice for - Exam Objective - alter process priorities of both new and existing processes (nice, renice, etc) AND "I/O scheduling algorithm selection"
#valgrind
valgrind --tool=cachegrind $process
valgrind --tool=memcheck --leak-test=full -v $process
perf list
perf stat -e cache-misses $process
*******
-Use above strace, ltrace, valgrind, and perf for - Exam Objective - given multiple versions of applications that perform the same or similar tasks, choose which version of the application to run on a system based on its observed performance characteristics
-Use above for - Exam Objective - analyze system and application behavior using tools such as ps, strace, top and Valgrind
-Use above valgrind for - Exam Objective - test for memory leaks
__________________________
#Network Tuning
-ethtool options
-qperf to test speeds
-network tunables allowed in sysctl.conf are in /proc/sys/net/ipv4 and other
-remember tcp values cannot be increased above core values, so check cores before changing
-ones to remember:
-tcp_low_latency (0 off or 1 on)
-core rmem default (1/2 of max) and max
-tcp rmem (min pressure max)
-tcp mem (min pressure max)
-remember BDP (bandwidth delay product) is equal to RRT(seconds)*network speed (1Gb/1sec) = bytes for changing network tunables
*******
-Use above BDP formula and tunables for - Exam objective - calculate network buffer sizes based on known quantities such as bandwidth and round-trip time and set system buffer sizes based on those calculations
-NOTE - be sure to do a CP of ALL tunables files to /root/ BEFORE changing anything, including the tunable itself and sysctl.conf
__________________________
#Huge Pages
-mkdir /hugepages
-mount -t hugetlbfs none /hugepages
-sysctl line vm.nr_hugepages=512
-cat /proc/meminfo | less
-sysctl -p
-cat /proc/meminfo | less
*****
- Use above for - Exam Objective - configure systems to support alternate page sizes for applications that use large amounts of memory
__________________________
#SystemTap
#Packages to install
-gcc
-kernel-headers
-make
-kernel-devel
-systemtap*
-debuginfo-install kernel
#make a topsys script regular users can run
-stap -v -p 4 -m $name /usr/share/doc/systemtap-client/examples/profiling/script.stp
#copy the file to /tmp/, give user permissions to run it, then su to user, try to run with staprun to get dir to move it to
-cp /dir/$name /tmp/$name
-usermod -aG stapusr $user
-su - $user
-cd /tmp/
-staprun $name
#Now exit to root, create dir, move script there, then test with user
-exit to root
-mkdir directory from above step
-cp /dir/$name to ^
-su - $user
-staprun /dir/$name
*****
-Use above for - Exam Objective -configure systems to run SystemTap scripts
___________
#Incomplete sections for the following Exam Objectives:
-configure disk subsystems for optimal performance using mechanisms such as swap partition placement, file system layout, and others
-Swap partitions
-mkswap to make a new partition swap
-add it to /etc/fstab, giving it: /dev/blaX swap swap sw,pri=X 0 0 (pri= lower numbers fill first)
-reboot for effect
-File system layout may reference journal placement, in which case might have a separate partition for journals
NEW:
-journal and FS must have same block size
-create the journal: mkfs.ext4 -O journal_dev -b 4096 /dev/sdd1
-create the FS specifying the journal device: mkfs.ext4 -J device=/dev/sdd1 -b 4096 /dev/sdc1
OLD CONVERSION:
-find the existing block size: tune2fs -l /dev/sdc1
-create the journal device: mkfs.ext4 -O journal_dev -b 4096 /dev/sdd1
-unmount the fs: umount /dev/sdc1
-remove the existing journal: tune2fs -O '^has_journal' /dev/sdc1
-add the external journal: tune2fs -j -J device=/dev/sdd1 /dev/sdc1
-tune2fs man pages show the above commands
#Other exam objectives
-use /proc/sys, sysctl and /sys to examine and modify and set kernel run-time parameters
-use utilities such as vmstat,iostat,mpstat,sar, gnome-system-monitor, top, powertop and others to analyze and report system and application behavior