diff options
author | erikchen <erikchen@chromium.org> | 2015-03-12 11:00:23 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-03-12 18:00:53 +0000 |
commit | e9e112781c3bd63bc888bed77ed8ee760adb8022 (patch) | |
tree | cf9b0acf78edb6f2608b8d38208141dc47aef18e /base/memory/shared_memory_posix.cc | |
parent | 5a685845ab0da9c089bce7caaafdc4339beb6d7c (diff) | |
download | chromium_src-e9e112781c3bd63bc888bed77ed8ee760adb8022.zip chromium_src-e9e112781c3bd63bc888bed77ed8ee760adb8022.tar.gz chromium_src-e9e112781c3bd63bc888bed77ed8ee760adb8022.tar.bz2 |
Add profiling to shared memory creation on posix systems.
The UMA profiling tool shows that creating shared memory is very janky on Macs.
BUG=466437
Review URL: https://codereview.chromium.org/997353002
Cr-Commit-Position: refs/heads/master@{#320318}
Diffstat (limited to 'base/memory/shared_memory_posix.cc')
-rw-r--r-- | base/memory/shared_memory_posix.cc | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/base/memory/shared_memory_posix.cc b/base/memory/shared_memory_posix.cc index f8efa42..d6c290f 100644 --- a/base/memory/shared_memory_posix.cc +++ b/base/memory/shared_memory_posix.cc @@ -16,6 +16,7 @@ #include "base/lazy_instance.h" #include "base/logging.h" #include "base/process/process_metrics.h" +#include "base/profiler/scoped_tracker.h" #include "base/safe_strerror_posix.h" #include "base/strings/utf_string_conversions.h" #include "base/synchronization/lock.h" @@ -118,6 +119,11 @@ bool SharedMemory::CreateAndMapAnonymous(size_t size) { // In case we want to delete it later, it may be useful to save the value // of mem_filename after FilePathForMemoryName(). bool SharedMemory::Create(const SharedMemoryCreateOptions& options) { + // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466437 + // is fixed. + tracked_objects::ScopedTracker tracking_profile1( + FROM_HERE_WITH_EXPLICIT_FUNCTION( + "466437 SharedMemory::Create::Start")); DCHECK_EQ(-1, mapped_file_); if (options.size == 0) return false; @@ -140,11 +146,22 @@ bool SharedMemory::Create(const SharedMemoryCreateOptions& options) { // Q: Why not use the shm_open() etc. APIs? // A: Because they're limited to 4mb on OS X. FFFFFFFUUUUUUUUUUU FilePath directory; - if (GetShmemTempDir(options.executable, &directory)) + if (GetShmemTempDir(options.executable, &directory)) { + // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466437 + // is fixed. + tracked_objects::ScopedTracker tracking_profile2( + FROM_HERE_WITH_EXPLICIT_FUNCTION( + "466437 SharedMemory::Create::OpenTemporaryFile")); fp.reset(CreateAndOpenTemporaryFileInDir(directory, &path)); + } if (fp) { if (options.share_read_only) { + // TODO(erikchen): Remove ScopedTracker below once + // http://crbug.com/466437 is fixed. + tracked_objects::ScopedTracker tracking_profile3( + FROM_HERE_WITH_EXPLICIT_FUNCTION( + "466437 SharedMemory::Create::OpenReadonly")); // Also open as readonly so that we can ShareReadOnlyToProcess. readonly_fd.reset(HANDLE_EINTR(open(path.value().c_str(), O_RDONLY))); if (!readonly_fd.is_valid()) { @@ -153,6 +170,12 @@ bool SharedMemory::Create(const SharedMemoryCreateOptions& options) { return false; } } + + // TODO(erikchen): Remove ScopedTracker below once http://crbug.com/466437 + // is fixed. + tracked_objects::ScopedTracker tracking_profile4( + FROM_HERE_WITH_EXPLICIT_FUNCTION( + "466437 SharedMemory::Create::Unlink")); // Deleting the file prevents anyone else from mapping it in (making it // private), and prevents the need for cleanup (once the last fd is // closed, it is truly freed). |