> I don't think we always drain on a per-System basis though... e.g., when we > checkpoint, don't we do a drain on the entire config? And in that case > there are things like Ethernet links that may need to be drained but aren't > necessarily below any System object in the hierarchy. Yes, but when we switch over in a two system setting, I don't believe that we drain the non-switching. I'd also honestly worry that you could have two independent drains going on if there were sampling on systems. It seems that making all systems wait for the slowest drainer would be a bad idea. Thinking forward to multithreaded simulation, drain would be annoying as a global. Finally, if we're going to eventually have to drain on functional accesses (or writes) for ruby, that seems bad in a multisystem setting. One system doing a syscall should not affect another system as this would really be confusing when trying to understand performance.
> One option would be to have a set of SimObject classes that can serve as the > root of a draining subtree, and include both System and Root in that set. > Or we could have every SimObject have that potential at the cost of an > extra int per SimObject. I don't have a strong opinion on this. It would certainly be nice to cut down on the amount of data, but not critical. I guess I don't have a good feeling about how difficult any of this is going to be. It seems to me that the global is a bit rough for either multithreaded or multisystem simulations or for functional drain requirements. Nate _______________________________________________ m5-dev mailing list [email protected] http://m5sim.org/mailman/listinfo/m5-dev
