Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1299629
  • 博文数量: 554
  • 博客积分: 10425
  • 博客等级: 上将
  • 技术积分: 7555
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-09 09:49
文章分类

全部博文(554)

文章存档

2012年(1)

2011年(1)

2009年(8)

2008年(544)

分类:

2008-04-09 18:52:28

 

设置资源控制
第7 章• 管理资源控制(任务) 87
# ps -o project,taskid -p $$
PROJECT TASKID
x-files 73
# csh /* creates second LWP */
# csh /* creates third LWP */
# csh /* cannot create more LWPs */
Vfork failed
#
 如何对一个项目设置多个控制
/etc/project 文件可以包含每个项目的多个资源控制设置,还可包含每个控制的多个阈
值。阈值在操作子句中定义,这些子句使用逗号分隔多个值。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Basic Administration》中的“Using the Solaris Management ToolsWith
RBAC (Task Map)”。
使用带有-s 和-K 选项的projmod 命令对项目x-files 设置资源控制:
# projmod -s -K ’task.max-lwps=(basic,10,none),(privileged,500,deny);
process.max-file-descriptor=(basic,128,deny)’ x-files one line in file
将设置以下控制:
 针对每个任务的最大LWP 数不采取任何操作的basic 控制。
 针对每个任务的最大LWP 数的特权deny 控制。此控制会使任何超过最大数量的LWP 创
建失败,如前面示例第86 页中的“如何为项目中的每个任务设置最大LWP 数”所示。
 在basic 级别对每个进程的最大文件描述符数的限制,此限制迫使任何超过最大数量的
open 调用失败。
1
2
设置资源控制
88 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
使用以下方法之一,查看文件中的条目:
 键入:
# projects -l
.
.
.
x-files
projid : 100
comment: ""
users : (none)
groups : (none)
attribs: process.max-file-descriptor=(basic,128,deny)
task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file
 键入:
# cat etc/project
.
.
.
x-files:100::::process.max-file-descriptor=(basic,128,deny);
task.max-lwps=(basic,10,none),(privileged,500,deny) one line in file
使用prctl 命令
使用prctl 命令,可以对与系统上的活动进程、任务或项目关联的资源控制进行运行时询问
和修改。有关更多信息,请参见prctl(1) 手册页。
3
使用prctl 命令
第7 章• 管理资源控制(任务) 89
 如何使用prctl 命令显示缺省资源控制值
必须在未设置或更改任何资源控制的系统上使用此过程。/etc/system 文件或project 数据
库中只能有非缺省条目。
在任意进程(如正在运行的当前shell)中使用prctl 命令。
# prctl $$
process: 100337: -sh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
process.max-port-events
privileged 65.5K - denysystem
2.15G max deny -
process.crypto-buffer-limit
system 16.0EB max deny -
process.max-crypto-sessions
system 18.4E max deny -
process.add-crypto-sessions
privileged 100 - denysystem
18.4E max deny -
process.min-crypto-sessions
privileged 20 - denysystem
18.4E max deny -
process.max-msg-messages
privileged 8.19K - denysystem
4.29G max deny -
process.max-msg-qbytes
privileged 64.0KB - deny-

使用prctl 命令
90 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
system 16.0EB max deny -
process.max-sem-ops
privileged 512 - denysystem
2.15G max deny -
process.max-sem-nsems
privileged 512 - denysystem
32.8K max deny -
process.max-address-space
privileged 16.0EB max denysystem
16.0EB max deny -
process.max-file-descriptor
basic 256 - deny100337
privileged 65.5K - denysystem
2.15G max deny -
process.max-core-size
privileged 8.00EB max denysystem
8.00EB max deny -
process.max-stack-size
basic 8.00MB - deny100337
privileged 8.00EB - denysystem
8.00EB max deny -
process.max-data-size
privileged 16.0EB max denysystem
16.0EB max deny -
使用prctl 命令
第7 章• 管理资源控制(任务) 91
process.max-file-size
privileged 8.00EB max deny,signal=XFSZ -
system 8.00EB max deny -
process.max-cpu-time
privileged 18.4Es inf signal=XCPU -
system 18.4Es inf none -
task.max-cpu-time
system 18.4Es inf none -
task.max-lwps
system 2.15G max deny -
project.max-contracts
privileged 10.0K - denysystem
2.15G max deny -
project.max-device-locked-memory
privileged 499MB - denysystem
16.0EB max deny -
project.max-port-ids
privileged 8.19K - denysystem
65.5K max deny -
project.max-shm-memory
privileged 1.95GB - denysystem
16.0EB max deny -
project.max-shm-ids
privileged 128 - deny-
使用prctl 命令
92 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
system 16.8M max deny -
project.max-msg-ids
privileged 128 - denysystem
16.8M max deny -
project.max-sem-ids
privileged 128 - denysystem
16.8M max deny -
project.max-tasks
system 2.15G max deny -
project.max-lwps
system 2.15G max deny -
project.cpu-shares
privileged 1 - none -
system 65.5K max none -
zone.max-lwps
system 2.15G max deny -
zone.cpu-shares
privileged 1 - none -
system 65.5K max none -
 如何使用prctl 命令显示给定资源控制的信息
