1. 04 Apr, 2014 1 commit
  2. 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
  3. 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
  4. 19 Jul, 2011 2 commits
    • Robert Ricci's avatar
      Handle new property_list.hpp location in boost · 1c333acd
      Robert Ricci authored
      Have I mentioned that I hate it when library developers move their
      headers around? Change the location of the property_list.hpp header
      to a macro and add a new -DNEWER_BOOT define that swtiches this to
      the newer location.
      
      Not automatically detected yet; should be checked in configure.
      (cherry picked from commit 2403b264)
      1c333acd
    • Robert Ricci's avatar
      Handle new property_list.hpp location in boost · 2403b264
      Robert Ricci authored
      Have I mentioned that I hate it when library developers move their
      headers around? Change the location of the property_list.hpp header
      to a macro and add a new -DNEWER_BOOT define that swtiches this to
      the newer location.
      
      Not automatically detected yet; should be checked in configure.
      2403b264
  5. 10 Nov, 2010 5 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
      Fixing more pre-historic bugs · c7ba5997
      Robert Ricci authored
      Code didn't match comment; comment was right.
      c7ba5997
    • Robert Ricci's avatar
      Remove two more useless compile time options · 57805560
      Robert Ricci authored
      PNODE_ALWAYS_FRONT wasn't used for anything
      
      PNODE_SWITCH_LOAD was a bugfix, which we had turned on by default, and
      there was no point in being able to turn the bug back on.
      57805560
    • 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
  6. 15 Jun, 2009 1 commit
  7. 20 May, 2009 1 commit
  8. 01 Mar, 2007 1 commit
  9. 01 Dec, 2006 1 commit
  10. 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
  11. 29 Aug, 2005 1 commit
  12. 11 Aug, 2004 1 commit
  13. 03 Jun, 2004 1 commit
    • Robert Ricci's avatar
      'port' assign to compile under gcc 3 (specifically tested with 3.3.1). · f05e1008
      Robert Ricci authored
      This mostly required messing with the STL #includes.
      
      Still builds under gcc 2.95, and won't be built with 3.3 by default
      until I've spent more time testing it.
      
      One reason for doing this is that gcc 3.3 seems to generate faster
      code from templated functions. Tests so far show that the
      gcc3-compiled binary shaves 15-30% off of assign's runtime.
      
      The other reason for doing this is forward-looking. When we end up
      getting boss running on FreeBSD 5 or a recent Linux distro, the
      compiler is likely to be from the gcc 3 branch.
      f05e1008
  14. 26 Apr, 2004 1 commit
    • Robert Ricci's avatar
      Some big changes to assign, and some related changes to assign_wrapper · 238dce73
      Robert Ricci authored
      and ptopgen.
      
      Add link typing to assign. Each virtual link is given a single type.
      Each physical link is given one or more types. A virtual link will
      only be mapped to a physical link which can satisfy its type. In both
      the top and ptop files, the link types are now mandatory, and they
      fall at the end of the mandatory link arguments.
      
      This differers from the 'regular' type system in two ways. First, a
      plink is not constrained to filling only one type at a time. If we are
      using emulated links, a plink could satisfy, say, an 'ethernet' link
      and an 'fxp' link at the same time. This seems to more naturally match
      the way we'll use link types.  Second, there are no counts assoicated
      with link types, as there are for node types. ie. a link is not an
      'ethernet:1' link, it's an 'ethernet' link. Presumably, when
      multiplexing virtual links onto a physical one, it's bandwidth that's
      the factor that limits the multiplexing.
      
      The link type is now taken into account when constructing pclasses,
      and in the mapping precheck.
      
      As a side-effect of these changes, the silly 'count' argument on the
      end of link lines in the ptop file, which was used for the fake LAN
      nodes, is no longer supported.
      
      The implementation could be a bit more efficient, but that would mean
      tossing more of the stuff we do with boost's graph library. I think
      this should happen, but today is not the day.
      
      Modify assign_wrapper and ptopgen to spit out top and ptop files in
      the new format.
      
      Changed the constant LINK_UKNOWN to LINK_UNMAPPED - the new name more
      accurately reflects the way this constant is used.
      
      Add a new '-n' flag that tells assign not to do annealing, just exit
      after the type precheck.
      
      Clarify the usage message for the -c flag.
      
      Removed some dead code for dealing with LAN nodes.
      238dce73
  15. 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
  16. 04 Dec, 2003 1 commit
  17. 11 Sep, 2003 1 commit
  18. 10 Sep, 2003 1 commit
  19. 09 Sep, 2003 1 commit
  20. 04 Sep, 2003 1 commit
  21. 20 Aug, 2003 1 commit
    • Robert Ricci's avatar
      Okay, add back some of my static nodes/multiplexing changes, · da47400b
      Robert Ricci authored
      really working this time.
      
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      I will not check things in without running the testsuite
      da47400b
  22. 08 Aug, 2003 1 commit
  23. 07 Aug, 2003 1 commit
    • Robert Ricci's avatar
      A lot of bugfixes relating, primarily, to multiplexed nodes: · 821107fc
      Robert Ricci authored
      Split the function that determines if a vnode can be mapped to a given pnode
      out of find_pnode, so that I can spread it out and make it more comprehensible.
      In doing so, fixed a bug in which static types were not getting handled
      correctly - a static type would only be found if no vnodes with dynamic types
      were allocated to the pnode.
      
      Fixed a bug in which, on allocation of a dynamic ptype, nodes where being
      removed from their static type lists in the type_table.
      
      Fixed a bug when there is a combination of fixed and un-fixed vnodes in the top
      file.
      
      I have more on the way, but this seemed like a good checkpoint.
      821107fc
  24. 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
  25. 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
  26. 26 Jun, 2003 1 commit
    • Robert Ricci's avatar
      Major changes to the way assign handles LAN nodes. · 83cfa8ec
      Robert Ricci authored
      LAN nodes are no longer treated specially. Instead, I've introduced
      the idea of 'static' types (old-style types retroactively become
      'dynamic' types). While a pnode can only satisfy one dynamic type at a
      time, it can always satisfy its static types (assuming it has enough
      capacity left.) Static types are flagged by prepending them with a '*'
      in the ptop file. So, for example, you may give switches the
      '*lan:10000' type so that they can satisfy virtual LAN nodes. Of
      course, other pnodes can have this type too, so that we can get
      'trivial LANs'.
      
      Actually, removing special treatment for LANs cleans up a lot of code.
      However, it may have some negative impacts on solutions, since we're
      not as smart about where to place LAN nodes as we used to be (they get
      annealed along with everything else, and not migrated.) I haven't seen
      any evidence of this yet, however.
      
      This leaves us with a single type of special pnode, a switch.
      
      Also added a new bit of syntax in ptop files - when '*' is given as a
      the maxiumum load for a type, the node is allowed to take on an
      infinite (well, actually, just a really big number of) vnodes of that
      type.
      
      ptopgen was modified to always report switches as being capable of
      hosting LANs, and assign_wrapper now understands direct links to LANs,
      which is what we get when the LAN is hosted directly on a switch.
      
      Fixed a bug in scoring direct links, in which the penatly was being
      added once when a direct link was mapped, but subtracted only once
      when it was freed.
      
      Added a '-T' option for doing simple self-testing. When adding a node
      to the solution, assign records the score, adds the node, removes it
      again, and checks to make sure that the resulting score is the same as
      the original score. The usefulness of this feature in debugging
      scoring problems cannot be understated...
      83cfa8ec
  27. 20 Jun, 2003 1 commit
  28. 10 Mar, 2003 1 commit
  29. 05 Mar, 2003 1 commit
  30. 10 Feb, 2003 1 commit
  31. 05 Feb, 2003 1 commit
  32. 04 Feb, 2003 1 commit
  33. 03 Jul, 2002 1 commit
  34. 08 Jan, 2002 1 commit
    • Christopher Alfeld's avatar
      All the vclass stuff. Can now do: · 09737efc
      Christopher Alfeld authored
      make-vclass A 0.5 pc600 pc850
      
      in the top file.  And then have nodes of type A.  Assign will try to put
      them all as either pc600 or pc850.
      
      Still need to write all the pre-assign stuff.
      09737efc
  35. 07 Jan, 2002 1 commit