diff options
author | Glenn Elliott <gelliott@cs.unc.edu> | 2013-03-08 00:43:41 -0500 |
---|---|---|
committer | Bjoern Brandenburg <bbb@mpi-sws.org> | 2013-08-07 03:47:07 -0400 |
commit | bcaacec1ca714224807728a63eccb37e3d685cd6 (patch) | |
tree | 4c4fb3e05af0d9ad03428414cd8c2bb97105435a /usr | |
parent | 3bd7e43d778163e9e1b696fdb5030b7717aba236 (diff) |
uncachedev: mmap memory that is not cached by CPUs2013.1archived-2013.1
This patch creates a new character device, uncachedev.
Pages of RAM allocated by this device are not cached by
CPUs.
Uses for such pages:
1) Determining *very* pessimistic emperical worst-
case execution times.
2) Compare against performance with caches (quantify
the avg. case benefit).
3) Deterministic memory accesses (access cannot cause a
cache eviction.)
4) Theoretically, increased performance can be achieved
by storing infrequently accessed data in uncache pages.
uncachedev allocates pages with the pgprot_noncached() page
attribute for user applications. Since pages allocated by
uncachedev are not locked in memory by default, applications
with any access level may mmap pages with uncachedev.
Limitations:
1) Uncache pages must be MAP_PRIVATE.
2) Remapping not supported.
Usage (user level):
int size = NR_PAGES*PAGE_SIZE;
int fd = open("/dev/litmus/uncache", O_RDWR);
char *data = mmap(NULL, size, PROT_READ | PROT_WRITE,
MAP_PRIVATE, fd, 0);
<...do stuff...>
munmap(data, size);
Diffstat (limited to 'usr')
0 files changed, 0 insertions, 0 deletions