|
|
51CTO旗下网站
|
|
移动端

熟悉Solaris 10 项目和任务管理

为了优化系统服务,有时需要对运行的系统进行工作量分析。无论是单独对从进程方面还是从用户方面来说,获得这些信息是困难的。

作者:曹江华来源:51CTO|2009-11-17 10:31

【51CTO原创】

一、项目(Projects)和任务(Tasks)简介

为了优化系统服务,有时需要对运行的系统进行工作量分析。无论是单独对从进程方面还是从用户方面来说,获得这些信息是困难的。在Solaris中,有两种工具来分析工作量:项目和任务。项目对有关工作提供网络背景方面的管理。任务提供程序组方面的管理。基于项目和任务管理机制,运行的程序可以被标准的Solaris命令所管理。项目用于组织和管理物理系统资源集合。在实现全面服务器整合计划时,项目很有用。项目提供下列功能:

为应用程序设置最小CPU资源和内存容量,从而平衡系统资源。

每个应用程序均可获得为其项目设置的最小CPU资源和内存容量(可选)。例如:基于应用程序的项目允许你为网络上运行的所有应用程序建立最小CPU资源和内存容量。当同一台主机上有多个项目处于活动状态时,由于每个应用程序均位于其各自的项目内,从而减少了系统资源的争用现象。在这种情况下,为每个项目设置的资源限制是由该主机上的Solaris内核实施的。

跟踪数据中心内的资源使用情况。

跟踪项目当前使用的资源总量,还会跟踪项目成员使用的资源量。尽管多个用户和组可能同属于一个或多个项目,但必须为每个Solaris用户指定一个默认项目。Solaris用户启动的进程可以绑定到该用户所属的任何项目。项目通过使用项目成员和资源池来跟踪与控制应用程序的资源消耗。

二、项目和容器的关系

项目就是与主机相关联的容器。与主机关联后,项目将处于活动状态,并且也设置了属于它自己的资源。容器可以作为多个项目模板。反过来,每个项目都具有与其关联的容器。该关联容器将这些项目的共同属性存储在一个中心位置,当创建新项目时,可以参照这些共同属性创建。

三、项目、任务和进程的关系

每次成功登录到项目中都会创建一个新的包含登录进程的任务。任务是工作中的进程的集体表现。每个任务都被自动授予一个任务ID。每个进程都是一个任务的成员,每个任务都与一个项目相关联。此之者的关系如图-1 所示。

图-1项目、任务和进程的关系

所有对进程组的操作,比如信号的发送,任务都是支持的。你可以将任务绑定到processor set或者调度优先权和类。

用下面的方法来创建最终的任务:

使用nwetask和-F选项的命令创建。

所有被项目创建的任务,在使用setproject命令后,就会具有task_final标识。具有这个标识说明任务已经被创建

在项目数据库中设置task.final属性。

四、Solaris 10 项目相关参数

项目标志符是用来鉴别有关任务的管理标志符。具有工作量标志的项目也可以成为用户和组的标识。一个用户或组可以属于一个或多个项目,这些项目可以表现属于它的用户或组的工作量。尽管用户必须属于默认的项目,但用户发布的程序可以关联任何用户所属于的项目。

1.用户默认项目(Projects)介绍

当登录系统的时候,用户必须被分配一个项目,用户自动成为这个项目组的成员。

如果用户项目的属性是在/etc/user_attr扩展用户属性数据库定义的,那么定义的值就是项目的默认属性。

如果在项目数据库中,某个项目下有user.user-id,那么这个用户就是所属项目成员。

如果在项目数据库中,某个项目下有group.group-name,那么这个用户组就是所属项目成员。

如果在项目数据库中,某个项目下有default标志,那么这个项目就是默认项目。

2.用useradd, usermod和passmgmt设置用户属性

可以用下列命令及-k选项在一些本地文件中来设置用户的属性:

passmgmt:修改用户信息。

useradd:给用户设置默认的项目。

usermod:修改用户信息。

这些被修改的本地文件是:

/etc/group

/etc/passwd

/etc/project

/etc/shadow

/etc/user_attr

3.项目数据库介绍

