You are on page 1of 23

Abstract

This white paper summarizes best practices and


guidelines for designing and configuring an xCP 2.0
application to get better performance. Intended
audiences include xCP 2.0 designers and administrators.

January 2013



xCP 2.0 PERFORMANCE BEST PRACTICES
AND GUIDELINES

2 xCP 2.0 Performance Best Practices and Guidelines



















Copyright 2013 EMC Corporation. All Rights Reserved.

EMC believes the information in this publication is
accurate as of its publication date. The information is
subject to change without notice.

The information in this publication is provided as is.
EMC Corporation makes no representations or
warranties of any kind with respect to the information in
this publication, and specifically disclaims implied
warranties of merchantability or fitness for a particular
purpose.

Use, copying, and distribution of any EMC software
described in this publication requires an applicable
software license.

For the most up-to-date listing of EMC product names,
see EMC Corporation Trademarks on EMC.com.




3 xCP 2.0 Performance Best Practices and Guidelines
Table of Contents
Executive Summary ............................................................................................. 5
Audience .............................................................................................................. 5
Abbreviation ........................................................................................................ 5
Background.......................................................................................................... 5
Architecture and Scalability ............................................................................... 6
Design Time .......................................................................................................... 6
General Recommendations ......................................................................................... 7
Limit Business Object Hierarchy Depth .................................................................... 7
Limit Number of Items in a Folder ............................................................................. 7
Limit Number of Grids on a Page ............................................................................. 7
Minimize Nesting of Column Boxes .......................................................................... 7
Minimize Use of Expression on Tab Group ............................................................... 8
Set Height to Tree or Tab Group ............................................................................... 8
Data Services .................................................................................................................. 8
Avoid triggering multiple queries ............................................................................. 8
Avoid Operators Contains, "Ends with" or "Does not contain" .......................... 8
Limit Number of Sortable Output Columns Full-Text ........................................... 9
Avoid Operators "Does not contain", "!=" and "Ends with" Full-Text .................. 9
Use Selective Criterion Full-Text ............................................................................ 10
Avoid Fuzzy Search Full-Text ................................................................................. 10
Discovered Metadata ................................................................................................. 10
Limit Discovered Metadata Usage ........................................................................ 11
Avoid Adding Discovered Metadata of Type Entity Detection ........................ 11
Case and Process (BPM) ............................................................................................. 11
Use package instead of relationship to access BO in task-list query ................ 11
Use business object package to encapsulate many process variables .......... 12
Viewer ............................................................................................................................ 12
Turn Off Thumbnails .................................................................................................. 12
Designer ......................................................................................................................... 12
Limit Number of Open Pages ................................................................................. 12
Deployment Time............................................................................................... 13
Use tomcat.util.scan.DefaultJarScanner.jarsToSkip to exclude jars from
annotation scanning ............................................................................................... 13
xPlore .............................................................................................................................. 13
Use Small Repository at Design Time ...................................................................... 13
Bypass Index Rebuilding .......................................................................................... 13

4 xCP 2.0 Performance Best Practices and Guidelines
BAM ................................................................................................................................ 14
Use Different MQ Creation Strategies.................................................................... 14
Create Multiple Pipe Jobs ....................................................................................... 14
Move Runtime jars to bam-server.war .................................................................. 14
Content Transformation Services ............................................................................... 15
Minimize Storage Requirement .............................................................................. 15
Runtime ............................................................................................................... 15
Database Tuning .......................................................................................................... 15
General Guidelines .................................................................................................. 15
Sorting with Business Object .................................................................................... 16
Filtering with Business Object .................................................................................. 16
Recommended Tunings with Oracle ..................................................................... 16
Recommended Tunings with SQL Server 2008 ..................................................... 16
Content Server .............................................................................................................. 17
Use DM_NO_EXTRA_JOINS ....................................................................................... 17
Use Group Address to Reduce Mail Sending ....................................................... 17
Case and Process (BPM) ............................................................................................. 18
Oracle Tuning for Complex Task-List Query .......................................................... 18
Business Activity Monitor .............................................................................................. 18
Optimizing Historical Query Aggregation Frequency ......................................... 18
Content Transformation Services ............................................................................... 19
CTS JVM Tuning ......................................................................................................... 19
Change MaxParallelDecoding .............................................................................. 20
Tune Asynchronous CTS Thread Model ................................................................. 20
Tune Synchronous CTS Thread Model ................................................................... 20
Use ACS to Download Content from Content Server ......................................... 20
Viewer ............................................................................................................................ 21
Use Dedicated CTS Instances for Real-Time Requests ........................................ 21
Content Intelligence Services ..................................................................................... 21
Tune CIS ..................................................................................................................... 21
Do Not Allow a backlog of CIS Requests .............................................................. 22
Search ............................................................................................................................ 22
Use Debug Flag to Trouble-Shoot Performance Issue ......................................... 22
Conclusion ......................................................................................................... 23



