DynamoRIO / DynamoRIO/dynamorio
Performance: Linux Chrome code cache thrashing due to reset_every_nth_pending
- Dominant language
- C
- Stars
- 3.2k
- Forks
- 629
- Avg merge
- 2d 15h
- Merged PRs (30d)
- 31
Description
_From [rnk@google.com](https://code.google.com/u/rnk@google.com/) on October 03, 2012 12:16:02_
If I run Chrome on Linux under plain DR I get a big pile of syslogs from the various child processes:
The root cause is in core/vmareas.c add_to_pending_list() we have this code:
```
if (DYNAMO_OPTION(reset_every_nth_pending) > 0 &&
DYNAMO_OPTION(reset_every_nth_pending) == todelete->shared_delete_count) {
/* if too many pending entries are piling up, suspend all threads
* in order to free them immediately.
* we can get here multiple times before we actually do the reset
* (can dec and then re-inc shared_delete_count),
* but that's not a problem, except we have to move our stats inc
* into the reset routine itself.
*/
schedule_reset(RESET_PENDING_DELETION/*NYI: currently this is ignored and we
* do a full reset*/);
}
```
This doesn't happen on Windows. For now I'm working around it by passing -reset_every_nth_pending 0, and filing for future investigation.
It looks like there's a Linux specific issue that's causing deleted fragments to pile up.
_Original issue: http://code.google.com/p/dynamorio/issues/detail?id=927_
Contributor guide
Assessment
This issue has not been assessed yet.