D6 SP1 out

November 27, 2007 at 8:37 pm | Posted in D6, DFS | 4 Comments

I see that SP1 has appeared on the download site for a few products (Content Server and DFC are the ones that caught my attention). DFS SP1 isn’t out yet, scheduled for Dec according to Craig Randell in the comments to his blog posting. Actually those comments are pretty useful to anyone needing further insight into the DFS .NET support. Recommended reading.

Tomcat v Weblogic

November 9, 2007 at 10:15 am | Posted in Performance | 5 Comments

Tomcat v Weblogic (or WebShpere or Oracle AS) – this is one of the perennial questions that comes up when discussing Documentum deployments and often the main topic is one of performance. I attended an ask-the-experts session at Momentum this week and this question was addressed by Ed Bueche. His answer was that whenever they had looked at this there didn’t seem to be a big difference, and that accords with my recollection from the benchmarking whitepapers Ed’s team have produced on this.

Ed did make a couple of interesting additional points. First although the product vendor (BEA, IBM, Open source) didn’t make a lot of difference to performance, the version of the jvm did. As new versions (1.4 -> 1.5 -> 1.6) of the JVM were released there seemed to be very substantial improvements in performance. There can also be differences in the JVM implementations (Sun v JRockit) although this can vary according to OS (and possibly hardware) platform. Secondly in one particular area Tomcat does ‘score well’; it does seem to be lighter on memory than Weblogic. The inclusion of weblogic in the Content Server deployment in D6 does now make it difficult to deploy Documentum suite on a 2GB laptop (something that’s very important to people who need to demo or simply develop). Apparently EMC are working on this. In the meantime looks like I have to buy a new laptop (oh dear).

Ed went on to make the very important point (one that I fully endorse) that really you shouldn’t just be looking at simply performance as your guiding principle in which technology to choose. You need to consider the skill set of your development and support staff (including your 3rd party integrators!!!) – you are far more likely to get a successful and performant deployment if you are building on existing skills.

I would add that if you are asking the question is X ‘better performing’ than Y you are really asking the wrong question. There are many facets to performance including resouce usage (CPU, IO, Memory), features (cluster support, multipe JVM support) and platform support (Unix, Windows) that you can’t really boil it down to a single better or worse comparison. It depends very much on the specifics of your implementation.

Ed also mentioned your organisation’s attitude to support. Some organisations really like the idea of having a paid contract with a vendor to support all their important products. In this case you probably should be looking at the proprietary solutions like BEA Weblogic or WebSphere. But other places may be happy that their developers can grab the Tomcat source code work out problems and provide solutions themselves, perhaps using resources on the internet. I suspect there are even people who you can contract to provide this sort of support. In my view this is really a strategic decision that should be set at a high level by the organisation itself.

Finally there are issues to do with administration and cluster support. Although I think tomcat has come a long way on this it still lags behind. Weblogic provides clustering support out-of-the-box, whereas you probably need more effort and know-how to get clustering up and running on Tomcat. Again this goes back to the existing skill set – if you already have people with considerably experience with Tomcat this is much less of an issue.

Momentum Monaco

November 8, 2007 at 3:58 pm | Posted in D6, Momentum, Performance, Troubleshooting, Xense Profiler | Leave a comment

I have been at the Momentum Conference in Monaco all week seeing all the exciting new stuff in D6 (and beyond) and I also presented on Performance Tuning in D6. I have uploaded the presentation here: Momentum 2007 Monaco – Inside EMC Documentum.

The presentation talks about the implications of removing the native code DMCL from DFC. There is no longer a dmcl trace facility which has been the cornerstone of performance tuning Documentum in the past. I suggest that the DFC can be used in a similar way. I then go on to discuss how a software tool could analyse the trace and I suggest there are 3 useful views of the performance data:

  • Top long running DFC calls
  • Top long running queries
  • Call profile

Update: Xense now has a beta version of a tool that does this, Xense Profiler for DFC.

I demonstrate 4 performance tuning example scenarios and show how the different views can be used to interpret the trace. Each of these example scenarios illustrate a performance problem pattern.

