之路教程 https://onitr oad .com

在 Solaris 区域中配置动态资源池

资源池配置允许我们在不重启区域的情况下动态地为区域配置 CPU 资源。
默认情况下,当在系统上启用动态资源池时,它会有一个默认处理器集和一个默认池,其中已经配置了所有 CPU 资源。
现在让我们看看如何配置新的处理器集和池并将它们绑定到 2 个区域 zone01 和 zone02.

启用动态资源池服务:

global # svcadm enable /system/pools/dynamic

确保 poold 守护进程正在运行

global # pooladm
pooladm: couldn't open pools state file: Facility is not active
global # pooladm -e

如果我们现在检查 pooladm 命令,我们会看到一个默认池和一个默认处理器集已经配置了其中的所有 CPU。

global # pooladm
system default
	string	system.comment
	int	system.version 1
	boolean	system.bind-default true
	string	system.poold.objectives wt-load
	pool pool_default
		int	pool.sys_id 0
		boolean	pool.active true
		boolean	pool.default true
		int	pool.importance 1
		string	pool.comment
		pset	pset_default
	pset pset_default
		int	pset.sys_id -1
		boolean	pset.default true
		uint	pset.min 1
		uint	pset.max 65536
		string	pset.units population
		uint	pset.load 15
		uint	pset.size 4
		string	pset.comment
		cpu
			int	cpu.sys_id 1
			string	cpu.comment
			string	cpu.status on-line
		cpu
			int	cpu.sys_id 3
			string	cpu.comment
			string	cpu.status on-line
		cpu
			int	cpu.sys_id 0
			string	cpu.comment
			string	cpu.status on-line
		cpu
			int	cpu.sys_id 2
			string	cpu.comment
			string	cpu.status on-line

将内存池配置保存到 /etc/pooladm.conf。
仅当我们第一次启用资源池守护程序时才需要这样做。

global # pooladm -s

创建配置文件 /var/tmp/pool.conf 以从中创建资源池。
其中:我们使用以下配置创建 2 个池 pool01 和 pool02

Pool name - pool01
processor set name - pset01
Min. Processors - 1
Max Processors - 1
Pool name - pool02
processor set name - pset02
Min. Processors - 1
Max Processors - 2
global # cat /var/tmp/pool.conf
create pset pset01 (uint pset.min = 1; uint pset.max = 1)
create pool pool01
associate pool pool01 (pset pset01)
create pset pset02 (uint pset.min = 1; uint pset.max = 2)
create pool pool02
associate pool pool02 (pset pset02)

刷新内存配置

global # pooladm -x

将空白配置保存到 /etc/pooladm.conf

global # pooladm -s

将 /var/tmp/pool.conf 配置保存为 /etc/pooladm.conf。

从我们刚刚创建的配置文件中创建 2 个池

global # poolcfg -f /var/tmp/pool.cfg

激活新的 /etc/pooladm.conf 配置:

global # pooladm -c

如果我们现在检查 pooladm,我们将看到使用各自的处理器集创建的 2 个池。

# pooladm
system default
	string	system.comment
	int	system.version 1
	boolean	system.bind-default true
	string	system.poold.objectives wt-load
	pool pool01
		int	pool.sys_id 1
		boolean	pool.active true
		boolean	pool.default false
		int	pool.importance 1
		string	pool.comment
		pset	pset01
	pool pool_default
		int	pool.sys_id 0
		boolean	pool.active true
		boolean	pool.default true
		int	pool.importance 1
		string	pool.comment
		pset	pset_default
	pool pool02
		int	pool.sys_id 2
		boolean	pool.active true
		boolean	pool.default false
		int	pool.importance 1
		string	pool.comment
		pset	pset02
	pset pset01
		int	pset.sys_id 1
		boolean	pset.default false
		uint	pset.min 1
		uint	pset.max 1
		string	pset.units population
		uint	pset.load 0
		uint	pset.size 1
		string	pset.comment
		cpu
			int	cpu.sys_id 2
			string	cpu.comment
			string	cpu.status on-line
	pset pset_default
		int	pset.sys_id -1
		boolean	pset.default true
		uint	pset.min 1
		uint	pset.max 65536
		string	pset.units population
		uint	pset.load 8
		uint	pset.size 1
		string	pset.comment
		cpu
			int	cpu.sys_id 3
			string	cpu.comment
			string	cpu.status on-line
	pset pset02
		int	pset.sys_id 2
		boolean	pset.default false
		uint	pset.min 1
		uint	pset.max 2
		string	pset.units population
		uint	pset.load 0
		uint	pset.size 2
		string	pset.comment
		cpu
			int	cpu.sys_id 1
			string	cpu.comment
			string	cpu.status on-line
		cpu
			int	cpu.sys_id 0
			string	cpu.comment
			string	cpu.status on-line

配置两个区域并将池分配给各自的区域:

global # zoneadm list -ivc
  ID NAME             STATUS     PATH                           BRAND    IP
   0 global           running    /                              solaris  shared
   3 zone01           running    /rpool/zone01                  solaris  excl
   4 zone02           running    /rpool/zone02                  solaris  excl
global # zonecfg -z zone01
zonecfg:zone01> set pool=pool01
zonecfg:zone01> verify
zonecfg:zone01> commit
zonecfg:zone01> exit
global # zonecfg -z zone02
zonecfg:zone02> set pool=pool02
zonecfg:zone02> verify
zonecfg:zone02> commit
zonecfg:zone02> exit

上述池绑定到区域在重新启动后生效并在重新启动后保持不变,但要使池绑定立即生效:

global # poolbind -p pool01 -i zoneid zone01
global # poolbind -p pool02 -i zoneid zone02

现在检查分配给区域的处理器:

global # zlogin zone01 psrinfo -p
1
global # zlogin zone02 psrinfo -p
2
solaris 区域中的资源管理:动态资源池

solaris 10/solaris 11 中的资源池提供了一种将处理器集和调度类分配给非全局区域的机制。
资源池框架如下图所示。
当我们在区域上具有可变负载并且我们希望动态更改对这些区域的资源分配时,动态资源池非常有用。
与上限 CPU 分配不同,区域的动态资源池分配是在线的,可以随时在线更改。

注意:资源池是一个旧功能,现在被专用于区域的 CPU 分配所取代,这反过来又会做同样的事情。
它在下面创建池和处理器集,并将它们与区域相关联。
因此,如果我们稍后使用的是 Solaris 10 8/07 的更新,最好使用将 CPU 分配给区域的专用 CPU 功能

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