显示正在运行的当前shell 的最大文件描述符。
# prctl -n process.max-file-descriptor $$
process: 110453: -sh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT

使用prctl 命令
第7 章• 管理资源控制(任务) 93
process.max-file-descriptor
basic 256 - deny110453
privileged 65.5K - denysystem
2.15G max deny
 如何使用prctl 临时更改值
此示例过程使用prctl 命令临时添加一个新的权限值,以便拒绝在每个x-files 项目中使用
三个以上的LWP。可将此结果与第86 页中的“如何为项目中的每个任务设置最大LWP 数
”中的结果进行对比。
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Basic Administration》中的“Using the Solaris Management ToolsWith
RBAC (Task Map)”。
使用newtask 加入x-files 项目。
# newtask -p x-files
使用带有-p 选项的id 命令检验是否已加入正确的项目。
# id -p
uid=0(root) gid=1(other) projid=101(x-files)
为project.max-lwps 添加一个新的权限值,将LWP 数限制为三个。
# prctl -n project.max-lwps -t privileged -v 3 -e deny -i project x-files
验证结果。
# prctl -n project.max-lwps -i project x-files
process: 111108: csh
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.max-lwps
privileged 3 - denysystem
2.15G max deny -
1
2
3
4
5
使用prctl 命令
94 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
 如何使用prctl 降低资源控制值
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Basic Administration》中的“Using the Solaris Management ToolsWith
RBAC (Task Map)”。
使用带有-r 选项的prctl 命令更改process.max-file-descriptor 资源控制的最低值。
# prctl -n process.max-file-descriptor -r -v 128 $$
 如何使用prctl 显示、替换和检验项目的控制值
