You are on page 1of 23

Inside EMC Documentum

Performance Tuning D6

Who am I?

> > > >

Independent Consultant 8+ years working with Documentum Specialise in performance analysis and tuning Inside Documentum blog
http://robineast.wordpress.com

> Xense Profiler Documentum Performance Profiler


http://www.xense.co.uk/xense_profiler_start.htm

2007 EMC Corporation

Overview

> > > >

Key Architectural Changes in D6 DFC and DMCL DFC Tracing in D6 Performance Tuning with DFC trace

2007 EMC Corporation

Key Architectural Changes in D6

> > > >

Native DMCL replaced with Java DMCL Documentum Foundation Services (DFS) Write-caching in BOCS Loads more

2007 EMC Corporation

A Short History of the DMCL (1)

VB client

D M C L
Database

Work space

D M C L

RPC

Content Server C++


Filestores

Browser

RightSite docbasic

D M C L

2007 EMC Corporation

A Short History of the DMCL (2)

Java Client

DFC Java

DMCL C++

Database

Desktop Client

DFC Java

DMCL C++

RPC

Content Server C++


Filestores

Browser

Webtop/ WDK

DFC Java

DMCL C++

2007 EMC Corporation

D6 - DFC

Database

DFC Client Application

DFC Java

RPC Java

RPC

Content Server C++


Filestores

2007 EMC Corporation

A Short History of the DMCL (3)

Java

DFC Java

Database

DFS

DFC Java

RPC

Content Server C++


Filestores

Browser

WDK/ Webtop

DFC Java

2007 EMC Corporation

DFC Tracing in D6
DMCL Tracing DFC Trace

> > > >

Simple Invocation Flat structure Analysis tools available Problems with tracing in Multi-Threaded environments

> > > >

Many different parameters Stack structure Few tools available Improved tracing facilities in Multi-Threaded environments

2007 EMC Corporation

Trace Invocation - Parameters


> DMCL had 2 parameters (trace_level and trace_file) > DFC has 24 parameters
dfc.tracing.enable=true turns on tracing and is the only required parameter dfc.tracing.user_name_filter Target a specific user dfc.tracing.mode compact or standard dfc.tracing.include_rpc_count and dfc.tracing.include_rpcs dfc.tracing.dir (tracing location) use different directories for different applications

> Other tracing parameters are listed in the Content Server Administration Guide

2007 EMC Corporation

Trace Invocation How-To


> Enter DFC tracing parameters into dfc.properties file
DFC runtime will pick up the new parameters automatically

> Old methods


DA API WDK api tester http://<host>:<port>/<app>/wdk/traceDMCL.jsp

> Resource Management in DA > Dont forget to switch off tracing afterwards!

2007 EMC Corporation

DFC Trace example


7011.547 0.000 N/A [http-8080-Processor25] com.documentum.com.DfClientX@18c022c.getQuery() ==> com.documentum.fc.client.IDfQuery@1dd1a31 7011.547 0.000 N/A [http-8080-Processor25] com.documentum.fc.client.DfQuery@1dd1a31.setDQL("select state_name,type_override_id from dm_policy where r_object_id = '0000000000000000' ") ==> <void> 7011.547 0.000 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.DfAdminSessionManager@1d66aa9.getSession("d6test 2") ==> com.documentum.fc.client.IDfSession@e29127 7011.547 0.000 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.impl.session.SessionHandle@e29127.getSessionId() ==> "s1" 7011.547 0.000 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.impl.session.SessionManager@1d66aa9.release(com. documentum.fc.client.impl.session.StrongSessionHandle@e29127) ==> <void>

2007 EMC Corporation

DFC Trace Example (cont.)


7011.547 1.325 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.DfQuery@1dd1a31.execute(com.documentum.fc.client .impl.session.StrongSessionHandle@6f14d6,0) ==> com.documentum.fc.client.IDfCollection@a7a434 7012.872 0.000 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.impl.collection.CollectionHandle@a7a434.next() ==> false 7012.872 0.000 <dmadmin> [http-8080-Processor25] com.documentum.fc.client.impl.collection.CollectionHandle@a7a434.close() ==> <void>

2007 EMC Corporation

Measuring Performance
When you can measure what you are speaking about, and express it in numbers, you know something about it; but when you cannot measure it, when you cannot express it in numbers, your knowledge is of a meager and unsatisfactory kind; it may be the beginning of knowledge, but you have scarcely, in your thoughts, advanced to the state of science.
Lord Kelvin

2007 EMC Corporation

Analysing DFC Trace


> Even simple tracing scenarios usually produce large trace files > Analysis tools needed > EMC Documentum provided tools > Xense DFC analysis scripts
http://www.xense.co.uk/dfc_profiler_start.htm

> Build you own

2007 EMC Corporation

Xense DFC Trace Analysis Example 1


Top 5 DFC Calls
Duration Secs
67.790

DFC Call
com.documentum.fc.client.DfQuery@1c2f20c.execute

Call Details

