1、VPCLASS 配置参数
当数据库服务器从离线模式启动到在线模式时,可以使用 VPCLASS 配置参数来指定需要启动多少个特定类型的虚拟处理器。通过该参数可一直设置 CPU、AIO、SHM、STR、TLI、SOC、JVP 和其他用户自定义 VP 的个数,在一般情况下,我们只需要配置 CPU VP,其他类型的 VP 系统会自动分配管理。
参数格式如下:
# VPCLASS cpu - Configures the CPU VPs. The format is:
# VPCLASS cpu, num=<number of CPU VPs>,
# [,max=<maximum number for class>]
# [,aff=<single CPU number> | <start cpu>-<end cpu> |
# ( <start cpu>-<end cpu>/<skip amount> ) ]
# [,noage]
# for example:
# num=4,aff=(1-10/3) means assign 4 CPU VPs to processors
# 1,4,7,10
Aff 绑定 CPU,固定 VP 和物理 CPU 之间的关系。
Processor affinity 功能可以将 CPU 虚拟处理器绑定到真实的物理 CPU 上。aff 参数用
于指定需要绑定的虚拟处理器的编号或编号的起始范围。需要注意的是,aff 的取值不能超
过物理 CPU 的个数减 1 的值,因为需要保留一个 CPU 以处理系统进程。
在部分操作系统上,进程的优先级会随着运行时间的增加而降低,这个特性被称为优
先级老化(Priority Aging)。如果希望使一个长期运行的进程保持高优先级,就需要关闭该
特性。在使用 VPCLASS 配置参数时,可以使用 noage 来保证该类虚拟处理器的优先级。
如果用户创建了用户自定义历程(User-Defined Routine,UDR),则它在会运行在 CPU
VP 的进程上。为了避免可能发生在 CPU VP 上的阻塞,可以创建一个用户自定义 VP 用来
运行 UDR。此外还可以在 VPCLASS 中设置 noyield 选项,使得 UDR 可以独占用户自定义
VP,此时在 noyield 的虚拟处理器中将不发生上下文切换,所有历程都是顺序执行的。
在一般情况我们配置如下 ONCONFIG 参数即可:
MULTIPROCESSOR 1 #开启多 CPU 模式
VPCLASS cpu,num=15,noage #一般配置为物理 CPU(多核总数)个数-1
VP_MEMORY_CACHE_KB 0 #配置 CPU 缓存
SINGLE_CPU_VP 0
可以通过 onmode -p <+-#> <class> 动态增加、减少 CPU VP 数量。
2、多处理器配置
MULTIPROCESSOR 配置参数用于启用数据库的多处理器特性。该参数也决定了服务器是否启用自旋锁/信号量。如果将 MULTIPROCESSOR 设置为 1,则服务线程将会使用自旋锁来进行并发控制而不是等待队列。
SINGLE_CPU_VP 配置参数用于指定是否只使用一个 CPU VP。当该参数值为 1 时,服务器只能启动 1 个 CPU VP,并且不能动态增加 CPU VP 和自定义 VP。此时数据库也不会对一些内部结构加锁,因为并不会有其他处理器访问这些结构。
3、监控数据库线程状态
可以通过 onatat -g 命令查看数据库实例的线程状态,命令选项如下表所示。
表 通过 onstat -g 功能查看数据库实例线程状态的参数