成为超级用户或承担等效角色。
角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见《System
Administration Guide: Basic Administration》中的“Using the Solaris Management ToolsWith
RBAC (Task Map)”。
显示项目group.staff 中project.cpu-shares 的值。
# prctl -n project.cpu-shares -i project group.staff
project: 2: group.staff
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.cpu-shares
privileged 1 - none -
system 65.5K max none
将当前project.cpu-shares 值1 替换为值10。
# prctl -n project.cpu-shares -v 10 -r -i project group.staff
显示项目group.staff 中project.cpu-shares 的值。
# prctl -n project.cpu-shares -i project group.staff
project: 2: group.staff
NAME PRIVILEGE VALUE FLAG ACTION RECIPIENT
project.cpu-shares
privileged 10 - none -
1
2
1
2
3
4
使用prctl 命令
第7 章• 管理资源控制(任务) 95
system 65.5K max none
使用rctladm
如何使用rctladm
使用rctladm 命令可以对资源控制功能的全局状态进行运行时询问和修改。有关更多信息,
请参见rctladm(1M) 手册页。
例如,您可以使用带有-e 选项的rctladm 来启用资源控制的全局syslog 属性。当超过控制
时,便会在指定的syslog 级别记录通知。要启用process.max-file-descriptor 的全局
syslog 属性,请键入以下命令:
# rctladm -e syslog process.max-file-descriptor
在不使用参数的情况下,rctladm 命令将显示每个资源控制的全局标志,包括全局类型标
志。
# rctladm
process.max-port-events syslog=off [ deny count ]
process.max-msg-messages syslog=off [ deny count ]
process.max-msg-qbytes syslog=off [ deny bytes ]
process.max-sem-ops syslog=off [ deny count ]
process.max-sem-nsems syslog=off [ deny count ]
process.max-address-space syslog=off [ lowerable deny no-signal bytes ]
process.max-file-descriptor syslog=off [ lowerable deny count ]
process.max-core-size syslog=off [ lowerable deny no-signal bytes ]
process.max-stack-size syslog=off [ lowerable deny no-signal bytes ]
.
.
.
使用rctladm
96 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
使用ipcs
如何使用ipcs
使用ipcs 实用程序可以显示有关活动的进程间通信(interprocess communication, IPC) 功能
的信息。有关更多信息,请参见ipcs(1) 手册页。
您可以使用带有-J 选项的ipcs 来查看分配IPC 对象所遵循的项目限制。
# ipcs -J
IPC status from as of Wed Mar 26 18:53:15 PDT 2003
T ID KEY MODE OWNER GROUP PROJECT
Message Queues:
Shared Memory:
m 3600 0 --rw-rw-rw- uname staff x-files
m 201 0 --rw-rw-rw- uname staff x-files
m 1802 0 --rw-rw-rw- uname staff x-files
m 503 0 --rw-rw-rw- uname staff x-files
m 304 0 --rw-rw-rw- uname staff x-files
m 605 0 --rw-rw-rw- uname staff x-files
m 6 0 --rw-rw-rw- uname staff x-files
m 107 0 --rw-rw-rw- uname staff x-files
Semaphores:
s 0 0 --rw-rw-rw- uname staff x-files
使用ipcs
第7 章• 管理资源控制(任务) 97
容量警告
通过对资源控制执行全局操作,可以接收任何实体因资源控制值设置太低而失败的通知。
例如,假设您要确定Web 服务器是否拥有处理一般工作负荷所需的CPU。您可以分析sar
数据以了解空闲的CPU 时间和平均负荷值。您也可以检查扩展记帐数据以确定针对Web 服
务器进程同时运行的进程数。
但是,比较简单的方法是将Web 服务器置于任务中。然后,您可以使用syslog 设置全局操
作,以便在任务超过对应于计算机容量的预定LWP 数时通知您。
有关更多信息,请参见sar(1) 手册页。
 如何确定是否为Web 服务器分配了足够的CPU 容量
使用prctl 命令对包含httpd 进程的任务设置特权(超级用户拥有)的资源控制。将每个任
务的LWP 总数限制为40,并禁用所有的本地操作。
# prctl -n task.max-lwps -v 40 -t privileged -d all ‘pgrep httpd‘
对task.max-lwps 资源控制启用系统日志全局操作。
# rctladm -e syslog task.max-lwps
查看工作负荷是否导致资源控制失败。
如果是,则将看到/var/adm/messages,例如:
Jan 8 10:15:15 testmachine unix: [ID 859581 kern.notice]
NOTICE: privileged rctl task.max-lwps exceeded bytask 19
1
2
3
容量警告
98 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
公平共享调度程序(概述)
对工作负荷数据进行分析可以指明特定工作负荷或工作负荷组是否在独占CPU 资源。如果
这些工作负荷没有违反CPU 资源使用约束,则可以修改系统上CPU 时间的分配策略。使用
本章所述的公平共享调度类,您可以基于份额而不是分时(timesharing, TS) 调度类的优先级
方案来分配CPU 时间。
本章包含以下主题:
 第99 页中的“调度程序介绍”
 第100 页中的“CPU 份额定义”
 第100 页中的“CPU 份额和进程状态”
 第101 页中的“CPU 份额与使用率”
 第101 页中的“CPU 份额示例”
 第104 页中的“FSS 设置”
 第105 页中的“FSS 和处理器集”
 第108 页中的“将FSS 与其他调度类组合”
 第108 页中的“设置系统的调度类”
 第109 页中的“安装了区域的系统上的调度类”
 第109 页中的“用于FSS 的命令”
