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