Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Next revision Both sides next revision | ||
linux_wiki:kernel_tuning [2015/04/28 20:15] billdozor [Swappiness] |
linux_wiki:kernel_tuning [2016/03/18 23:08] billdozor [Kernel Tuning] |
||
---|---|---|---|
Line 6: | Line 6: | ||
**Checklist** | **Checklist** | ||
- | * Any distro, but many examples are done via Red Hat based systems | + | * Distro(s): |
---- | ---- | ||
- | ===== Hugepages ===== | + | ====== Hugepages |
Problem: Unable to access a VM's console, and it shows out of memory errors on boot. | Problem: Unable to access a VM's console, and it shows out of memory errors on boot. | ||
Line 28: | Line 28: | ||
---- | ---- | ||
- | ===== Swappiness ===== | + | ==== HugePage Bug ==== |
+ | |||
+ | On some kernels, khugepaged can start running at 100% CPU utilization. This is typically seen on systems that have process/ | ||
+ | |||
+ | Other symptoms include: | ||
+ | * Normal commands hang (w, uptime, ps) | ||
+ | * Processes showing above 100% CPU (ie sometimes up to 1,300%) | ||
+ | |||
+ | Details | ||
+ | * Known Affected kernels | ||
+ | * CentOS 6: 2.6.32-431.el6.x86_64 | ||
+ | * Reference bug report: https:// | ||
+ | |||
+ | === Workaround Fix === | ||
+ | |||
+ | Disable hugepage defragmenting: | ||
+ | <code bash> | ||
+ | echo never > / | ||
+ | </ | ||
+ | |||
+ | Add new cron entry | ||
+ | <code bash> | ||
+ | vim / | ||
+ | |||
+ | # Disable kernel huge page defrag due to bugzilla bug: 879801 | ||
+ | @reboot root /bin/echo never > / | ||
+ | </ | ||
+ | |||
+ | === Permanent Fix === | ||
+ | |||
+ | Ultimately, the permanent fix is to update the kernel to a newer version. | ||
+ | |||
+ | TODO: Will add confirmed kernel versions that this bug is fixed in. | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== Swappiness | ||
Swappiness controls how likely the kernel is to move processes out of memory and onto swap disk space. | Swappiness controls how likely the kernel is to move processes out of memory and onto swap disk space. | ||
The setting is from 0 to 100. | The setting is from 0 to 100. | ||
- | * 0 = Avoid swapping for as long as possible | + | * 0 = Very aggressively avoid swapping for as long as possible |
+ | * High risk of OOM killing from memory and I/O pressure | ||
+ | * 10 = Red Hat recommended for Oracle databases | ||
* **60 = Linux default** | * **60 = Linux default** | ||
* 100 = Aggressively swap from memory to disk | * 100 = Aggressively swap from memory to disk | ||
Line 46: | Line 84: | ||
<code bash> | <code bash> | ||
vim / | vim / | ||
- | vm.swappiness=1 | + | vm.swappiness=10 |
:wq | :wq | ||
sysctl -p | sysctl -p | ||
Line 55: | Line 93: | ||
---- | ---- | ||
- | ===== File Descriptors ===== | + | ====== Page Cache ====== |
+ | |||
+ | Tuning how often cached pages in memory are flushed to disk. | ||
+ | |||
+ | Check current settings: | ||
+ | <code bash> | ||
+ | sysctl -a | grep dirty | ||
+ | </ | ||
+ | |||
+ | Background (async) pagecache flushing: | ||
+ | <code bash> | ||
+ | vm.dirty_background_ratio = 3 | ||
+ | </ | ||
+ | * Explanation: | ||
+ | * Default value = 10 | ||
+ | |||
+ | Foreground (sync) pagecache flushing: | ||
+ | <code bash> | ||
+ | vm.dirty_ratio = 15 | ||
+ | </ | ||
+ | * Explanation: | ||
+ | * Default value = 20 | ||
+ | |||
+ | ---- | ||
+ | |||
+ | ====== File Descriptors | ||
Viewing and setting the system wide file descriptors. | Viewing and setting the system wide file descriptors. | ||
Line 82: | Line 145: | ||
---- | ---- | ||
+ | |||
+ | ====== Kernel Panic ====== | ||
+ | |||
+ | Reboot a system after a 10 seconds of kernel panic | ||
+ | <code bash> | ||
+ | kernel.panic = 10 | ||
+ | </ | ||
+ | |||
+ | ---- | ||
+ |