5 xCP 2.0 Performance Best Practices and Guidelines
Executive Summary
This document summarizes performance best practices and guidelines
based on internal performance studies using xCP 2.0.
The document is divided into the three major phases in the lifecycle of an
xCP application: design, deployment, and runtime.
Audience
This white paper is intended for xCP 2.0 designers and administrators.
Abbreviation
The following list contains terms, abbreviations, and acronyms that appear
in the white paper.
ACS Accelerated Content Services
BAM Business Activity Monitor
BE Business Event
BO Business Object
BPM Business Process Manager
CS Content Server
CIS Content Intelligence Services
CTS Content Transformation Services
DM Discovered Metadata
MQ Message Queue
Background
xCP 2.0 is a platform used to develop end user applications. The design,
configuration, and tuning of the system impact the performance of the
end user application. This white paper provides best practices to follow
and guidelines to consider when you develop an xCP 2.0 application. The
content for this white paper is taken from a series of internal performance
and scalability studies using xCP 2.0 with Documentum 7.0.



6 xCP 2.0 Performance Best Practices and Guidelines
Architecture and Scalability
An xCP application can involve multiple products and components. To
ensure support for a large number of concurrent users, an xCP application
can be deployed with scalability provided for different layers.
The following diagram illustrates a typical deployment where the system
uses more than one instance for each Documentum product. You can
also deploy multiple database instances (for example, Oracle RAD) at the
database layer.


The diagram above illustrates how the BAM server can be deployed in a
clustered environment to provide high availability for end user report
viewing. The EMC Documentum xCelerated Composition Platform 2.0
Deployment Guide provides guidelines on deploying BAM in a clustered
environment.
Design Time
You should carefully plan the design of your xCP application because
there are limitations on the ability to adjust it later. You should make critical
decisions when you are designing the system that impact how the
application performs and scales during runtime.


7 xCP 2.0 Performance Best Practices and Guidelines
General Recommendations
Limit Business Object Hierarchy Depth
A business object type can be a subtype of dm_sysobject or another
business object type. Each additional level results in additional joins when a
database query includes the business objects. Consequently, the query
takes more time to execute and negatively impacts application
performance.
Limit the BO hierarchy to three levels, which includes the dm_sysobject
level.
Limit Number of Items in a Folder
System performance is negatively impacted when an end user navigates
to a folder that contains a large number of items. This occurs even when
the application includes pagination.
For better performance limit the number of items/objects in a folder to
2000.
Placing a limit on the number of items in a folder may seem like a runtime
issue only. However, a decision made during the design of the application
could make it impossible to limit the number of items in a folder during
runtime.
For example, you might create a folder and for each new customer, a sub-
folder is created in the folder to store customer documents and artifacts.
When your business expands, you might end up with a large number of
customers and navigating to that folder might not have a satisfactory
performance.
Limit Number of Grids on a Page
A data grid is an important widget often used in an xCP application.
However, the display of data grids can take time, particularly when the
end user uses Internet Explorer. For better performance, it is recommended
that you limit the number of grids on a page.
An alternative is to use tabs so that each page can be loaded and
displayed quickly.
Minimize Nesting of Column Boxes
The nesting of column boxes results in a DOM (Document Object Model)
nesting and more JavaScript executions.

