Solaris container – Resource Management

1.为项目中的每个任务设置最大LWP

使用带有 -K 选项的 projadd 命令创建名为 x-files 的项目。将在此项目中创建的每个任务的最大 LWP 数设置为 3:

# projadd -K 'task.max-lwps=(privileged,3,deny)' x-files

执行完此过程中的步骤之后,当超级用户在项目 x-files 中创建新任务(使用 newtask 将新任务加入此项目)时,便不能在运行此任务时创建三个以上的 LWP

# newtask -p x-files csh

# prctl -n task.max-lwps $$

process: 111107: csh

NAME    PRIVILEGE    VALUE    FLAG   ACTION            RECIPIENT

task.max-lwps

        privileged       3       -   deny                      -

        system       2.15G     max   deny                      -

# id -p

uid=0(root) gid=1(other) projid=100(x-files)

# 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

2.对一个项目设置多个控制

使用带有 -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

将设置以下控制:

       针对每个任务的最大 LWP 数不采取任何操作的 basic 控制。

       针对每个任务的最大 LWP 数的特权 deny 控制。此控制会使任何超过最大数量的 LWP 创建失败,如前面示例如何为项目中的每个任务设置最大 LWP 数所示。

       basic 级别对每个进程的最大文件描述符数的限制,此限制迫使任何超过最大数量的 open 调用失败。

3. 使用 prctl 命令显示缺省资源控制值

# prctl $$

process: 100337: -sh

NAME    PRIVILEGE       VALUE    FLAG   ACTION                   RECIPIENT

process.max-port-events

        privileged      65.5K       -   deny                             -

        system          2.15G     max   deny                             -

process.crypto-buffer-limit

        system          16.0EB    max   deny                             -

process.max-crypto-sessions

        system          18.4E     max   deny                             -

... ....

4.使用 prctl 命令显示给定资源控制的信息

# prctl -n process.max-file-descriptor $$

process: 110453: -sh

NAME    PRIVILEGE       VALUE    FLAG   ACTION       RECIPIENT

process.max-file-descriptor

        basic             256       -   deny            110453

        privileged      65.5K       -   deny                 -

        system          2.15G     max   deny    

5. 使用 prctl 临时更改值

使用 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       -   deny                      -

        system       2.15G     max   deny                      -

6. 使用 prctl 降低资源控制值

使用带有 -r 选项的 prctl 命令更改 process.max-file-descriptor 资源控制的最低值。

# prctl -n process.max-file-descriptor -r -v 128 $$

7. 使用 prctl 显示、替换和检验项目的控制值

显示项目 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               -

        system          65.5K     max   none

8. 使用 rctladm

使用 rctladm 命令可以对资源控制功能的全局状态进行运行时询问和修改

例如,您可以使用带有 -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 ]

… …

9. 使用 ipcs

ipc可以显示有关活动的进程间通信 (interprocess communication, IPC) 功能的信息。您可以使用带有 -J 选项的 ipcs 来查看分配 IPC 对象所遵循的项目限制。

# ipcs -J

    IPC status from <running system> 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

10. 如何确定是否为 Web 服务器分配了足够的 CPU 容量

1).使用 prctl 命令对包含 httpd 进程的任务设置特权(超级用户拥有)的资源控制。将每个任务的 LWP 总数限制为 40,并禁用所有的本地操作。

      # prctl -n task.max-lwps -v 40 -t privileged -d all `pgrep httpd`

2). task.max-lwps 资源控制启用系统日志全局操作。

      # rctladm -e syslog task.max-lwps

3).查看工作负荷是否导致资源控制失败。

      如果是,则将看到 /var/adm/messages,例如:

      Jan  8 10:15:15 testmachine unix: [ID 859581 kern.notice]

      NOTICE: privileged rctl task.max-lwps exceeded by task 19

11. 标准资源控制表

控制名称 

说明 

缺省单位 

project.cpu-shares

授予此项目的 CPU 份额数,用于公平共享调度程序(请参见 FSS(7))。

数量(份额) 

project.max-crypto-memory

libpkcs11 用于加速硬件加密的内核内存总量。内核缓冲区分配以及与会话相关的结构分配都按照此资源控制执行。

大小(字节) 

project.max-device-locked-memory

允许的锁定内存总量。 在将来的发行版中,可能不会包括此资源控制。 

大小(字节) 

project.max-port-ids

允许的最大事件端口数。 

数量(事件端口数)  

project.max-shm-ids

此项目允许的最大共享内存 ID 数。 

数量(共享内存 ID 

project.max-sem-ids

此项目允许的最大信号 ID 数。 

数量(信号 ID 

project.max-msg-ids

此项目允许的最大消息队列 ID 数。 

数量(消息队列 ID 

project.max-shm-memory

此项目允许的共享内存总量。 

大小(字节) 

project.max-lwps

此项目可同时使用的最大 LWP 数。 

数量 (LWP) 

project.max-tasks

此项目中允许的最大任务数。 

数量(任务数) 

project.max-contracts

此项目中允许的最大合同数。 

数量(合同) 

task.max-cpu-time

此任务进程可用的最多 CPU 时间。 

时间(秒) 

task.max-lwps

此任务的进程可同时使用的最大 LWP 数。 

数量 (LWP) 

process.max-cpu-time

此进程可用的最长 CPU 时间。 

时间(秒) 

process.max-file-descriptor

此进程可用的最大文件描述符索引。 

索引(最大文件描述符) 

process.max-file-size

此进程可写入的最大文件偏移。 

大小(字节) 

process.max-core-size

此进程创建的最大核心转储文件大小。 

大小(字节) 

process.max-data-size

此进程可用的最大堆栈缓冲池内存。 

大小(字节) 

process.max-stack-size

此进程可用的最大堆栈缓冲池内存段。 

大小(字节) 

process.max-address-space

此进程可用的最大地址空间量,即段大小的总和。 

大小(字节) 

process.max-port-events

每事件端口允许的最大事件数。 

数量(事件数)  

process.max-sem-nsems

每信号集允许的最大信息数。 

数量(每集合中的信号数) 

process.max-sem-ops

semop 调用允许的最大信号操作数(在 semget() 时间从资源控制复制的值)。

数量(操作数) 

process.max-msg-qbytes

消息队列中消息的最大字节数(在 msgget() 时间从资源控制复制的值)。

大小(字节) 

process.max-msg-messages

消息队列中的最大消息数(在 msgget() 时间从资源控制复制的值)。

数量(消息数) 

 

 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值