为你的Oracle和PG创建tuned profile

前两天介绍操作系统优化的时候,提出了一个工具,tuned。实际上tuned可以作为一个标准化的工具,用于通过模板化的操作系统优化参数集进行管理。其使用场景也是多样化的,最常用的是实现数据库安装部署时的操作系统优化的标准化,通过部署tuned profile并在操作系统启动时启动,可以十分便捷的管理数据库运行环境的操作系统参数。如果一个数据库在白天和晚上需要使用不同的Profile来优化操作系统参数,也可以配置多个模板,根据需要定期启用某个模板。

在REHL 7中,默认的模板都是通用型的,针对tuned 2.11,Centos提供了一系列的tuned profile模板:

为你的Oracle和PG创建tuned profile
为你的Oracle和PG创建tuned profile

其中包含了Ms SqlServer和Oracle的模板。我的测试环境中的tuned是2.0.8的,无法安装这些模板。于是我根据以前积累的一些Oracle和PG的OS优化经验,自己来创建两个模板。要创建tuned 模板,实际上我们可以利用现有的模板来进行改造。最好的标准模板是throughput-performance,这个模板的目的是让服务器拥有最大的吞吐能力。

首先我们利用这个模板来创建一个Oracle数据库的profile。在Oracle数据库中,我们需要增加一下的一些参数配置:

vm.swappiness = 1

vm.dirty_background_ratio = 3

vm.dirty_ratio = 80

vm.dirty_expire_centisecs = 500

vm.dirty_writeback_centisecs = 100

kernel.shmmax = 4398046511104

kernel.shmall = 1073741824

kernel.shmmni = 4096

kernel.sem = 250 32000 100 128

fs.file-max = 6815744

fs.aio-max-nr = 1048576

net.ipv4.ip_local_port_range = 9000 65500

net.core.rmem_default = 262144

net.core.rmem_max = 4194304

net.core.wmem_default = 262144

net.core.wmem_max = 1048576

kernel.panic_on_oops = 1

通过对throughput-performance的扩展,形成的oracle-performance profile的内容如下:

为你的Oracle和PG创建tuned profile
为你的Oracle和PG创建tuned profile

这里我们并没有把HUGEPAGES的设置fang在tuned profile中,动态的调整HUGEPage设置存在一定风险,因此我们建议不在tuned中自动进行。

为你的Oracle和PG创建tuned profile
为你的Oracle和PG创建tuned profile

我们看到,目前已经有一个Oracle的profile了。下一步试着激活这个Profile。

为你的Oracle和PG创建tuned profile
为你的Oracle和PG创建tuned profile

可以看到新建的Oracle的tuned profile已经发挥作用了。

下面我们利用同样的方法来配置一个PG的tuned profile,里面使用的标准化的操作系统参数是利用2017年IBM实验室在zlinux上针对PG的操作系统优化的最佳实践。

#

# tuned configuration for PostgresSQL servers

# /usr/lib/tuned/pg-performance/tuned.conf

#

[main]

summary=Tuned profile for PostgreSQL Instances

[bootloader]

cmdline=transparent_hugepage=never

[cpu]

force_latency=1

governor=performance

energy_perf_bias=performance

min_perf_pct=100

[disk]

readahead=>4096

[vm]

transparent_hugepages=never

[sysctl]

kernel.sched_min_granularity_ns = 10000000

kernel.sched_wakeup_granularity_ns = 15000000

# checkpoint performance

vm.dirty_background_bytes = 67108864

vm.dirty_background_ratio = 5

vm.dirty_bytes = 536870912

vm.dirty_ratio = 10

vm.dirty_expire_centisecs = 500

vm.dirty_writeback_centisecs = 250

vm.overcommit_memory=2

net.ipv4.tcp_timestamps=0

# VM

vm.swappiness=1

同样,在/usr/lib/tuned中添加了profile后,我们就可以使用了。有兴趣的朋友可以先测试一下了。因为tuned profile设置是全局性的,因此根据你的OS的内存等不同,这些参数设置需要进行测试,而不要简单的照抄上面的作业。确认你的系统中可以安全使用这些配置,再设定为模板。

发表评论

登录后才能评论
服务中心
服务中心
联系客服
联系客服
返回顶部