home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #1 / NN_1993_1.iso / spool / comp / sys / isis / 370 < prev    next >
Encoding:
Text File  |  1993-01-10  |  2.6 KB  |  70 lines

  1. Newsgroups: comp.sys.isis
  2. Path: sparky!uunet!usc!rpi!batcomputer!cornell!ken
  3. From: ken@cs.cornell.edu (Ken Birman)
  4. Subject: A clib bug related to flow control, and a fix
  5. Message-ID: <1993Jan10.144817.22937@cs.cornell.edu>
  6. Organization: Cornell Univ. CS Dept, Ithaca NY 14853
  7. Date: Sun, 10 Jan 1993 14:48:17 GMT
  8. Lines: 60
  9.  
  10. The following problem arose in a system running at Bell Southwestern
  11. and hasn't been reported by anyone else.
  12.  
  13. Symptom: program has been running for a while, suddenly gets very
  14. sluggish.  When you use "cmd snap" you see that the active tasks
  15. are waiting on the following condition: 
  16.     too much memory in use -- waiting for drain
  17. However, the amount of memory in use is visibly low, well under
  18. 2Mbytes total, and perhaps on the order of 400K ``active'', and
  19. the number of allocated messages and tasks is also obviously not
  20. unreasonable.
  21.  
  22. Cause: when a program is a "client" of a process group A, receives
  23. diffusion multicasts in A, and also multicasts back into A, a
  24. piece of code that makes copies of the groupview data structure gets
  25. run from time to time.  This code incorrectly accounts its memory
  26. use, causing Isis to get confused about how much memory is in use
  27. and to incorrectly block tasks after a few thousand events of this sort.
  28.  
  29. Fix: 
  30.  
  31. 1) For users with obscured code.  Look for this code, which starts
  32.    at line 282 in clib/cl_groups.c:
  33.  
  34.  
  35.        groupview *
  36.        isis_gv_dup(gv)
  37.        B28d3c828 groupview *gv;
  38.        {
  39.        B28d3c828 groupview *P45e052b2;
  40.        P45e052b2 = Z41dbb084();
  41.                bcopy((VOID*)gv, (VOID*)P45e052b2, sizeof(*gv));
  42.        gv = P45e052b2;
  43.        gv->gv__clients = (address*)0;
  44.        gv->H52fdba52 &= ~PG_STATIC;
  45.        gv->L45f7e480 = 1;
  46.        if(gv->R2bea41aa != &NULLGINFO)
  47.        ++gv->R2bea41aa->gi_usecount;
  48. >>>>   Bb3b8cd0 += sizeof(groupview);   <<< add this line
  49.                return(gv);
  50.        }
  51.  
  52. 2) For users with unobscured source, add the line
  53.     isis_taskmem += sizeof(groupview);
  54.    at line 303 in clib/cl_group.c, right before isis_gv_dup
  55.    returns to its caller.
  56.  
  57. Next, cd to the ISIS make area, e.g. isis/SUN4, and run "make
  58. clib; make install".  Finally, relink any affected applications.
  59. There is no need to shut down Isis for this change, which will take
  60. effect the next time you run the relinked application programs.
  61.  
  62. This fix will be part of V3.0.8/V2.0.8; sorry if it caused problems for
  63. anyone else.
  64.  
  65.  
  66. -- 
  67. Kenneth P. Birman                              E-mail:  ken@cs.cornell.edu
  68. 4105 Upson Hall, Dept. of Computer Science     TEL:     607 255-9199 (office)
  69. Cornell University Ithaca, NY 14853 (USA)      FAX:     607 255-4428
  70.