I should point out something: One of the things I say in the presentation is that there are not yet any performance tuning analysis scripts for D6 available from EMC. A subsequent discussion with Chase Harris revealed that there are some new scripts and they should be generally available. I’ll post some information about how to get hold of them when I find out.

Update: The scripts are here

Xense Session Manager 1.1 beta

November 8, 2007 at 2:38 pm | Posted in Architecture, Performance, Xense Session Manager | Leave a comment

I completed coding on this a while ago but have been too busy to get the documentation finished and complete the final testing. I thought it would be a good idea to make this available to the wider world as a beta release.

The major feature change is that Xense Session Manager supports connecting to multiple content servers for a single docbase. The idea is you select the docbase from the docbase configuration dialog (one day I’ll have to change the application to refer to ‘repositories’ – thank you EMC marketing ) and then select all the servers that serve the docbase and login. The display now shows sessions for users connected to all content servers. There are a number of bug fixes as well.

You can get the beta from here. Just unzip the file, double-click SessionManager.exe and away you go. You’ll need an installation of DFC 5.2.5 or 5.3 to run SessionManager but it won’t currently run against DFC6. Of course it will still work against a D6 repository.

If you want to send feed-back you can do so by email to robin.east@xense.co.uk or even better by commenting on this post.

Enjoy.

Grouping Repeating Attributes

November 1, 2007 at 2:30 pm | Posted in Troubleshooting | 1 Comment

One of the useful features of DQL is its ability to group repeating attributes for a single object into a single row of a result set. For example the following query on my system just returns the repeating authors attribute:

1> select authors from dm_document where any 
r_version_label = 'flag1'
2> go
authors
------------------------------------------------
tom
dick
harry
tom
dick
harry
tom
dick
harry
(9 rows affected)

Listing of authors isn’t that interesting but if we add in r_object_id to the select column:

1> select r_object_id,authors from dm_document 
where any r_version_label = 'flag1' order by r_object_id
2> go
r_object_id       authors
----------------  ------------------------------------------------
0900022b80010513  tom
                  dick
                  harry
0900022b80010514  tom
                  dick
                  harry
0900022b80010515 tom
                  dick
                  harry
(3 rows affected)

This time there are only 3 “rows”, one for each of the objects found in the query, and each repeating attribute for an object is returned with all the other repeating attributes for that object.

Notice that I added in an “order by r_object_id”. This is essential to ensure that the grouping works as expected. This is a point that is not particularly clear in the documentation and it is somewhat limiting, as it prevents the user from ordering the objects in some other useful way like by object_name (or UPPER(object_name) as so beloved of most of Documentum’s user interfaces these days).

The implementation of repeating attribute grouping assumes that the rows will be returned from the database in r_object_id order. However it is easy to forget this and not even notice in development or testing, as many times the database will naturally return rows in r_object_id order. However with a little effort it is possible to produce a test case like the following:

1> select r_object_id,authors from dm_document 
   where any r_version_label = 'flag1'
2> go

r_object_id       authors
----------------  ------------------------------------------------
0900022b80010513  tom
                  dick
0900022b80010514  tom
                  dick
0900022b80010515  tom
                  dick
0900022b80010513  harry
0900022b80010514  harry
0900022b80010515  harry
(6 rows affected)

All I have done is remove the “order by” clause from the query. In this particular case we now have 6 rows with each object reported twice! I leave details of what is going on to the next post but I’ll leave you with a little puzzle. I can “fix” this particular query by applying some hints:

1> select r_object_id,authors from dm_document 
   where any r_version_label = 'flag1' 
   enable(oracle('use_nl(dm_repeating.WE_) use_nl(dm_document.VE_)'))
2> go

r_object_id       authors
----------------  ------------------------------------------------
0900022b80010513  tom
                  dick
                  harry
0900022b80010514  tom
                  dick
                  harry
0900022b80010515  tom
                  dick
                  harry
(3 rows affected)

Why does this work?

Note I’m not suggesting this as a reliable way to solve the problem (in general there isn’t one short of having r_object_id as the first column in the order by) but it gives a clue as to how Documentum implements this feature.

Blog at WordPress.com.
Entries and comments feeds.