CRIT

Tuned CRIT模板,针对金融场景、不允许数据丢失错漏的场景进行优化。

Tuned CRIT模板主要针对RPO进行优化,尽可能减少内存中脏数据的量。

此模板针对的机型是Dell R740 64核/400GB内存,使用PCI-E SSD的节点。您可以根据自己的实际机型进行调整。

  1. # tuned configuration
  2. #==============================================================#
  3. # File : tuned.conf
  4. # Mtime : 2020-06-29
  5. # Desc : Tune operatiing system to crit mode
  6. # Path : /etc/tuned/crit/tuned.conf
  7. # Author : Vonng(fengruohang@outlook.com)
  8. # Copyright (C) 2018-2021 Ruohang Feng
  9. #==============================================================#
  10. [main]
  11. summary=Optimize for PostgreSQL CRIT System
  12. include=network-latency
  13. [cpu]
  14. force_latency=1
  15. governor=performance
  16. energy_perf_bias=performance
  17. min_perf_pct=100
  18. [vm]
  19. # disable transparent hugepages
  20. transparent_hugepages=never
  21. [sysctl]
  22. #-------------------------------------------------------------#
  23. # KERNEL #
  24. #-------------------------------------------------------------#
  25. # disable numa balancing
  26. kernel.numa_balancing=0
  27. # total shmem size in bytes: $(expr $(getconf _PHYS_PAGES) / 2 \* $(getconf PAGE_SIZE))
  28. {% if param_shmall is defined and param_shmall != '' %}
  29. kernel.shmall = {{ param_shmall }}
  30. {% endif %}
  31. # total shmem size in pages: $(expr $(getconf _PHYS_PAGES) / 2)
  32. {% if param_shmmax is defined and param_shmmax != '' %}
  33. kernel.shmmax = {{ param_shmmax }}
  34. {% endif %}
  35. # total shmem segs 4096 -> 8192
  36. kernel.shmmni=8192
  37. # total msg queue number, set to mem size in MB
  38. kernel.msgmni=32768
  39. # max length of message queue
  40. kernel.msgmnb=65536
  41. # max size of message
  42. kernel.msgmax=65536
  43. kernel.pid_max=131072
  44. # max(Sem in Set)=2048, max(Sem)=max(Sem in Set) x max(SemSet) , max(Sem per Ops)=2048, max(SemSet)=65536
  45. kernel.sem=2048 134217728 2048 65536
  46. # do not sched postgres process in group
  47. kernel.sched_autogroup_enabled = 0
  48. # total time the scheduler will consider a migrated process cache hot and, thus, less likely to be remigrated
  49. # defaut = 0.5ms (500000ns), update to 5ms , depending on your typical query (e.g < 1ms)
  50. kernel.sched_migration_cost_ns=5000000
  51. #-------------------------------------------------------------#
  52. # VM #
  53. #-------------------------------------------------------------#
  54. # try not using swap
  55. vm.swappiness=0
  56. # disable when most mem are for file cache
  57. vm.zone_reclaim_mode=0
  58. # overcommit threshhold = 80%
  59. vm.overcommit_memory=2
  60. vm.overcommit_ratio=100
  61. # 64MB mem (2xRAID cache) wake the bgwriter
  62. vm.dirty_background_bytes=67108864
  63. # vm.dirty_background_ratio=3 # latency-performance default
  64. vm.dirty_ratio=6 # latency-performance default
  65. # deny access on 0x00000 - 0x10000
  66. vm.mmap_min_addr=65536
  67. #-------------------------------------------------------------#
  68. # Filesystem #
  69. #-------------------------------------------------------------#
  70. # max open files: 382589 -> 167772160
  71. fs.file-max=167772160
  72. # max concurrent unfinished async io, should be larger than 1M. 65536->1M
  73. fs.aio-max-nr=1048576
  74. #-------------------------------------------------------------#
  75. # Network #
  76. #-------------------------------------------------------------#
  77. # max connection in listen queue (triggers retrans if full)
  78. net.core.somaxconn=65535
  79. net.core.netdev_max_backlog=8192
  80. # tcp receive/transmit buffer default = 256KiB
  81. net.core.rmem_default=262144
  82. net.core.wmem_default=262144
  83. # receive/transmit buffer limit = 4MiB
  84. net.core.rmem_max=4194304
  85. net.core.wmem_max=4194304
  86. # ip options
  87. net.ipv4.ip_forward=1
  88. net.ipv4.ip_nonlocal_bind=1
  89. net.ipv4.ip_local_port_range=32768 65000
  90. # tcp options
  91. net.ipv4.tcp_timestamps=1
  92. net.ipv4.tcp_tw_reuse=1
  93. net.ipv4.tcp_tw_recycle=0
  94. net.ipv4.tcp_syncookies=0
  95. net.ipv4.tcp_synack_retries=1
  96. net.ipv4.tcp_syn_retries=1
  97. # tcp read/write buffer
  98. net.ipv4.tcp_rmem="4096 87380 16777216"
  99. net.ipv4.tcp_wmem="4096 16384 16777216"
  100. net.ipv4.udp_mem="3145728 4194304 16777216"
  101. # tcp probe fail interval: 75s -> 20s
  102. net.ipv4.tcp_keepalive_intvl=20
  103. # tcp break after 3 * 20s = 1m
  104. net.ipv4.tcp_keepalive_probes=3
  105. # probe peroid = 1 min
  106. net.ipv4.tcp_keepalive_time=60
  107. net.ipv4.tcp_fin_timeout=5
  108. net.ipv4.tcp_max_tw_buckets=262144
  109. net.ipv4.tcp_max_syn_backlog=8192
  110. net.ipv4.neigh.default.gc_thresh1=80000
  111. net.ipv4.neigh.default.gc_thresh2=90000
  112. net.ipv4.neigh.default.gc_thresh3=100000
  113. net.bridge.bridge-nf-call-iptables=1
  114. net.bridge.bridge-nf-call-ip6tables=1
  115. net.bridge.bridge-nf-call-arptables=1
  116. # max connection tracking number
  117. net.netfilter.nf_conntrack_max=1048576

最后修改 2022-05-27: init commit (1e3e284)