8 xCP 2.0 Performance Best Practices and Guidelines
Minimize Use of Expression on Tab Group
When you bind a tab to an expression, all of the tab contents in the
containing tab group are rendered when the page loads. Without
expression, only the contents of the first tab in the tab group are rendered
when the page loads.
Set Height to Tree or Tab Group
Specifying the height of a tree or a tab group can significantly improve the
layout performance.
Data Services
Avoid triggering multiple queries
When you select On page load or When an input value changes the
system could trigger queries unnecessarily, resulting in a greater load on
the server.
For example, when you select When an input value changes, and an end
user types in a word of four letters for search, the system can trigger the
same query four times.
This guideline applies to real-time, historical, full-text, and task-list queries.


Avoid Operators Contains, "Ends with" or "Does not contain"
Do not use the operators Contains, Ends with, or Does not contain when
defining a user input for a real-time, historical, or task-list query.
These operators make the database query non-sargable and results in
poor system performance.

9 xCP 2.0 Performance Best Practices and Guidelines

Limit Number of Sortable Output Columns Full-Text
Do not enable sorting for all columns of a full-text search. Enable sorting
only for the columns that provide the most value to the end user. The
system creates an index in xPlore for each attribute enabled for sorting. This
increases the size of the index which can negatively impact system
performance.

Avoid Operators "Does not contain", "!=" and "Ends with" Full-Text
Do not use the Does not contain, !=, or Ends with negative operators when
configuring a user input for a full-text search. Queries that contain these
operators can impact system performance.

10 xCP 2.0 Performance Best Practices and Guidelines
Use Selective Criterion Full-Text
Add user inputs to a full-text query to make it more selective. The system
processes selective queries more efficiently than unselective queries. When
you configure an unselective query, especially those issued by an end user
without sufficient privileges, system performance can be impacted.
xPlore performs a security check when an end user issues a query. It takes
more system resources to complete a security check for users that do not
have sufficient privileges.
Avoid Fuzzy Search Full-Text
Fuzzy search is a term to describe including variation, misspelling, and
typos in your full-time search. You should use this type of search sparingly
because it uses more processing power to generate the matches.
By default this option is not enabled.


Discovered Metadata
The CIS server computes metadata values by analyzing the content of an
object. This computation is performed asynchronously. The volume and
format of the content can impact the amount of CPU resources needed
to perform the computation.
The following table provides example performance metrics for the entity
detection and the categorization and pattern detection processing types:
Type of
Processing
Discovered Metadata Throughput
Example with
Documents of 4KB
Entity detection
Fax number
Organization
People
Phone number
Place
postal address
10 MB/hour
2,500
documents/hour
Categorization
&
Pattern detection
Business terms (USA)
Science and Engineering
Email address
SSN (USA)
URL
1 GB/hour
250,000
documents/hour

11 xCP 2.0 Performance Best Practices and Guidelines
This example shows that entity detection is less efficient than
categorization and pattern detection.
Limit Discovered Metadata Usage
Do not add discovered metadata to a content model unless it is used by
the end user. This guideline is particularly important for entity detection
discovered metadata.
Avoid Adding Discovered Metadata of Type Entity Detection
The cost of adding a DM is a function of the DM type.
Adding the first Categorization DM has a low impact on system
performance. The impact of adding a second Categorization DM is lower
than the first DM and is almost unnoticeable.
Adding the first Pattern detection DM has a low impact on system
performance. The impact of adding a second Pattern detection DM has
the same impact as adding the first Pattern detection DM.
Adding the first Entity detection DM has a high impact on system
performance. The impact of adding a second Entity detection DM does
not have any impact on the current Entity detector. It does not cost more
to have many entity detection DM computed for a Content Model when
compared to a single entity detection DM.
The following table summarizes the differences:
Type of Processing
Cost of First Discovered
Metadata
Cost of Additional Discovered
Metadata
Entity detection High Unnoticeable
Categorization Low Much lower
Pattern detection Low Low
Case and Process (BPM)
Use package instead of relationship to access BO in task-list query
You introduce additional table joins when you configure a task-list query
that includes attributes of a non-package business object which is
accessed through a relationship with another type of business object.
You can improve system performance by adding the related business
object to a package so that the task-list query can access its attributes
directly.


