Merge pull request #1844 from jrw972/monterey
[ACE_TAO.git] / TAO / orbsvcs / tests / Redundant_Naming / README
blob4004b70c8a2d6e5b1f64058ac002e2854d3efe0d
3 This application tests the redundancy feature of TAO's Naming Service.
5 To run all tests automatically -
6         execute Perl script run_test.pl
8 To run tests manually -
9         start the Naming Service (see
10         TAO/orbsvcs/Naming_Service/README for valid options),
11         then run ./client the optional options are shown below.
13 NOTE: if running tests manually, the NameService directory must exist
14 before starting the Naming Service and this directory must be cleaned out
15 manually after stopping the Naming Service.
17 The following options exist:
18 ---------------------------
19 -b      Breath of Context tree, default is 4, minimum is 2
21 -d      Depth of Context tree, default is 4, minimum is 2
23 -o      Breath of Object tree, default is 4, minimum is 2
25 -p      ior for Naming Server 1
27 -q      ior for Naming Server 2
29 The client creates two context trees, one of breath b and one of depth d,
30 and another node with o objects.  It then removes the contexts b-1, d and
31 the object o-1.  All these are done using the first name server.  The
32 client then accesses contexts b, b-1, d, d-1, and objects o, o-1 looking
33 for the appropriate found/not-found returns using the second name server.
35         Example (on a Unix system):
36         $ $TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -o nsior1\
37           -r NameService -ORBEndPoint iiop://localhost:10001 &
38         $ $TAO_ROOT/orbsvcs/Naming_Service/Naming_Service -o nsior2\
39           -r NameService -ORBEndPoint iiop://localhost:10002 &
40         $ ./client -p file://nsior1 -q file://nsior2
42         where the steps correspond to 1&2)starting the Naming Service
43         in redundant mode, 3) running the client.
44         Don't forget to kill the name servers after you are done.
48 EXPECTED OUTPUT FOR THIS TEST
49 *****************************
51 Redundancy test OK.
53 The default test runs in a few seconds.  (4 on my 500MHz Linux)
56 *****************************
57 Restrictions, performance notes, and future
59 While the redundant naming service is only fully function on Tru64
60 clusters, it can be used on any two systems that share a file system
61 with locking.  However, this test puts the two naming servers on the
62 local system doesn't test the locking (probablistic to do, at best)
63 and runs the client on the same system.  This will specifically test
64 only the functionality of the redundancy.  The extra parameters can
65 be used manually to probe performance, as illustrated below.
67 Using the b,d, and o options, I determined:
69 As the number of objects in a single context increases, performance
70 decreases.  This is because of I/O limits, each addition of a new
71 object reference adds about 1/2 KB and rewrites the whole file.  I
72 observed 9746 objects added to a single context in 100 minutes and
73 noted that the disk light was on solid.
75 As the number of contexts increase, the CPU became the limiting factor.
76 2000 contexts under the root context took 20 minutes.
78 As the depth of the contexts increases, the limit becomes the file
79 system.  As the number of contexts, equivalent to files, passed 12000,
80 the system slowed to a crawl.  The first 12000 took about 5 minutes, the
81 next 15 minutes only got another 2000.  Process CPU was very low, less
82 than 5 %.  Disk activity was high, but not contiguous, lot of head motion
83 not seen in the single context above.
85 Future enhancement of this service should address these performance
86 limits.  One obvious enhancement is to use IPC between the redundant
87 Naming Servers to reduce the dependence on the disk, then a lazy update
88 of the disk can be done.  Would take a lot of code, but doable.