Transcript Slide 1

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
© 2007 EMC Corporation
RightSite
docbasic
D
M
C
L
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
© 2007 EMC Corporation
Webtop/
WDK
DFC
Java
DMCL
C++
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
© 2007 EMC Corporation
WDK/
Webtop
DFC
Java
DFC Tracing in D6
DMCL Tracing
DFC Trace
>
>
>
>
>
>
>
>
Simple Invocation
‘Flat’ structure
Analysis tools available
Problems with tracing in
Multi-Threaded
environments
© 2007 EMC Corporation
Many different parameters
‘Stack’ structure
Few tools available
Improved tracing facilities in
Multi-Threaded
environments
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
> Don’t forget to switch off tracing afterwards!
© 2007 EMC Corporation
DFC Trace example
7011.547
0.000 N/A
[http-8080-Processor25]
[email protected]() ==>
com.documentum.fc.client.IDfQuery@1dd1a31
7011.547
0.000 N/A
[http-8080-Processor25]
[email protected]("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]
[email protected](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
DFC Call
Call Details
67.790
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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
[email protected]
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
Duration
Secs
DFC Call
Call Details
0.273
com.documentum.fc.client.impl.session.SessionHandle@
14b9eeb.getFolderByPath()
0.234
com.documentum.fc.client.DfAdminSessionManager@1d
66aa9.getSession()
0.184
[email protected]()
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
[email protected]()
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
[email protected]()
select r_object_id, r_version_label, i_position from dm_sysobject (all)
where i_chronicle_id (‘0903303480001116’)
© 2007 EMC Corporation
/dmadmin
Example 2 - continued
Top 5 Queries
Duration
Secs
Rows
Query
61.233
30,123
0.234
22
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
select r_object_id, r_version_label, i_position from dm_sysobject (all) where i_chronicle_id
= ‘0903303480001116’
select r_object_id, object_name, title, keywords, authors, r_object_type from dm_document
where folder(‘/Business/Florida/Key2’)
Xense DFC Trace Analysis – Example 3
Call Profile
Total
Duration
Frequency
Average
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
© 2007 EMC Corporation
n/a
All Other Functions
Xense DFC Trace Analysis – Example 4
Call Profile
Total
Duration
Frequency
Average
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
© 2007 EMC Corporation
n/a
All Other Functions
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