12 xCP 2.0 Performance Best Practices and Guidelines
Use business object package to encapsulate many process variables
The performance of a task page slows when a process contains multiple
packages and process variables. Using a single business object to replace
multiple process variables can improve task page performance, especially
when there are a large number of process variables.
The cost in system resources to save or update a package is comparable
to the cost for a process variable. A single business object can contain
multiple attributes.
Viewer
Turn Off Thumbnails
If an end user views documents that contain mostly text (for example,
Word or PDF documents), clear the Display thumbnail navigator checkbox.
Displaying a thumbnail for a text page does not add value to the end user
and because the system downloads thumbnails, system performance can
be negatively impacted. The impact can be significant under WAN
conditions.
However, it is important to note that clearing this option also turns off the
page modification feature.

Designer
Limit Number of Open Pages
Limit the number of pages open in xCP Designer. Depending on native
memory and java heap settings you could experience performance issues
with xCP Designer when you keep a large number of pages open.
Native memory: Each page consumes native memory and when
you open many pages the system may run short of memory.
Java heap: Each page consumes memory in the Java heap and
with many open pages the JVM can spend much time doing
garbage collection. xCP Designer is a 32-bit application that limits
the maximum heap size.

13 xCP 2.0 Performance Best Practices and Guidelines
In addition, the number of pages that can be opened without impacting
performance is a function of the complexity of the pages.
Deployment Time
Use tomcat.util.scan.DefaultJarScanner.jarsToSkip to exclude jars from
annotation scanning
Tomcat 7 includes support for Servlet 3.0 annotations which require more
heap memory and results in a longer start up time for the server because
of higher heap usage and additional processing.
xCP 2.0 does not require support for annotations. You can configure
Tomcat to exclude annotation JARs from being scanned during start up.
The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide
provides instructions on how to exclude JARs from being scanned.
xPlore
Deploying or redeploying an xCP application could cause the xPlore index
to be rebuilt. Rebuilding the xPlore index is a synchronous operation that
negatively impacts the overall deployment performance if the index is
large.
Based on EMC internal tests, the throughput is 10-30 documents per
second with small to medium document size.
Use Small Repository at Design Time
This is the preferred way before the deployment to the production
environment. For example, a repository with 1000 documents can be used
during the design time since the purpose at the design time is to ensure the
correctness of the application.
Bypass Index Rebuilding
You can use xMS Server to deploy an xCP application to bypass xPlore
index rebuilding. However you cannot bypass index rebuilding when you
use xCP Designer to deploy an application.
1. Use xCP Designer to package the WAR and config.xml files.
2. Use xMS Server to deploy an application and specify -xploreindexing
false during deployment

For example:

14 xCP 2.0 Performance Best Practices and Guidelines
xms>deploy-xcp-application --war-file
C:\package\Casual_and_Property_Insurance.war --
configuration-file
C:\package\Casual_and_Property_Insurance_capins_1.0.0_config
.xml --environment C24-DIY --xploreindexing false

Once deployed, use the xPlore admin console to rebuild the index. If the
index is not rebuilt, the system does not make changes in the Full-Text
search model available to end users at runtime. For example, if you add a
facet to an application and xPlore does not rebuild the index, the end user
does not see the facet.
BAM
Use Different MQ Creation Strategies

Content Server message queues hold business event data generated by the
runtime application. The message queue strategy determines the number of
message queues the system creates. The strategy correlates with system
performance. Generally, the more message queues the system creates the better
the BAM server performs.

