You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The drcachesim snoop filter tracks cache lines in a map of coherence_table_entry_t structs, one struct per cache line, to track the sharing state of each line. But once allocated, the struct is never removed from the map, causing the map to grow monotonically with the cumulative footprint of the trace, rather than being limited to the total line count of the tracked caches. For large traces this can cause out-of-memory errors.
Suggested fix is to delete the struct from the map once there are no caches sharing the line.
The snoop cache tracks sharing for each cacheline accessed. The
prior code never deleted these tracking structures once they were
allocated, causing the tracking data to grow with every new
cacheline touched. This change deletes cacheline trackers once
the cacheline is no longer present in any tracked cache. It also
changes the container used for tracking from a vector of bools to
a set of cache IDs, to simplify snooped cache lookup and iteration.
Fixes: #6893
The drcachesim snoop filter tracks cache lines in a map of coherence_table_entry_t structs, one struct per cache line, to track the sharing state of each line. But once allocated, the struct is never removed from the map, causing the map to grow monotonically with the cumulative footprint of the trace, rather than being limited to the total line count of the tracked caches. For large traces this can cause out-of-memory errors.
Suggested fix is to delete the struct from the map once there are no caches sharing the line.
See
dynamorio/clients/drcachesim/simulator/snoop_filter.h
Line 48 in 577db95
The text was updated successfully, but these errors were encountered: