https://onitroad.com 更多教程

Solaris资源池管理

管理资源池有两种基本方法。
第一种是通过命令行界面 (CLI)。
CLI 由三个命令组成:

pooladm 激活配置或者停用当前配置。
如果没有选项,它还会打印当前配置。

poolbind 将项目、任务和进程绑定到池。

poolcfg 创建和修改池配置文件。
它还可以显示当前配置。

池的默认配置文件是 /etc/pooladm.conf 。
该文件中基本上列出了三件事:

system 这是代表整个系统的机器级实体。

pset 这是一个处理器集。

pool 这是一个命名的资源集合(处理器集和/或者调度类分配)。

如果此文件在引导时存在,则会调用 pooladm 以激活指定的配置。
或者,可以使用 pooladm 命令手动激活通过 poolcfg 命令放置在任意文件中的任何有效配置。

poolcfg 可以通过两种方式创建有效的 /etc/pooladm.conf 文件。
第一种是使用“发现”选项。
在这种情况下,系统中的所有组件和资源(系统、池、pset)都会被记录下来。
这是创建初始配置文件的最简单方法。
下面是一个例子:

# poolcfg -c discover

然后可以使用 poolcfg 文件修改配置。
创建有效配置文件的第二种方法是使用 poolcfg 的子命令参数。
下面是一个例子:

# poolcfg -c 'create system dev'

定义池的基本操作流程是创建系统、创建处理器集、创建池、可选地将调度类分配给池(每个池一个类),然后将池关联到处理器集。
以下是使用带有 poolcfg 的命令文件的示例:

# cat > poolcmds.txt
# create system dev
# create pset web (int pset.min = 1; int pset.max = 4)
# create pset db (int pset.min = 2; int pset.max = 4)
# create pool web
# create pool db
# modify pool web (string pool.scheduler="FSS")
# associate pool web (pset web)
# associate pool db (pset db)
# poolcfg -f poolcmds.txt

正如概述中提到的,池的真正力量在项目中发挥作用。
可以将一个或者多个项目分配给一个池,以保证工作负载的特定资源水平。
项目可以通过项目数据库自动绑定到池,也可以使用 poolbind 命令手动绑定。
以下是两者的示例:

Automatic

这是项目数据库。

user.user01:1000::::project.pool=web,project.cpu-shares=(priveleged,1,deny)
user.user02:1001::::project.pool=web,project.cpu-shares=(priveleged,2,deny)
user.oracle:1002::::project.pool=db

默认情况下,user01 和 user02 拥有的进程将在 web 池中运行,oracle 进程将在 db 池中运行。
user02 保证是 user01 两倍的 CPU 资源。

手动

将 jpb 拥有的进程绑定到数据库池。

# poolbind -i project -p db user.jpb
Solaris 资源池

总结

资源池框架提供了一种强大的机制,通过使用处理器集和调度类将系统分成独立的分区。
将池与项目相结合使管理员能够轻松保证工作负载的资源水平。
池甚至可以与动态重新配置 (DR) 一起使用。
如果请求的 DR 操作使当前池配置保持有效,则 DR 操作成功。
或者,如果操作会使活动配置无效,则会失败并在日志中显示一条消息。
在这种情况下,我们可以强制 DR 操作(使用适当的选项)继续,这也会导致池配置符合要求。

什么是资源池

资源池提供了一种将系统划分为具有可选调度类分配的持久处理器集的机制。

当项目与池相关联时,资源池的真正力量就体现出来了。
请记住,可以将项目视为共同代表工作负载的相关任务的聚合。

一个池可以分配一个或者多个项目。
可以使用 FSS 调度程序确定池中项目的优先级。
FSS 调度程序通过 CPU 份额确定进程的相对优先级。
池中项目的优先级可以通过 CPU 份额分配。

日期:2020-09-17 00:15:24 来源:oir作者:oir