The EMC Documentum xCelerated Composition Platform 2.0 Deployment Guide
provides instructions.
Create Multiple Pipe Jobs

The BAM server runs one pipe job for each message queue, taking data from the
queue and inserting it into the BAM database. If you have a backlog of data you
can add pipe jobs to a message queue as a way to improve system performance.
The EMC Documentum xCelerated Composition Platform 2.0 Deployment
Guide provides instructions.
Move Runtime jars to bam-server.war
When you deploy xCP, the runtime JAR files are placed in
CATALINA_BASE/lib. You can improve system performance by moving the
runtime JAR files to CATALINA_BASE/webapps/bam-server/WEB-INF/lib.
BAM throughput can be improved by 50-100%.
The EMC Documentum xCelerated Composition Platform 2.0 Deployment
Guide provides more information.

15 xCP 2.0 Performance Best Practices and Guidelines
Content Transformation Services
Minimize Storage Requirement
The cost to store renditions and storyboards can be up to five times greater
than the cost for the content. Storyboards are required when using xCP
Viewer. Storyboards are not required for Daeja Viewer.
You can specify when storyboards are not generated, for example, for
Microsoft Excel documents. Set richmedia_enabled to 0 for the
excel12book format:
update dm_format objects set richmedia_enabled=0 where
name='excel12book'
Runtime
Database Tuning
General Guidelines
In general, database tuning is expected in order to get satisfactory
performance.
Index creation
o This is application and data model specific and not all the
required indexes are created out of the box.
o For example, 24 indexes were created for the reference
application used during the internal performance study.
Statistics gathering
o Gathering statistics involves a number of options and
configuration parameters. It is the responsibility of the DBA to
determine the best options based on the application and how
it is used.
o For Oracle:
http://docs.oracle.com/cd/E11882_01/server.112/e16638/stats
.htm#PFGRF003
o For SQL Server 2008: http://msdn.microsoft.com/en-
us/library/dd535534(v=sql.100).aspx
(Oracle) SQL Baseline or SQL Profile
o Using hints might be needed to influence CBO (Cost Based
Optimizer).

16 xCP 2.0 Performance Best Practices and Guidelines
o It is found that SQL Baseline/Profile is efficient if the
performance of a query can be improved by passing a hint
(without query structure change).
Sorting with Business Object
The system does not automatically create indexes for each business object
type. If an end user experiences inadequate system performance while
sorting the results of a real-time or task-list query, manually create an index
to help resolve the issue. For example:
Business object: Person with attribute last_name
Enable sorting for last-name with a query
Create an index on (last_name, r_object_id)
For full-text queries the system automatically creates an index in xPlore.
Filtering with Business Object
When an attribute is added to a user input, creating a corresponding
index can improve system performance. . This is similar to the case above
where manually creating an index for sorting can help system
performance.
Recommended Tunings with Oracle
Set cursor_sharing=FORCE
Consider turning off auditing or writing database audit records to OS
with large file sizes.
The following is not a general recommendation but it can be tried if
the execution plan for some queries is not optimal.
optimizer_index_caching=95
optimizer_index_cost_adj=5
Recommended Tunings with SQL Server 2008
Parameterization = forced
Consider setting "Maximum degree of parallelism" if the host has
more than 4 CPUs
Enable Snapshot Isolation
ALTER DATABASE MyDatabase SET ALLOW_SNAPSHOT_ISOLATION ON
ALTER DATABASE MyDatabase SET READ_COMMITTED_SNAPSHOT ON
Set "maximum server memory" if the SQL Server is deployed on a
shared host

