使用linux的cgroup限制数据库使用cpu的资源

rdbms: 11.2.0.3

OS:Oracle Linux 5.11

exadata :11.2.3.2.0

可以参考文档:MOS: Using PROCESSOR_GROUP_NAME to bind a database instance to CPUs or NUMA nodes on Linux (Doc ID 1585184.1)

[root@exadb01 oracle]# sh setup_processor_group.sh -show
This is a NUMA system.

NUMA configuration:
-------------------
Node 0
  CPUs: 0
  Memory Total: 2096636 kB Free: 1063988 kB

This system does not have any processor group.
[root@exadb01 oracle]# 


[root@exadb01 oracle]# sh setup_processor_group.sh -prepare
 

SUCCESS: -prepare complete 
Next step: create a new proc group using option -create
[root@exadb01 oracle]# 


[root@exadb01 oracle]# sh setup_processor_group.sh -check
 
setup_processor_group.sh -prepare has been run on this system
[root@exadb01 oracle]# 


[root@exadb01 oracle]# sh setup_processor_group.sh -create -name mycg -cpus 0 -u:g oracle:dba
SUCCESS: -create complete for processor group mycg

To start an Oracle instance in this processor group,
 set the database initialization parameter:
PROCESSOR_GROUP_NAME=mycg
[root@exadb01 oracle]# 


[root@exadb01 oracle]# mount
/dev/mapper/VolGroup00-LogVol00 on / type ext3 (rw)
proc on /proc type proc (rw)
sysfs on /sys type sysfs (rw)
devpts on /dev/pts type devpts (rw,gid=5,mode=620)
/dev/sda1 on /boot type ext3 (rw)
tmpfs on /dev/shm type tmpfs (rw)
none on /proc/sys/fs/binfmt_misc type binfmt_misc (rw)
sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)
cpuset on /mnt/cgroup type cgroup (rw,cpuset)
[root@exadb01 oracle]# 

--数据库层的设置。出现无法启动数据库的原因,可以参考上面的MOS,Oracle Database - Enterprise Edition - Version 12.1.0.1 and later 。要DB 12.1.0.1 开始。这里11.2.0.3 ,出现错误正常

SYS@exa>show parameter processor_group_name

NAME				     TYPE	 VALUE
------------------------------------ ----------- ------------------------------
processor_group_name		     string
SYS@exa>alter system set processor_group_name=mycg scope=spfile;  

System altered.

SYS@exa>

SYS@exa>startup
ORA-01078: failure in processing system parameters
ORA-56729: Failed to bind the database instance to processor group MYCG;
 Additional Information: Cannot open /mnt/cgroup/MYCG/cpuset.memory_migrate at skgsnmvpgs:4
SYS@exa>

-- 修复spfile

SYS@exa>create pfile='/home/oracle/pfile' from spfile='+data_add/exa/spfileexa.ora';

--备份原来的spfile,重新创建spfile并启动数据库

SYS@exa>
ASMCMD> cp spfileexa.ora spfileexa.ora_old
copying +data_add/exa/spfileexa.ora -> +data_add/exa/spfileexa.ora_old
ASMCMD> rm -rf spfileexa.ora

-- 重新创建spfile ,并启动数据库 
SYS@exa>create spfile='+data_add/exa/spfileexa.ora' from pfile='/home/oracle/pfile';                                             

File created.

SYS@exa>startup
ORACLE instance started.

Total System Global Area  626327552 bytes
Fixed Size		    2230952 bytes
Variable Size		  285214040 bytes
Database Buffers	  335544320 bytes
Redo Buffers		    3338240 bytes
Database mounted.
Database opened.
SYS@exa>

-- 删除掉配置的cgroup,此时mount下还是可以看到cpuset on /mnt/cgroup type cgroup (rw,cpuset)。其中一些书上介绍到,cgroup虽然在Oracle Linux5上也有该特性,但是到了Oracle Linux  6 才正式发布这个新特性。相比Oracle Linux 6,Oracle Linux 5 上的cgroups缺少了一些管理工具,大部分步骤需要通过手工来配置。

setup_processor_group.sh –delete –name mycg
[root@exadb01 oracle]# sh setup_processor_group.sh -delete -name mycg
SUCCESS: -delete complete for processor group mycg

END

发布了754 篇原创文章 · 获赞 31 · 访问量 19万+

猜你喜欢

转载自blog.csdn.net/xxzhaobb/article/details/103970166
今日推荐