Subject: C433 JGSI Review Resent-Date: Thu, 30 Sep 1999 22:45:29 -0400 Resent-From: Geoffrey Fox Resent-To: p_gcf@npac.syr.edu Date: Fri, 10 Sep 1999 07:47:40 +0200 From: Michael Philippsen To: Geoffrey Fox CC: phlipp@ira.uka.de Title: A Tale of Two Directories: Implementing Distributed Shared Objects in Java Authors:Maurice Herlihy and Michael P. Warres a)Overall Recommendation ------------------------ CONDITIONAL ACCEPT b)Words suitable for authors ---------------------------- Sections 1-3 are well written and nice. The experiment section however is not very sound. The problem is that the authors discuss *one* small benchmark application (a shared counter). This particular benchmark has certain features (contention, message paths, etc.) that obviously make it unique. However, from the benchmarks results gained from this unique example, the authors derive general claims on the performance of the directory protocols. They even derive a hybrid protocol that better suits this benchmark but is inferior for other benchmarks (see section 6). I strongly recommend that the authors should try to present their analysis on more benchmarks instead of focusing on the shared counter alone. Some remarks to section 4.1: - Both RMI and UDP create threads. This is not properly analyzed. - Adding measurement code to threads will change their temporal behavior. What has been done to avoid heisenberg-effects? - Please repeat the Java benchmarks on a Wintel PC with Sun's JDK (including Symmantec's JIT). This JIT is known to be very efficient. Some remarks to section 4.2: - The authors mention that the message distance is longer (7) for the arrow protocol. They then use Fig 10 and Fig 11 to show that this is not true. This however is a feature of the shared counter benchmark and cannot be generalized. - I agree that prefetch latency can be hidden if enough work can be done concurrently. - Unfortunately, prefetching of objects is not discussed in the related work. - Again, it is a feature of the benchmark that there is enough contention to make this effect significant. Some remarks to section 6: >From the lines in Fig 13 it can be seen that the hybrid protocol performs better than the arrow protocol (for the shared counter benchmark). However, for 4, 7, 8, and 9 PEs there is either no clear advantage or even a disadvantage. Therefore, it is not reasonable to present performance results for other benchmarks for a single fixed number of PEs. This number might be carefully selected to show a particular result. I strongly recommend to have a combined analysis of all benchmarks in section 4. There should be results for all numbers of PEs. There should be results for different platforms (both hardware and JVM). If non of the protocols is superior for every case, the authors should try to derive rules of thumb for a programmer to select a protocol that is likely to show best performance for a given program. Some minor bugs: ---------------- - misunderstanding: At the end of section 2 the authors explain that in general a new thread is started that serves an incoming message. The first sentence of section 4.1 mentions that run() blocks at the home PE. I understand that there is a difference between the blocking of communication subsystem and a run() method that blocks at an object. However it took me longer than necessary to figure it out Please try to help the reader. - figures: what are the dashed lines in figure 3? Isn't there are cyclic arc missing in figure 3 (from the node that has the object to itself)? What is the reason for having solid lines in figures 4-6? Are these any different from the dashed lines in Figures 3, 7, and 8? Please say "node P" in Figure 4, "node Q" in Figure 5, and "node R" in Figure 6. - near the end of section 2: insert space in run()method - please use a consistent font/spelling for home/"arrow"/hybrid throughout the paper, i.e., italics or not, "" or not. - first line on p5: "multiprocessors([..." should be "multiprocessors [..." - bottom of p5: "...message to the the PE indicated..." - 2nd paragraph of section 4: "...time needed to for a collection..." - line 9 on p9: "In this abstract..." --> "In this paper..." - line 3 on p15: "When PE opens..." --> "When a PE opens ..." References: ----------- - be consistent: Proc. or Proceedings, Intl. or International - [9] insert spaces: J.*B. Carter, J.*K. Benner similar [22], [26], [27], and [28] - [7] and [8] are the same. - [11] "A.dam" --> "Adam", "java" --> "Java", "internet" --> "Internet" - [15] better: @article{ JavaParty ,author="Michael Philippsen and Matthias Zenger" ,title="Java{P}arty: Transparent Remote Objects in {J}ava" ,journal="Concurrency: Practice and Experience" ,volume="9" ,number="11" ,pages="1225--1242" ,month=NOV ,year="1997" } - [16] "kan" --> "Kan" - [20] did it appear? - [23] number and month missing - [28] pages missing - [29] don't insert - in URLs - [30] better: @article{ YuCox97 ,author="Weimin Yu and Alan Cox" ,title="{Java/DSM}: A Platform for Heterogeneous Computing" ,journal="Concurrency: Practice and Experience" ,volume="9" ,number="11" ,month=NOV ,year="1997" ,pages="1213--1224" }