17 xCP 2.0 Performance Best Practices and Guidelines
o SQL Server would use as much memory as possible and it may
result in poor performance with other components/products
deployed on the same machine.
Auto Create Statistics = false
Auto Update Statistics = true
Content Server
Use DM_NO_EXTRA_JOINS
When views are created, extra/redundant join predicates are added by
default.
It was to help DB optimizer to choose the best execution plan based
on Documentum's past performance investigation.
However, it is found that with Oracle 11g, the redundant join predicates
present challenges to Oracle optimizer and can result in much worse
performance because the Oracle optimizer might choose a sub-optimal
execution plan.
A support case (Bug 14033569) has been opened with Oracle.
It is recommended to use DM_NO_EXTRA_JOINS to eliminate redundant
join predicates.
Refer to Content Server 7.0 Administration and Configuration Guide for
detail.
Use Group Address to Reduce Mail Sending
By default, the system sends an event notification email to each member
of a workqueue group. This setting places a load on the method server
and can impact system performance. Set the use_group_address
parameter to 1 so that the system sends an event notification email to the
address of the group instead of each member of the group.
If you are not using email, turn off mail sending:
1. Open server.ini.
2. Locate the [SERVER_STARTUP] section.
3. Set mail_notification = false.
These two guidelines are helpful when troubleshooting
DM_SERVER_E_NO_MTHD_BUF issues.
The EMC Documentum Content Server 7.0 Administration and
Configuration Guide provides more information on email settings.

18 xCP 2.0 Performance Best Practices and Guidelines
Case and Process (BPM)
Oracle Tuning for Complex Task-List Query
System response time can be slow when processing a complex task-list
query. For example, response time slows when a task-list query includes the
attributes of a non-package BO accessed through a relationship.
Use the following parameters to improve query performance:
optimizer_index_caching=95
optimizer_index_cost_adj=5
These parameters are global and the impact on the performance of other
types of queries is not clear.
Test and validate this setting in a test environment before using it in a
production environment.
Business Activity Monitor
Optimizing Historical Query Aggregation Frequency
The system aggregates data for all historical queries every 5 minutes. If too
many aggregation jobs run simultaneously, system performance suffers
and charts do not load quickly. The following figure shows spikes in system
CPU usage occurring in 5-minute intervals as the number of historical
queries increases:

To avoid future performance issues, you can adjust two aspects of
historical query aggregation jobs: LAST_RUN and STEP_SIZE.

LAST_RUN is the time an aggregation job starts. By default, the system starts
all aggregation jobs at the same time, for example, 10:20 a.m., 10:25 a.m.,

19 xCP 2.0 Performance Best Practices and Guidelines
10:30 a.m., and so on. To enhance system performance, stagger
aggregation jobs so they begin at different times, which can decrease the
load on the CPU. The system accepts LAST_RUN values expressed in whole
minutes. For example, use a LAST_RUN value of 1, 2, 3, and so on. If CPU
usage is still too high, adjust STEP_SIZE.
STEP_SIZE controls how often an aggregation job runs. The default STEP_SIZE
is 5 minutes, which means the system starts aggregation jobs every 5
minutes. You can increase or decrease STEP_SIZE. Decreasing STEP_SIZE
can enhance system performance because the system aggregates fewer
rows of data. The system accepts STEP_SIZE values as whole minutes
expressed in seconds. For example, the system accepts 60, 120, and 180,
but does not accept 90, 150, or 210.
Adjust LAST_RUN and STEP_SIZE by running scripts against the BAM
database.
In the following example, the script adjusts LAST_RUN so the aggregation
jobs for three historical queries start 1 minute later than the rest of the
aggregation jobs.
UPDATE BAM_S_JOBS SET LAST_RUN=DATEADD(mi,1,LAST_RUN) WHERE NAME in
(QueryLabel_1,QueryLabel_2,QueryLabel_3)
In the following example, the script adjusts LAST_RUN so the aggregation
jobs for two historical queries run 2 minutes before the rest of the
aggregation jobs.
UPDATE BAM_S_JOBS SET LAST_RUN=DATEADD(mi,-2,LAST_RUN) WHERE NAME
in QueryLabel_4,QueryLabel_5)
In the following example, the script changes step_size to 60 seconds for all
historical queries with Customer in the name.
UPDATE BAM_S_JOBS SET STEP_SIZE=60 WHERE NAME like
Customer%
This information also appears in the xCP Designer online help
documentation.
Content Transformation Services
CTS JVM Tuning

