1. 24 Sep, 2012 1 commit
    • Eric Eide's avatar
      Replace license symbols with {{{ }}}-enclosed license blocks. · 6df609a9
      Eric Eide authored
      This commit is intended to makes the license status of Emulab and
      ProtoGENI source files more clear.  It replaces license symbols like
      "EMULAB-COPYRIGHT" and "GENIPUBLIC-COPYRIGHT" with {{{ }}}-delimited
      blocks that contain actual license statements.
      
      This change was driven by the fact that today, most people acquire and
      track Emulab and ProtoGENI sources via git.
      
      Before the Emulab source code was kept in git, the Flux Research Group
      at the University of Utah would roll distributions by making tar
      files.  As part of that process, the Flux Group would replace the
      license symbols in the source files with actual license statements.
      
      When the Flux Group moved to git, people outside of the group started
      to see the source files with the "unexpanded" symbols.  This meant
      that people acquired source files without actual license statements in
      them.  All the relevant files had Utah *copyright* statements in them,
      but without the expanded *license* statements, the licensing status of
      the source files was unclear.
      
      This commit is intended to clear up that confusion.
      
      Most Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the Affero GNU General Public License, version 3
      (AGPLv3).
      
      Most Utah-copyrighted files related to ProtoGENI are distributed under
      the terms of the GENI Public License, which is a BSD-like open-source
      license.
      
      Some Utah-copyrighted files in the Emulab source tree are distributed
      under the terms of the GNU Lesser General Public License, version 2.1
      (LGPL).
      6df609a9
  2. 27 Jun, 2012 1 commit
    • Robert Ricci's avatar
      Add '-R' option to assign · 885f36c0
      Robert Ricci authored
      When set, randomizes the order of nodes before making pclasses. This
      has the effect of putting different nodes at the 'front' of the pclass,
      The idea is to avoid 'hot spots' of nodes that get over-used simply
      because they happen to appear earlier in the .ptop file.
      
      NB: because STL seems to use a different source of randomness, using
      this with '-s' to set a seed does *not* make assign deterministic.
      885f36c0
  3. 10 Nov, 2010 3 commits
    • Robert Ricci's avatar
      Fix up copyright dates · bd6f3dbc
      Robert Ricci authored
      bd6f3dbc
    • Robert Ricci's avatar
      Fix another old, and significant, bug · 65506d22
      Robert Ricci authored
      Each pclass hold a mapping from type names to nodes of that type
      that are currently available for use. This structure was not being
      properly maintained; when a mapping was removed, only the entry
      for the pnodes *current* type was being put back. When the pnode
      goes empty, *all* of its possible types should be marked as available.
      
      The consequence was that for pnodes that could take on multiple types
      (which is the common case in Emulab), once a node had been considered
      for a certain type (say, 'pc', 'pcvm', or 'delay'), it would *never*
      be considered for another type again.
      
      Add a new function that gets called when a pnode goes empty, to reset
      *all* of its type mappings in its pclass.
      
      Fixing this bug could have some serious positive consequences.
      65506d22
    • Robert Ricci's avatar
      Remove vestiges of SMART_UNMAP compile-time option. · 2175000c
      Robert Ricci authored
      It was a good idea, but we've never used it in production, it hasn't
      compiled in years, and it was just cluttering up the code.
      2175000c
  4. 08 Aug, 2010 1 commit
  5. 15 Jun, 2009 1 commit
  6. 01 May, 2009 1 commit
  7. 01 Dec, 2006 1 commit
  8. 25 Jan, 2006 1 commit
    • Robert Ricci's avatar
      Merge in changes from the assign-devel branch. This includes: · ed3cbc13
      Robert Ricci authored
      Ripping out crope and replacing (almost) all cropes, char*s and
      strings with fstring
      
      Beginnings of XML parser support (not built by default yet).
      
      Significant re-org of code.
      
      Should now compile with the latest gcc.
      
      Putting link information in stored solutions.
      
      Support for fixing interfaces.
      ed3cbc13
  9. 06 Jan, 2004 1 commit
    • Robert Ricci's avatar
      Fix dynamic pclasses, and make them the default for virtual nodes · c7e2d29e
      Robert Ricci authored
      again.
      
      One of the fixes changes the way in which we iterate through pclasses
      in find_pnode(). We used to treat the vector like a ring buffer, and
      start (randomly) someplace in the middle. This turns out to give some
      bad statistical properties when doing dynamic pclasses, since long
      chains of disabled pclasses will cause some pclasses to be selected
      more often. My old hack of just hopping around randomly in the
      disabled-pclass case was bad, because it's hard to tell when you've
      actually tried all the pclasses - so, we were getting false negatives
      where it was looking like there was no place available where we could
      map a vnode, which turned out to have worse effects than I had
      thought.
      
      So, now, we make a list of all the indices and randomize the order,
      then just iterate through that list.
      
      We also now count the number of pclasses that are enabled at every
      temperature step, and adjust the neighborhood size to remove them.
      This makes dynamic pclasses quite a bit faster - it cuts the time
      by 30% - 50% for my test case.
      
      Cleaned up find_pnode() by removing some #ifdef's that we don't use,
      and probably will never want to again - this makes the function almost
      readable!
      c7e2d29e
  10. 11 Sep, 2003 1 commit
  11. 10 Jul, 2003 1 commit
    • Robert Ricci's avatar
      Fix a major bug in dynamic pclasses. One of thse little things that · bc6c6a54
      Robert Ricci authored
      was sooo wrong you wonder how it worked in the first place... Took
      me days to find this one!
      
      Also added a new switch, '-o', that lets assign try out solutions
      that over-load a pnode. This helps a lot with topologies where the
      optimal solution is a best-fit onto multiplexed pnodes.
      
      The end result is that Mike's snake maps much better - it used to get
      an essentially random mapping, but now it gets something acceptible.
      bc6c6a54
  12. 01 Jul, 2003 1 commit
    • Robert Ricci's avatar
      Give assign the ability to make dynamic pclasses. Here's how it works: · fbcd6752
      Robert Ricci authored
      After building the set of pclasses normally, we make another pass
      through the vnodes. The goal to create a pclass for each individual
      node. We disable the node's 'own' pclass to begin with. Then, the
      _first_ time it gets a vnode mapped to it, we remove it from the
      'regular' pclass it belongs to, and enable it's own pclass. Then, if
      it goes empty, we put it back in its regular pclass and disable it's
      own.
      
      The point of this is to replace -p for use with multiplexed nodes.
      Instead of disabling pclasses altogheter, which has serious
      performance implications, we can instead be smart about which pnodes
      remain equivalent (because nothing's been mapped to them), and which
      are now different. The result is that on my test topoloy, the time to
      get a good mapping has gone from over 3 minutes to about 6 seconds.
      
      This feature is enabled with the -d option, and the -P option is
      pretty much mandatory when using it, since it greatly exacerbates the
      problem of cruft in the ptop file.
      
      This satisfies #14 from the todo file:
      14.  do dynamic pclasses
      
      Also bumped up the minimum neighborhood size from 500 to 1000. In some
      tests I was doing, this resulted in better solutions.
      fbcd6752
  13. 26 Jun, 2003 1 commit
  14. 20 Jun, 2003 1 commit
  15. 17 Apr, 2003 1 commit
    • Robert Ricci's avatar
      Several changes to assign: · 1003657e
      Robert Ricci authored
      Add features and desires to the PER_VNODE_TT restrictions. For
      desires, we can tell the user which ones can't be satisfied, but for
      features, we don't even try to figure out which one(s) keep us from
      mapping. From the assign_todo file, this is:
      9.   add features/desires to PER_VNODE_TT restrictions
      
      Add a new -P switch, when PER_VNODE_TT is in use. This casues it to
      prune out pclasses that no vnode can map to - this can lead to _huge_
      time savings, particularly since we put things like wide-area nodes
      into the ptop file. I've seen a 98% reduction in time when using both
      -p and -P! But, it's not the default yet, because I need to do more
      testing to make sure that this isn't hurting solution quality
      significantly.  todo item:
      8.   prune pclasses when using PER_VNODE_TT
      
      Standardize the exit values from assign:
      On success, returns 0
      On failures that are not retryable (ie. this top can never be mapped
          to this ptop), returns 2
      If SA fails to find a solution (ie., we might consider retrying),
          returns 1
      
      Fix a bug that has annoyed me for a very, very long time - if the
      input files don't exist, exit instead of hanging forever!
      
      Make the weight at which a feature/desire is considered 'hard' (ie. it
      generates a violation if unsatisifed or undesired) a variable, so that
      we'll be able to change it from 1.0 if we want.
      
      Put some more messages that should appear inline in the mail to stderr
      instead of stdout.
      1003657e
  16. 10 Mar, 2003 1 commit
  17. 05 Mar, 2003 1 commit
  18. 10 Feb, 2003 1 commit
  19. 05 Feb, 2003 1 commit
  20. 04 Feb, 2003 1 commit
  21. 03 Jul, 2002 1 commit
  22. 07 Jan, 2002 1 commit
  23. 02 Jan, 2002 1 commit
    • Christopher Alfeld's avatar
      · 1eb1e1d9
      Christopher Alfeld authored
      This check-in consists of 7 modifications to assign.
      
      1. Equivalence Classes
      
      Defined an equivalence relation on the physical nodes and applied it
      to the physical topology to get the resulting quotient topology (abuse
      of terminology).  So instead of searching among all possible physical
      nodes to make a map, assign only searches among all possible
      equivalence classes of nodes.  This tremendously reduces the search
      space.  At the time of this writing it reduces the physical topology
      from 252 nodes to 13 nodes.  The equivalence classes are generated
      automatically from the ptop file.
      
      2. Scoring based on equivalence classes.
      
      Each equivalence class used comes with a significant cost.  This
      strongly encourages assign to use equivalence machines when possible.
      The result is that an experiment that does not otherwise specify will
      almost definitely get machines of the same type.  If this needs to be
      reduced in the future it is the SCORE_PCLASS constant.
      
      3. Heuristics
      
      Added a bunch of heuristics for choosing which equivalence class to
      use.  This was less successful than I hoped.  A good solution is now
      found in record time but it still continues searching.  When OPTIMAL
      is turned on these heuristics help a lot.  When off they make little
      difference.  I may turn this into a compile time option in the future
      since the heuristics do take non-trivial CPU cycles.
      
      4. Fixed the very-very-big-and-evil disconnected-switches bug.
      
      Assign wasn't cleaning up after itself in certain cases.  Disconnected
      graphs are now merely a minor, easily ignored, bump rather than the
      towering cliffs they use to be.
      
      5. Fixed the not-yet-noticed not-enough-nodes bug.
      
      Found a bug that probably has never come up before because we have
      checks that avoid those circumstances.
      
      6. Modified constants.
      
      I was tired of waiting so long for results so, I lowered CYCLES and
      reduced the constant for naccepts (Mac, you probably want to add that
      inconspicuous number to your configurable constants; look for
      "naccepts =").  The results is roughly a speedup of 2.  It works great
      currently but we may want to change these numbers up again if we get
      problems with features and desires.
      
      7. General clean up.
      
      Associated with the other changes was a lot of restructuring and some
      cleanup.  Specifically to the assign loop and scoring code.
      1eb1e1d9