你可以存储项目数据到上面介绍的本地文件、NIS服务或LDAP服务中,访问时都需要权限模块(PAM)的认证。

4.名称服务的设置

项目数据库的管理支持名称服务。名称服务是在/etc/nsswitch.conf中定义的。在默认情况下,文件列表是首先被查询的。当然也可以有其他查询次序。下面是默认次序:

project: files [nis] [ldap]

5.本地文件/etc/project文件的格式

图 -2 是默认的/etc/project文件的内容

图 -2 默认的/etc/project文件的内容

这个/etc/project文件包含一行下列形式的项目信息:

projname:projid:comment:user-list:group-list:attributes

这个信息定义如下:

projname:项目名称。

projid:在系统中项目惟一的号码。

comment:项目的描述。

user-list:用逗号分隔的属于这个项目的用户列表。

group-list:用逗号分隔的属于这个项目的用户组列表。

attributes:用分号分隔的name-value对,name是属性名,value是属性的值。具体见16.3.3节。

五、Solaris 10 项目相关命令列表

项目和任务的一些命令如表-1所示。

-1 项目和任务的一些命令

命 令

描 述

projects

显示项目成员;从项目数据库列出项目;打印给出项目的信息;如果没给出项目名,就列出所有项目信息;使用-l选项打印详细信息

newtask

运行Shell或专门的命令来完成新的任务;也可以被用来改变被任务或项目绑定的进程。使用-F选项可以创建最终的任务

useradd

增加默认的项目定义到本地文件

userdel

从本地文件中删除用户账号

usermod

修改用户登录系统的信息

prstat

使用-J选项,显示当前系统项目和程序的各种统计信息;

使用-T选项,显示当前系统任务和程序的各种统计信息

id

使用-p选项,显示当前项目ID、用户和组的ID

pgrep

使用-J选项,列出当前用户项目ID

使用-T选项,列出当前用户任务ID

pkill

使用-J选项,终结当前ID项目

使用-T选项,终结当前ID任务

projmod

修改本地项目信息。也可以通过编辑/ect/project文件来达到修改项目信息的目的

projdel

删除本地项目信息。也可以通过编辑/ect/project文件来达到删除项目信息的目的

 

六、Solaris 10 项目相关命令实例

1 显示当前用户、用户组ID、任务ID

使用id –p 命令选项即可显示当前用户、用户组ID:
# id -p

uid=0(root) gid=0(root) projid=1(user.root)

2增加一个名为books项目,项目ID为1443,并授权项目给cjh用户。

# projadd -U cjh -p 4113 books

为这个books项目增加一些注释:

# projmod -c ‘Books Project’ booksite

检查项目内容:

# projects –l如图 -3 。

图-3检查项目内容

从图-3 可以看到Books Project注释已经添加。

3删除/etc/project中的项目

# projdel books

同样,查看项目输出,发现books项目已经不存在了。

# projects –l

查看cjh用户的项目,已经变成默认:

# su – cjh

# projects

default

4创建新的任务

首先,以目标项目(books)的成员身份登录,在booksite项目中创建新的任务:

machine% newtask -v -p books

16

上面创建的任务ID为16,并默认放置用户自己的Shell到这个任务中。

5.如何将活动进程移动到新的任务中

(1)使用pgrep命令,查看book_catalog的进程ID:
# pgrep book_catalog
8100

(2)关联这个进程到所属项目名为booksite的新任务中:
#newtask -v -p booksite -c 8100
17

(3)列出新任务中的进程ID:

# pgrep -T 17

8100

现在,book_catalog进程属于项目booksite的ID号为17的新任务。

总结:本文介绍了项目和任务的关系,以及在Solaris 10中,如何使用项目和任务来管理、分配资源。

【编辑推荐】

  1. 甲骨文收购Sun 专题
  2. Solaris要战胜Linux所需要的七大法宝
  3. 焦点分析:Sun Solaris还有市场前景吗?
【责任编辑:翘楚 TEL:(010)68476606】

点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

Absolute C++中文版(原书第2版)  

本书是讲解C++语言程序设计的优秀教程。全书围绕C++语言来组织,开始章节介绍编程的普通感念,接下来详细介绍C++中的继承、多态、异常处理...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