要开始使用公平共享调度程序,请参见第9 章。
调度程序介绍
操作系统的基本工作是仲裁哪些进程可以访问系统资源。进程调度程序,也称为分发程
序,是控制为进程分配CPU 的内核部分。调度程序支持调度类的概念。每个类都定义了调
度策略,用于调度类中的进程。Solaris 操作系统中的缺省调度程序(即TS 调度程序)尝试
为每个进程提供相对均等的访问可用CPU 的权限。但是,您可能要指定为特定进程提供的
资源多于为其他进程提供的资源。
使用公平共享调度程序(fair share scheduler, FSS),您可以基于各工作负荷的重要性来控制为
它们分配的可用CPU 资源。这种重要性通过您为每个工作负荷指定的CPU 资源份额来表
示。
8第8 章
99
您为每个项目指定CPU 份额,以控制该项目访问CPU 资源的权利。FSS 保证为各项目公平
地分配CPU 资源,这种公平分配基于已分配的份额,而与附加到项目的进程数无关。FSS
通过将某个项目与其他项目比较后,减少此项目对CPU 的大量使用的权利,同时增加少量
使用的权利来达到公平。
FSS 由一个内核调度类模块和特定类版本的dispadmin(1M) 和priocntl(1) 命令组成。FSS 使
用的项目份额通过project(4) 数据库中的project.cpu-shares 属性指定。
注– 如果您要在安装了区域的系统上使用project.cpu-shares 资源控制,请参见第213 页中
的“区域配置数据”、第304 页中的“在非全局区域中使用的资源控制”和第332 页中的
“在安装了区域的Solaris 系统上使用公平共享调度程序”。
CPU 份额定义
术语“份额”用于定义分配给某个项目的那一部分系统CPU 资源。如果您为某个项目指定
的CPU 份额数多于为其他项目指定的份额数,则此项目将从公平共享调度程序中接收更多
的CPU 资源。
CPU 份额并不等同于CPU 资源的百分比。份额用于定义工作负荷相对于其他工作负荷的相
对重要性。为项目指定CPU 份额时,主要的关注对象并不是项目具有的份额数,更重要的
是要知道此项目与其他项目相比具有多少份额。您还必须考虑有多少其他项目与此项目争
用CPU 资源。
注– 零份额项目中的进程始终以最低系统优先级(0) 运行。这些进程仅在非零份额项目不使
用CPU 资源时运行。
CPU 份额和进程状态
在Solaris 系统中,一个项目工作负荷通常包含多个进程。从公平共享调度程序的角度来
看,每个项目工作负荷可以处于空闲或活动状态。如果某个项目的所有进程都没有使用
CPU 资源,则将此项目视为空闲项目。这通常表示此类进程处于休眠状态(等待I/O 完
成)或已停止。如果某个项目中至少有一个进程正在使用CPU 资源,则将此项目视为活动
项目。在计算为项目指定多少CPU 资源时,将使用所有活动项目的份额总数。
以下公式显示了FSS 调度程序如何计算为每个项目分配的CPU 资源。
CPU 份额定义
100 系统管理指南:Solaris Containers-资源管理和Solaris Zones • 2006 年7 月
图8–1 FSS 调度程序份额计算
活动项目增多时,为每个项目分配的CPU 将减少,但是不同项目之间的分配比例并没有更
改。
CPU 份额与使用率
份额分配并不等同于使用率。如果将50% 的CPU 资源分配给某个项目,它可能平均只使用
20% 的CPU 资源。此外,仅当与其他项目争用资源时,份额才会限制对CPU 的使用。如果
某个项目在系统上单独运行,则无论为此项目分配多么低的资源百分比,它也始终能使用
100% 的处理能力。可用的CPU 周期永远不会浪费,它们会分布在项目之间。
为处于忙碌状态的工作负荷分配少量份额可能会降低其性能。但是,只要系统没有过载,
就不会阻止工作负荷完成其工作。
CPU 份额示例
假设您的系统具有两个CPU,并且运行两个CPU 限制的并行工作负荷,分别称为A 和B。
每个工作负荷都正在作为单独的项目运行。已对项目进行了配置,为项目A 指定SA 个份
额,为项目B 指定SB 个份额。
在传统的TS 调度程序下,会为系统上正在运行的各个工作负荷平均地提供相同的CPU 资源
量。每个工作负荷将使用50% 的系统容量。
当在FSS 调度程序的控制下运行,并且SA=SB 时,也会为这些项目提供大致等量的CPU 资
源。但是,如果为项目提供了不同的份额数,则它们的CPU 资源分配量也就不同。
以下三个示例说明了份额在不同的配置中如何起作用。这些示例显示在可用资源能够满足
或无法满足需求的情况下,从使用情况的角度来说,份额仅在算术意义上是精确的。
示例1:每个项目中有两个CPU 限制的进程
如果A 和B 各有两个CPU 限制的进程,并且SA = 1,SB = 3,则份额总数是1 + 3 = 4。在此配
置中,假设具有足够的CPU,则为项目A 和项目B 分配的CPU 资源分别为25% 和75%。
CPU 份额示例

 

 


以上文章转自于 : http://developers.sun.com.cn/

阅读(520) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~