ken@cs.cornell.edu (Ken Birman) (04/16/91)
I got a fairly confused question about how scope works and wanted to post my reply for the benefit of others. I received mail from someone who expected ISIS to migrate programs based on the group names they used. I.e. if you joined a group /mach1/abc, your program would run on /mach1. Scope does not work this way, at all. The only way to limit where processes run in V2.1 is to use a sites list argument to "rexec" that lists only the sites you have in mind. There is no form of "pattern match" such as the use of site names in a group name. A process runs on the processor where you "exec" it. ISIS never moves a process, under any circumstances, regardless of the names of the groups it joins. However, under V3.0 of ISIS the network resource manager tools will do a great deal to help you chose this initial location (for the initial exec) using a pattern match. In V2.1 scope is useful ONLY for restricting the cost of the name search used to decide if a group should be created or joined. Say that your sites file looks like this + 01:1601,1602,1603 apples.acme.com scope0 sparc + 02:1601,1602,1603 pears.acme.com scope0 mips + 03:1601,1602,1603 cats.acme.com scope1 mips + 04:1601,1602,1603 dogs.acme.com scope1 sparc This defines: 1) one isis cluster containing four machines that can see and talk to each other. The machines are listed by the names that ISIS will find in the local /etc/hosts file, using gethostbyname() 2) Port numbers for the program 3) four naming scopes: scope0 = apples,pears scope1 = cats,dogs sparc = apples,dogs mips = pears,cats These naming scopes also imply a "default" binding. If you do not specify a scope, as discussed below, apples and pears will assume scope0; cats and dogs assumes scope1. Now, say that you run a program on apples and it joins group "a". default is scope0 => name used is @scope0:a group doesn't exist => creates it and becomes first member Now say that you run the same program on pears @scope0:a exists => added as a second member Now you run it again on cats @scope1:b DOES NOT exist so it creates a new group and becomes first member (!) Now you change the program to join "@scope0:a" You run it on dogs @scope0:a exists so it joins as the third member. At this point there are two non-intersecting groups: @scope0:a members on apples, pears,dogs @scope1:a one member, on cats Salient points: the programs run in the same place they were started. The only thing affected by the scope is where they look for existing members of the groups that they join! Some users have asked if they can get at the scope information (i.e. find out which machines are listed in scope "mips"). We intended to include this as a simple RPC but haven't added it yet. One more thing on the list of things to do. Ken -- Kenneth P. Birman E-mail: ken@cs.cornell.edu 4105 Upson Hall, Dept. of Computer Science TEL: 607 255-9199 (office) Cornell University Ithaca, NY 14853 (USA) FAX: 607 255-4428