# # tuned configuration for PostgreSQL servers # [main] summary=Optimize for PostgreSQL server include=throughput-performance [cpu] # The alternation of CPU bound load and disk IO operations of postgresql # db server suggest CPU to go into powersave mode. # # Explicitly disable deep c-states to reduce latency on OLTP workloads. force_latency=1 [vm] transparent_hugepages=never # The dirty_background_ratio and dirty_ratio controls percentage of memory # that file system cache have to fill with dirty data before kernel will # will start to flush data to disks. The default values are 10% and 20% # accordingly. On a systems with a big amount of memory this values can # be tens of gigabytes and produce IO spikes when PostgreSQL server writes # checkpoints. The values can alternatively be set in absolute number of bytes # via dirty_background_bytes and dirty_bytes. # # Keep this values reasonable small - about size of RAID controller write-back # cache size (typcal 512MB - 2GB). dirty_background_bytes = 67108864 dirty_bytes = 536870912 [sysctl] # The swappiness parameter controls the tendency of the kernel to move # processes out of physical memory and onto the swap disk. # 0 tells the kernel to avoid swapping processes out of physical memory # for as long as possible # 100 tells the kernel to aggressively swap processes out of physical memory # and move them to swap cache vm.swappiness=3 # The autogroup feature of the CFS # (system default is 1, e.q enabled) kernel.sched_autogroup_enabled = 0 [scheduler] # ktune sysctl settings for rhel6 servers, maximizing i/o throughput # # Minimal preemption granularity for CPU-bound tasks: # (default: 1 msec# (1 + ilog(ncpus)), units: nanoseconds) sched_min_granularity_ns = 10000000 # The total time the scheduler will consider a migrated process # "cache hot" and thus less likely to be re-migrated # (system default is 500000, i.e. 0.5 ms) sched_migration_cost_ns = 50000000