summaryrefslogtreecommitdiffhomepage
path: root/pkg/sentry
diff options
context:
space:
mode:
authorMichael Pratt <mpratt@google.com>2018-07-17 13:03:03 -0700
committerShentubot <shentubot@google.com>2018-07-17 13:03:59 -0700
commit733ebe7c09404ea2e443e12143edc768a81cd415 (patch)
tree78cddccab9306e1518b8315660c4ca87e39760cb /pkg/sentry
parented2e03d3780b8d96b189c1311c92b9db2fbcb35a (diff)
Merge FileMem.usage in IncRef
Per the doc, usage must be kept maximally merged. Beyond that, it is simply a good idea to keep fragmentation in usage to a minimum. The glibc malloc allocator allocates one page at a time, potentially causing lots of fragmentation. However, those pages are likely to have the same number of references, often making it possible to merge ranges. PiperOrigin-RevId: 204960339 Change-Id: I03a050cf771c29a4f05b36eaf75b1a09c9465e14
Diffstat (limited to 'pkg/sentry')
-rw-r--r--pkg/sentry/fs/proc/README.md2
-rw-r--r--pkg/sentry/platform/filemem/filemem.go2
2 files changed, 4 insertions, 0 deletions
diff --git a/pkg/sentry/fs/proc/README.md b/pkg/sentry/fs/proc/README.md
index cec842403..e1ed88512 100644
--- a/pkg/sentry/fs/proc/README.md
+++ b/pkg/sentry/fs/proc/README.md
@@ -11,6 +11,7 @@ inconsistency, please file a bug.
The following files are implemented:
+
| File /proc/ | Content |
| :------------------------ | :---------------------------------------------------- |
| [cpuinfo](#cpuinfo) | Info about the CPU |
@@ -22,6 +23,7 @@ The following files are implemented:
| [uptime](#uptime) | Wall clock since boot, combined idle time of all cpus |
| [version](#version) | Kernel version |
+
### cpuinfo
```bash
diff --git a/pkg/sentry/platform/filemem/filemem.go b/pkg/sentry/platform/filemem/filemem.go
index 6c8b95578..870274ae1 100644
--- a/pkg/sentry/platform/filemem/filemem.go
+++ b/pkg/sentry/platform/filemem/filemem.go
@@ -547,6 +547,8 @@ func (f *FileMem) IncRef(fr platform.FileRange) {
if gap.Ok() {
panic(fmt.Sprintf("IncRef(%v): attempted to IncRef on unallocated pages %v:\n%v", fr, gap.Range(), &f.usage))
}
+
+ f.usage.MergeAdjacent(fr)
}
// DecRef implements platform.File.DecRef.