Solaris的资源管理

来源:互联网 发布:mac上怎么删除文件 编辑:程序博客网 时间:2024/04/30 05:44
注:以下文字转贴自http://blog.sina.com.cn/u/45d51ebc010008tm:

为了确保一些大型应用程序
(Oracle)运行良好,需要为其分配合理的系统资源,:内存空间、信号灯集、CPU时间等,这些系统资源的分配在以往的系统中通常通过可调的内核参数在”/etc/system”文件中设定, 这种方式需要重新启动机器才能使修改生效,Solaris 10版本中的系统资源配置管理较之前的版本有较大的变化, Solaris10中保留了这种传统做法,另外还提供了另一种动态设置参数的方式,不需要重新启动OS就可以修改这些系统限制,以下Solaris 10中资源配置管理的例子都是基于Oracle的应用.Oracle是一个由多进程组成的程序, 不同的进程之间利用不同的IPC方式实现不同的功能,IPC需要占用系统开销,Oracle应用程序的资源限制实际上是设定IPC所能占用的系统开销(有关IPC的介绍,请参考其它书籍).

基于项目调整

项目(project)Solaris Resource Management(资源管理)中的基本单位。通过几个系统命令(projects,projadd,projmod,projdel)对系统资源进行控制. 基于项目方式设置的资源控制在系统重新启动后也不会丢失.本节将以OracleSolaris10上进行安装为例,以project为单位为Oracle用户分配所有与之相关的资源。

step1. oracle用户创建新的项目.

    # id –p oracle

    uid=605(oracle) gid=601(dba) projid=3(default)

   

    # projadd -U oracle -p 1233 -c "oracle parameters setting" user.oracle

    其中:

    -U: 指定应用到该项目的用户列表.

    -c: 项目的描述信息.

    -p: 非负整数,项目ID.

 

    # id –p oracle

    uid=605(oracle) gid=601(dba) projid=1233(user.oracle)

 

step2. 为项目添加属性.

    # projmod -a -K "project.max-shm-memory=(priv,17179869184,deny)" user.oracle (设置最大共享内存为12G,系统物理内存为32G,单位为字节.)

    # projmod -a -K "project.max-sem-ids=(priv,2000,deny)" user.oracle

    # projmod -a -K "process.max-sem-nsems=(priv,2048,deny)" user.oracle

    # projmod -a -K "project.max-shm-ids=(priv,256,deny)" user.oracle

    其中:

    -a: 表示将属性追加到该项目数据库中(-r为删除).

    -K: 代表key,用于指定具体的属性,可以一次设置多个属性值,格式为:

       -K key1=value1 -K "key2=(value2a),(value2b)"


step3. 查看项目当前的设定值.

    # prctl $$ (查看所有项目的属性)

    # prctl -n project.max-shm-memory $$ (查看当前用户的属性值)

    process: 16830: -sh

    NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT

    project.max-shm-memory

        privileged      7.81GB      -   deny                                 -

        system          16.0EB    max   deny                                 -

    root用户默认可用的共享内存为7.81GB,约为物理内存的1/4.

 

    # prctl -n project.max-shm-memory -i project user.oracle

    project: 1233: user.oracle

    NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT

    project.max-shm-memory

        privileged      12.0GB      -   deny                                 -

        system          16.0EB    max   deny

在运行时动态设定

除了基于Project方式来控制系统的资源之外,系统还通过”prctl”工具提供另一种动态设定资源的方法,但经prctl工具设置的系统资源限制只有在当前的系统生效,在系统重新启动后这些设置将会丢失.

如在系统运行时将oracle用户最大能使用的共享内存由12GB改为10GB:

# prctl -n project.max-shm-memory -r -v 10g -i project user.oracle

-r: 替代数据库中该项目已有的属性值.

-v: 指定新的目标值.

 

# prctl -n project.max-shm-memory  -i project user.oracle

project: 1233: user.oracle

NAME    PRIVILEGE       VALUE    FLAG   ACTION                       RECIPIENT

project.max-shm-memory

        privileged      10.0GB      -   deny                                 -

        system          16.0EB    max   deny