Solaris 10 资源管理器开发者指南

/etc/project 项目文件

项目文件是项目信息的本地源。项目文件可以与其他项目源(包括 NIS 映射 project.bynameproject.bynumber 以及 LDAP 数据库项目)结合使用。程序使用 getprojent(3PROJECT) 例程访问此信息。

定义两个项目

/etc/project 可以定义两个项目:databaseappserveruser 缺省值为 user.databaseuser.appserveradmin 缺省值可以在 user.databaseuser.appserver 之间切换。

hostname# cat /etc/project

.

.

.

user.database:2001:Database backend:admin::

user.appserver:2002:Application Server frontend:admin::

.

.

配置资源控制

/etc/project 文件提供了应用程序的资源控制。

hostname# cat /etc/project

.

.

.

development:2003:Developers:::task.ax-lwps=(privileged,10,deny);

process.max-addressspace=(privileged,209715200,deny)

.

.

配置资源池

/etc/project 文件提供了应用程序的资源池。

hostname# cat /etc/project

.

.

.

batch:2001:Batch project:::project.pool=batch_pool

process:2002:Process control:::project.pool=process_pool

.

.

.

为项目配置 FSS project.cpu-shares

为以下两个项目设置 FSS:databaseappserverdatabase 项目有 20 个 CPU 份额。appserver 项目有 10 个 CPU 份额。

hostname# cat /etc/project

.

.

.

user.database:2001:database backend:admin::project.cpu-shares=(privileged,

     20,deny)

user.appserver:2002:Application Server frontend:admin::project.cpu-shares=

     (privileged,10,deny)

.

.

.

注 –

“20,deny”和“(privileged,”前面行中的换行符在 /etc/project 文件中是无效的。此处显示的换行符只是为了方便示例在打印页面或显示页面上显示。/etc/project 文件中的每一项都必须占一行。


可以将 FSS 作为缺省的用户空间调度类进行分配。但是,在没有分配份额的情况下,调度类的行为与分时类的行为相同,因为所有的线程都存在于一个线程组中。可以采用一种特定方式将份额分配给运行的进程,而且还可以将其定义为项目属性。

配置五个具备不同特征的应用程序

以下示例配置了五个具备不同特征的应用程序。

表 8–1 目标应用程序和特征

应用程序类型和名称 

特征 

应用程序服务器,app_server

CPU 超过 2 个时,可伸缩性会降低。将包含两个 CPU 的处理器集分配给 app_server。使用 TS 调度类。

数据库实例,app_db

大量多线程。使用 FSS 调度类。 

测试和开发,development

基于 Motif。执行未经测试的代码。交互式调度类可以确保用户界面的响应性。使用 process.max-address-space 强加内存限制并使对整体运行情况的影响降至最低程度。

事务处理引擎,tp_engine

响应时间极为重要。分配一个至少由两个 CPU 组成的专用集,以确保响应时间保持在最低程度。使用分时调度类。 

独立数据库实例,geo_db

大量多线程。为多个时区提供服务。使用 FSS 调度类。 


注 –

将数据库应用程序(app.dbgeo_db)整合到一个至少由四个 CPU 组成的处理器集中。使用 FSS 调度类。应用程序 app_db 将获得 project.cpu-shares 的 25%。应用程序 geo_db 将获得 project.cpu-shares 的 75%。


编辑 /etc/project 文件。将用户映射到 app_serverapp_dbdevelopmenttp_enginegeo_db 项目项的资源池。

hostname# cat /etc/project

.

.

.

user.app_server:2001:Production Application Server::

     project.pool=appserver_pool

user.app_db:2002:App Server DB:::project.pool=db_pool,

     project.cpu-shares=(privileged,1,deny)

development:2003:Test and delopment::staff:project.pool=dev.pool,

     process.max-addressspace=(privileged,536870912,deny)

user.tp_engine:Transaction Engine:::project.pool=tp_pool

user.geo_db:EDI DB:::project.pool=db_pool;

     project.cpu-shares=(privileged,3,deny)

注 –

以“project.pool”、“project.cpu-shares=”、“process.max-addressspace”和“project.cpu-shares=”开始的行中的换行符在项目文件中是无效的。此处显示的换行符只是为了方便示例在打印页面或显示页面上显示。每一项都必须占用一行且必须仅占用一行。


为资源池创建 pool.host 脚本并添加项。

hostname# cat pool.host

create system host

create pset dev_pset (unit pset.max = 2)

create pset tp_pset (unit pset.min = 2)

create pset db_pset (unit pset.min = 4; uint pset.max = 6)

create pset app_pset (unit pset.min = 1; uint pset.max = 2)

create pool dev_pool (string pool.scheduler="IA")

create pool appserver_pool (string pool.scheduler="TS")

create pool db_pool (string pool.scheduler="FSS")

create pool tp_pool (string pool.scheduler="TS")

associate pool pool_default (pset pset_default)

associate pool dev_pool (pset dev_pset)

associate pool pool appserver_pool (pset app_pset)

associate pool db_pool (pset db_pset)

associate pool tp_pool (pset tp_pset)

注 –

以“boolean”开始的行中的换行符在 pool.host 文件中是无效的。此处显示的换行符只是为了方便示例在打印页面或显示页面上显示。每一项都必须占用一行且必须仅占用一行。


运行 pool.host 脚本并修改 pool.host 文件中指定的配置。

hostname# poolcfg —f pool.host

读取 pool.host 资源池配置文件并初始化系统上的资源池。

hostname# pooladm —c