select distinct r_object_id, media_type, object_name, r_object_type, publication_name, description, language_translated, document_id from bus_docs where any location in ('GHR014:', 'GHR014', 'GHR000') and r_current_state='2' select distinct r_object_id, media_type, object_name, r_object_type, publication_name, description, language_translated, document_id from bus_docs where any location in ('GHR014:', 'GHR014', 'GHR014:16', 'GHR000') and r_current_state='2' select distinct r_object_id, media_type, object_name, r_object_type, publication_name, description, language_translated, document_id from bus_docs where any location in ('GHR014:', 'GHR014:44', 'GHR014:5', 'GHR014:6', 'GHR000') and r_current_state='2' select distinct r_object_id, media_type, object_name, r_object_type, publication_name, description, language_translated, document_id from bus_docs where any location in ('GHR014:', 'GHR014', 'GHR014:16', 'GHR014:26') and r_current_state='2' select distinct r_object_id, media_type, object_name, r_object_type, publication_name, description, language_translated, document_id from bus_docs where any location in ('GHR014:', 'GHR014:5', 'GHR014:6', 'GHR000') and r_current_state='2'

67.650

com.documentum.fc.client.DfQuery@1cdc507.execute

67.618

com.documentum.fc.client.DfQuery@1c2e31d.execute

67.603

com.documentum.fc.client.DfQuery@5422acd.execute

67.368

com.documentum.fc.client.DfQuery@1b248c8.execute

2007 EMC Corporation

Xense DFC Trace Analysis Example 2


Top 5 DFC Calls
Duration Secs
0.273

DFC Call
com.documentum.fc.client.impl.session.SessionHandle@ 14b9eeb.getFolderByPath() /dmadmin

Call Details

0.234

com.documentum.fc.client.DfAdminSessionManager@1d 66aa9.getSession()

0.184

com.documentum.fc.client.DfQuery@1c2e31d.execute()

select r_object_id, r_version_label, i_position from dm_sysobject (all) where i_chronicle_id (0903303480001116)

0.116

com.documentum.fc.client.impl.collection.CollectionHandl e@1a13047.next()

select r_object_id, r_version_label, i_position from dm_sysobject (all) where i_chronicle_id (0903303480001116)

0.107

com.documentum.fc.client.impl.collection.CollectionHandl e@1a13047.next()

select r_object_id, r_version_label, i_position from dm_sysobject (all) where i_chronicle_id (0903303480001116)

2007 EMC Corporation

Example 2 - continued
Top 5 Queries
Duration Secs 61.233 Rows 30,123 Query select r_object_id, r_version_label, i_position from dm_sysobject (all) where i_chronicle_id = 0903303480001116

0.234

22

select r_object_id, object_name, title, keywords, authors, r_object_type from dm_document where folder(/Business/Florida/Key2) select child_id from dm_relation where parent_id = 0903303480001116 and child_id in (select r_object_id from custom_templates where templ_type = contract_docs)

0.184

0.116

select r_object_id, r_version_label, i_position from custom_templates where i_chronicle_id = 0903303480000c9e select r_folder_path from dm_folder where folder(/Business/Florida/Key2, descend)

0.107

2007 EMC Corporation

Xense DFC Trace Analysis Example 3


Call Profile
Total Duration Frequency Average Duration DFC Call

7.033 5.015 3.123 0.236 0.172 0.109 0.079 0.079 0.047 0.031

1502 500 1502 21 1 12 129 205 1983 1

0.005 0.010 0.002 0.011 0.172 0.009 0.001 0.000 0.000 0.031

com.documentum.fc.client.DfQuery.execute com.documentum.fc.client.DfPersistentObject.fetch com.documentum.fc.client.impl.collection.CollectionHandle.next com.documentum.fc.client.impl.session.SessionHandle.getObject com.documentum.fc.client.impl.session.SessionHandle.getFolderByPath com.documentum.fc.client.impl.session.SessionHandle.getTypeDescription com.documentum.fc.client.impl.session.SessionHandle.getType com.documentum.fc.client.impl.collection.CollectionHandle.next com.documentum.fc.client.DfAdminSessionManager.getSession com.documentum.fc.client.DfSysObject.getFormat

0.016
0.015 0.015 0.000

12
1984 94 3989 n/a

0.001
0.000 0.000

com.documentum.fc.client.impl.validation.Validator.getValueAssistance
com.documentum.fc.client.impl.session.SessionManager.release com.documentum.fc.client.impl.session.SessionHandle.getLoginUserName All Other Functions

2007 EMC Corporation

Xense DFC Trace Analysis Example 4


Call Profile
Total Duration Frequency Average Duration DFC Call

1.290 0.128 0.125 0.102 0.092 0.055 0.000

1 1 32 1 20 23 2123 n/a

1.290 0.128 0.004 0.102 0.001 0.000

com.documentum.operations.DfDeleteOperation.execute com.documentum.fc.client.DfClient.newSessionManager com.documentum.fc.client.DfSessionManager.getSession com.documentum.com.DfClientX.getDeleteOperation com.documentum.operations.DfDeleteOperation.add com.documentum.fc.client.DfSession.getObject All Other Functions

2007 EMC Corporation

Performance Patterns
> Pattern 1: single long-running DFC calls
Tuning to target these calls

> Pattern 2: long-running query


Not just IDfQuery.execute! Tune the query

> Pattern 3: high frequency of DFC calls


Reduce or eliminate repeated DFC calls or queries

> Pattern 4: look elsewhere!

2007 EMC Corporation

Summary
> > > > > Understand the Key Changes DMCL trace is dead Performance tuning with DFC trace Profile your performance Performance Analysis Tools and Performance Patterns

2007 EMC Corporation

Presentations will be available on the Momentum Monaco Website


www.momentumeurope.com