1. 10 Nov, 2010 1 commit
    • Robert Ricci's avatar
      Re-think no_connect violations · 26e0a6c6
      Robert Ricci authored
      Re-think a very old idea in assign - that no_connect violations for
      unmapped links should not be assessed against links whose endpoints are
      not mapped. The problem with this is that assign is too hesitant to map
      nodes - if there is more than one link that can't be mapped or whose
      other end isn't mapped yet, then assign thinks it's better to leave the
      node unmapped. This leads to confusing solutions (in which nodes remain
      unmapped when really it's the links that are the problem), and I beleive
      it keeps assign from exploring valuable parts of the solution space.
      This patch chanes the behavior, so that no_connect violations get scored
      even when the endpoints of the link are not mapped.
      Not well enough tested to run in production.
  2. 09 Nov, 2010 5 commits
    • Robert Ricci's avatar
      Fix a bug that's over 10 years old · d7fb737d
      Robert Ricci authored
      I think this must get the award for oldest (frequently excercised) bug
      in the Emulab source. Thanks to the magic of the git pickaxe, I
      discovered that code with this problem was first committed Monday, May
      22, 2000, when it used to be in assign_hw/assign.cc
      assign used to use a priority queue to 'randomly' select unassigned
      nodes to try assigning. Turns out this is not very random! A node can
      get unlucky, get a very low random priority assigned to it, and get
      stuck in the queue for a very, very, very long time. As a result, I've
      seen assign try to re-assign the same node several thousand times in a
      row, when there are others waiting to be re-assigned. Of course, this is
      going to result in very poor exploration of the state space.
      I changed the unassigned node selection process to use a regular list,
      and select an item from the list at random at the time of item removal.
      This gets a much more even distribution of nodes, at the small cost of
      linear iteration over the list of unassigned nodes.  This should be a
      pretty minor cost, though, as iteration over this list should be cheap
      and the list itself should generally be pretty small.
      Also added some debugging statements.
    • Robert Ricci's avatar
      Add some debugging statements · 4128f9b6
      Robert Ricci authored
    • Robert Ricci's avatar
      Add a bunch of debugging to anneal.cc · c646bd39
      Robert Ricci authored
      Add debugging statements useful in tracking down which vnodes assign attempts
      to assign to which pnodes.
    • Robert Ricci's avatar
      Fix potential wild pointer bug in reorderLinks() · f80907f1
      Robert Ricci authored
      Was returning a structure with a pointer to a stack-allocated string in
      it. Use knowledge about where that string came from to avoid having to
      make a copy of it, instead.
      There is still a minor memory leak, but left behind a note rather than
      fixing it (which would be quite involved).
    • Robert Ricci's avatar
      Fix a bug in the reorderLinks() function · 469be374
      Robert Ricci authored
      Because it's operating on char*s, the STL list remove() function
      doesn't work; it needs to do a strcmp, not a simple comparison. So, hand-write
      the loop to do this.
      Also add a santity check to produce a fatal error rather than allowing this
      function to go into an infinite loop.
  3. 13 Oct, 2010 1 commit
    • Robert Ricci's avatar
      Fifth attempt at fixing fixed interfaces in assign · a773d833
      Robert Ricci authored
      Think I got it this time (yeah, I've said that four times before).
      It requires some extra bookkeeping; we were recording source and
      dest interface names in tb_plink, but not source and dest node
      names. With this new information, find_best_link() now has sole
      responsibility for figuring out if the vlink and plink go in the
      same direction, and the callers of find_best_link() are now
      responsible for knowing which direction they are traversing the
      vlink in (and thus whether they should tell find_best_link() to
      check the source or dest of the vlink.)
  4. 30 Sep, 2010 1 commit
    • Robert Ricci's avatar
      Fix fixed interfaces for the fourth time · 51b20429
      Robert Ricci authored
      Okay, I know I said this the first three times, but I think I've got it
      this time - the problem had to do with how I was handling the flipped
      flag (of course). Many of the calls find_best_link() give the dest_pv
      of a link instead of the pv (source pnode). When we do this, we have to
      invert the flipped flag, 'cause we're effectively reversing the order
      of the link.
  5. 20 Aug, 2010 3 commits
  6. 19 Aug, 2010 2 commits
    • Robert Ricci's avatar
      Make assign build with GCC 4.4. · 05e25a14
      Robert Ricci authored
      The main change is to add a NEWER_GCC macro, separate from NEW_GCC, to
      detect GCC 4.3 and up.
      This is necessary because, in GCC 4.3, hash_fun.h moved from ext/ to
      backward/.  New comments in port.h give the details.
      common.h, fstring.h: use NEWER_GCC to locate hash_fun.h.  port.h:
      define NEWER_GCC if GCC >= 4.3.
    • Robert Ricci's avatar
      Better error message when requesting nodes of a nonexistent type · 1085e4a7
      Robert Ricci authored
      If a request was made for a node type that was not present in the physical
      topology, then the error message was, "Too much bandwidth on emulated links."
      This change adds a flag in mapping_precheck() that remembers whether the
      requested node type was found.  If not, then a new error message is printed
      instead of the bandwidth one.
  7. 10 Aug, 2010 2 commits
  8. 09 Aug, 2010 1 commit
  9. 08 Aug, 2010 1 commit
  10. 06 Aug, 2010 1 commit
  11. 05 Aug, 2010 4 commits
  12. 04 Aug, 2010 4 commits
  13. 03 Aug, 2010 5 commits
  14. 29 Jul, 2010 2 commits
    • Tarun Prabhu's avatar
      Annotations work - well, ok, they haven't been rigorously tested yet, but I... · be04644b
      Tarun Prabhu authored
      Annotations work - well, ok, they haven't been rigorously tested yet, but I think they'll hold up. The only thing that is almost certainly broken is the conversion from links with multiple interfaces into the "node + point-to-point" links that assign knows how to deal with.
      Mapper now has a flag to determine whether to output the text format or rspec. rspec outputs are named *.ptop.xml and *.vtop.xml for the advertisement and request respectively.
    • Tarun Prabhu's avatar
      Add extension and vclass support. It should be working correctly now. There's... · 34d18441
      Tarun Prabhu authored
      Add extension and vclass support. It should be working correctly now. There's a lot of ugliness w.r.t. hardware types and sliver types, while dealing with switches, nodes and vclasses. I have tried to hide most of it in rspec_parser_v2.cc and rspec_parser_helper.cc.
  15. 26 Jul, 2010 3 commits
  16. 24 Jun, 2010 1 commit
  17. 18 Jun, 2010 3 commits