Depending on the configuration of the system and the required throughput, JVM
memory options should be changed accordingly.
The Windows registry is used for CTS JVM configuration and the location is
at HKEY_LOCAL_MACHINE->SYSTEM->CurrentControlSet->services-
>DocumentumCTS->Parameters->AppParameters.

20 xCP 2.0 Performance Best Practices and Guidelines
It is also recommended to disable explicit GC by using the JVM Option -
XX:+DisableExplicitGC.
Change MaxParallelDecoding
On a powerful machine (e.g. with 8 cores or plus), setting
MaxParallelDecoding to a large value can significantly improve the CTS
throughput.
pdfstoryboard.xml
<MaxParallelDecoding>8</MaxParallelDecoding>
doc2.xml
<MaxParallelDecoding>8</MaxParallelDecoding>
Tune Asynchronous CTS Thread Model
To tune the asynchronous thread model update the CTSServerService.xml
file. For example:
<MaxTaskThreadJobTime>30</MaxTaskThreadJobTime>
<MonitorThreadSleepTime>20</MonitorThreadSleepTime>
<CTSServer AttributeName="queueInterval" AttributeValue="5"/>
<CTSServer AttributeName="maxThreads" AttributeValue="30"/>
<CTSServer AttributeName="maxQueueItemsToSignOff" AttributeValue="8"/>
<CTSServer AttributeName="thresholdForQueueItemsToSignOff"
AttributeValue="8"/>
Tune Synchronous CTS Thread Model
To tune the synchronous thread model update the WebServerService.xml
file. For example:
<ServerProperty Key="maxWorkingThreads" Description="Number of working
threads" Type="Integer" Value="30"/>
<ServerProperty Key="thresholdForSignOff" Description="Threshold for
maxium number of requests signed off" Type="Integer" Value="30"/>
<ServerProperty Key="TPMMonitorMaxTaskJobTime" Description="Maxium
allowed task running time (minutes)" Type="Integer" Value="30"/>
<ServerProperty Key="TPMMonitorSleepTime" Description="Sleep time for
tasks monitor (minutes)" Type="Integer" Value="20"/>
Use ACS to Download Content from Content Server
Enable content transfer using ACS to improve the content transfer time.
1. Use DA to create a network location ID. For example, ctsn1.
2. Update the CTSServerService.xml file with the network Location ID.
<BocsConfig allowBocsTransfer="true" allowSurrogateTransfer="true"
networkLocationId="ctsnl" preferAcsTransfer="true"
processOnlyParked="false"/>
<CTSServer AttributeName="networkLocationId"
AttributeValue="ctsnl"/>

21 xCP 2.0 Performance Best Practices and Guidelines
<CTSServer AttributeName="preferAcsTransfer"
AttributeValue="true"/>
3. Restart CTS.
Viewer
Use Dedicated CTS Instances for Real-Time Requests
Configure one or more CTS instances to process real-time requests.
1. Access each machine that sends real-time requests.
2. Edit the preferences.xml file. For example:
<ServerProperty Key="AvailabilityWait" Description="Number
of seconds to wait for rechecking availability"
Value="4"/>
<ServerProperty Key="CTS_SkipList" Description=" list of
cts instances (semicolon separated) to skip (scalability)"
Value=A-CTS1;A-CTS2"/>
3. Edit the CTSServerService.xml file for each real-time instance to ensure
that a dedicated real-time CTS instance is not processing asynchronous
requests. For example:
<QueueProcessorContext DocbaseName="xcprepo">
<CTSServer AttributeName="queueItemName"
AttributeValue="dm_mediaserver_temp"/>
<QueueProcessorContext DocbaseName="xcprepo">
<CTSServer AttributeName="queueItemName"
AttributeValue="dm_autorender_win31_temp"/>
Content Intelligence Services
Tune CIS
There are two major tuning options with CIS:
cis.server.execution.threads
cis.entity.luxid.annotation_server.cpu
The default value of cis.entity.luxid.annotation_server.cpu is 1
and it is usually too small in a production environment.
It is recommended to start with
cis.entity.luxid.annotation_server.cpu set to the total number of
CPUs of all Luxid nodes.
cis.server.execution.threads should be set to a value sufficiently
large so that each Luxid node does not stay idle while there are
documents to process.

