项目文件是项目信息的本地源。项目文件可以与其他项目源(包括 NIS 映射 project.byname 和 project.bynumber 以及 LDAP 数据库项目)结合使用。程序使用 getprojent(3PROJECT) 例程访问此信息。
/etc/project 可以定义两个项目:database 和 appserver。user 缺省值为 user.database 和 user.appserver。admin 缺省值可以在 user.database 和 user.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:database 和 appserver。database 项目有 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.db 和 geo_db)整合到一个至少由四个 CPU 组成的处理器集中。使用 FSS 调度类。应用程序 app_db 将获得 project.cpu-shares 的 25%。应用程序 geo_db 将获得 project.cpu-shares 的 75%。
编辑 /etc/project 文件。将用户映射到 app_server、app_db、development、tp_engine 和 geo_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