Post on 06-Feb-2016
description
Inside EMC Documentum
Performance Tuning D6
© 2007 EMC Corporation
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)
Content ServerC++
VB client
Workspace
RightSitedocbasic
Browser
Database
Filestores
RPC
DMCL
DMCL
DMCL
© 2007 EMC Corporation
A Short History of the DMCL (2)
Content ServerC++
Java Client
Desktop Client
Webtop/WDK
Browser
Database
Filestores
RPC
DMCLC++
DMCLC++
DMCLC++
DFCJava
DFCJava
DFCJava
© 2007 EMC Corporation
D6 - DFC
DFCJava
Content ServerC++
Database
Filestores
RPCDFC Client Application
RPCJava
© 2007 EMC Corporation
A Short History of the DMCL (3)
Content ServerC++
Java
DFS
WDK/Webtop
Browser
Database
Filestores
RPC
DFCJava
DFCJava
DFCJava
© 2007 EMC Corporation
DFC Tracing in D6
DMCL Tracing
> Simple Invocation
> ‘Flat’ structure
> Analysis tools available
> Problems with tracing in Multi-Threaded environments
DFC Trace
> 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_filterTarget a specific user
– dfc.tracing.modecompact 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
> Don’t 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("d6test2") ==> 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
DurationSecs
DFC Call Call Details
67.790 com.documentum.fc.client.DfQuery@1c2f20c.execute 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'
67.650 com.documentum.fc.client.DfQuery@1cdc507.execute 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'
67.618 com.documentum.fc.client.DfQuery@1c2e31d.execute 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'
67.603 com.documentum.fc.client.DfQuery@5422acd.execute 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'
67.368 com.documentum.fc.client.DfQuery@1b248c8.execute 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'
© 2007 EMC Corporation
Xense DFC Trace Analysis – Example 2
Top 5 DFC Calls
DurationSecs
DFC Call Call Details
0.273 com.documentum.fc.client.impl.session.SessionHandle@14b9eeb.getFolderByPath()
/dmadmin
0.234 com.documentum.fc.client.DfAdminSessionManager@1d66aa9.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.CollectionHandle@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.CollectionHandle@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
DurationSecs
Rows Query
61.233 30,123 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’)
0.184 1 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.116 2 select r_object_id, r_version_label, i_position from custom_templates where i_chronicle_id = ‘0903303480000c9e’
0.107 1 select r_folder_path from dm_folder where folder(‘/Business/Florida/Key2’, descend)
© 2007 EMC Corporation
Xense DFC Trace Analysis – Example 3
Call Profile
Total Duration
FrequencyAverage Duration
DFC Call
7.033 1502 0.005 com.documentum.fc.client.DfQuery.execute
5.015 500 0.010 com.documentum.fc.client.DfPersistentObject.fetch
3.123 1502 0.002 com.documentum.fc.client.impl.collection.CollectionHandle.next
0.236 21 0.011 com.documentum.fc.client.impl.session.SessionHandle.getObject
0.172 1 0.172 com.documentum.fc.client.impl.session.SessionHandle.getFolderByPath
0.109 12 0.009 com.documentum.fc.client.impl.session.SessionHandle.getTypeDescription
0.079 129 0.001 com.documentum.fc.client.impl.session.SessionHandle.getType
0.079 205 0.000 com.documentum.fc.client.impl.collection.CollectionHandle.next
0.047 1983 0.000 com.documentum.fc.client.DfAdminSessionManager.getSession
0.031 1 0.031 com.documentum.fc.client.DfSysObject.getFormat
0.016 12 0.001 com.documentum.fc.client.impl.validation.Validator.getValueAssistance
0.015 1984 0.000 com.documentum.fc.client.impl.session.SessionManager.release
0.015 94 0.000 com.documentum.fc.client.impl.session.SessionHandle.getLoginUserName
0.000 3989 n/a All Other Functions
© 2007 EMC Corporation
Xense DFC Trace Analysis – Example 4
Call Profile
Total Duration
FrequencyAverage Duration
DFC Call
1.290 1 1.290 com.documentum.operations.DfDeleteOperation.execute
0.128 1 0.128 com.documentum.fc.client.DfClient.newSessionManager
0.125 32 0.004 com.documentum.fc.client.DfSessionManager.getSession
0.102 1 0.102 com.documentum.com.DfClientX.getDeleteOperation
0.092 20 0.001 com.documentum.operations.DfDeleteOperation.add
0.055 23 0.000 com.documentum.fc.client.DfSession.getObject
0.000 2123 n/a 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
Presentations will be available on the Momentum Monaco Website
www.momentumeurope.com