22 xCP 2.0 Performance Best Practices and Guidelines
Usually, the processing speed of the CIS server
(Categorization/Pattern Detection) is much faster than the Luxid
server (Entity Detection).
Tune by starting with cis.server.execution.threads = 1
Do Not Allow a backlog of CIS Requests
If a newly created document/object is processed by CIS after it is
processed by xPlore, xPlore trigger a new processing. It is important to
ensure that CIS can process newly created documents/objects with a
short delay.
Search
Use Debug Flag to Trouble-Shoot Performance Issue
The debug mode for query data services can be activated at runtime by
adding the debug parameter in the URL calling the services. The debug
information is useful to troubleshoot issues such as performance issues. It
allows you to check results, execution events, and the query sent to the
source.
The following example shows how to add the debug parameter to the
URL:
http://<host>:<port>/<application_name>/application/documents?type=ft_do
c&q=active&page=1&start=0&limit=10&debug
The following table shows the output from the debug operation. Search for
the statistics section which includes four entries all prefixed with JAMon
Label:
Step Real-Time Full-Text
1 RealtimeAttributeMapperFactory.createMapper DfcAttributeMapperFactory.createMapper
2 RealtimeQueryAdapter.adapt DfcSearchQueryAdapter.adapt
3 RealtimeQueryExecutor.execute DfcSearchExecutor.execute
4 RealtimeResultAdapter.adapt DfcSearchResultAdapter.adapt
Each entry represents a step in the service call execution.
Steps 1 and 2: The application server prepares and builds the query
Step 3: The Content Server database or xPlore execute the query
Step 4: The application server processes the results
The system calculates the following metrics for each step:
"executor":"JAMon Label=DfcSearchExecutor.execute, Units=ms.:
(LastValue=969.0, Hits=59.0, Avg=777.8135593220339, Total=45891.0,
Min=217.0, Max=8952.0, Active=0.0, Avg Active=1.0, Max Active=1.0, First
Access=Tue Oct 30 01:33:43 PDT 2012, Last Access=Wed Oct 31 05:52:21 PDT
2012)"

23 xCP 2.0 Performance Best Practices and Guidelines
In this example the execute query step took 969ms (LastValue) and there
were 59 query executions (Hits) since application server startup.
Label Description
LastValue Duration (ms) of this step for the current execution
Hits Count of executions since application server startup
Avg/Total/Min/Max
Avg/Total/Min/Max duration of this step since application server
startup
The EMC Documentum xCelerated Composition Platform 2.0 Deployment
Guide provides more information.
Conclusion
xCP is not an application but a composition platform for developing
applications. Performance should be considered in all the three major
phases: design, deployment and runtime. In particular, tuning is generally
required at the database level in order to get satisfactory performance.
The whitepaper is written based on findings and experience gained
through EMCs internal performance study. Most recommendations in the
whitepaper are not application specific and depending on how an
application is designed and used, additional tuning is required on case-by-
case basis.
In general, each recommendation should be taken within a context.
Depending on the use case and the data volume in a repository, the
performance might be satisfactory without following the
recommendations. For example, you can use fuzzy search without
impacting much the performance if the data volume is small.
Performance tuning and optimization is a continuous process and it is the
same case with xCP 2.0. Many discussions and articles are expected to be
posted on EDN (EMC Developer Network) on solutions to address common
or specific xCP 2.0 performance issues. We encourage you to use EDN as a
first step when you encounter a performance issue.