Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(154)

Side by Side Diff: services/resource_coordinator/memory/coordinator/coordinator_impl.h

Issue 2871223002: memory-infra: add ProcessType and expose data in RequestGlobalDump() (Closed)
Patch Set: review comments Created 3 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
1 // Copyright 2017 The Chromium Authors. All rights reserved. 1 // Copyright 2017 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_ 5 #ifndef SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_
6 #define SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_ 6 #define SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_
7 7
8 #include <list> 8 #include <list>
9 #include <map>
9 #include <set> 10 #include <set>
10 #include <unordered_map>
11 11
12 #include "base/memory/ref_counted.h" 12 #include "base/memory/ref_counted.h"
13 #include "base/threading/thread_checker.h" 13 #include "base/threading/thread_checker.h"
14 #include "base/trace_event/memory_dump_request_args.h" 14 #include "base/trace_event/memory_dump_request_args.h"
15 #include "mojo/public/cpp/bindings/binding.h" 15 #include "mojo/public/cpp/bindings/binding.h"
16 #include "mojo/public/cpp/bindings/binding_set.h" 16 #include "mojo/public/cpp/bindings/binding_set.h"
17 #include "services/resource_coordinator/public/cpp/memory/coordinator.h" 17 #include "services/resource_coordinator/public/cpp/memory/coordinator.h"
18 #include "services/resource_coordinator/public/interfaces/memory/memory_instrume ntation.mojom.h" 18 #include "services/resource_coordinator/public/interfaces/memory/memory_instrume ntation.mojom.h"
19 19
20 namespace memory_instrumentation { 20 namespace memory_instrumentation {
(...skipping 17 matching lines...) Expand all
38 private: 38 private:
39 friend std::default_delete<CoordinatorImpl>; // For testing 39 friend std::default_delete<CoordinatorImpl>; // For testing
40 friend class CoordinatorImplTest; // For testing 40 friend class CoordinatorImplTest; // For testing
41 41
42 struct QueuedMemoryDumpRequest { 42 struct QueuedMemoryDumpRequest {
43 QueuedMemoryDumpRequest(const base::trace_event::MemoryDumpRequestArgs args, 43 QueuedMemoryDumpRequest(const base::trace_event::MemoryDumpRequestArgs args,
44 const RequestGlobalMemoryDumpCallback callback); 44 const RequestGlobalMemoryDumpCallback callback);
45 ~QueuedMemoryDumpRequest(); 45 ~QueuedMemoryDumpRequest();
46 const base::trace_event::MemoryDumpRequestArgs args; 46 const base::trace_event::MemoryDumpRequestArgs args;
47 const RequestGlobalMemoryDumpCallback callback; 47 const RequestGlobalMemoryDumpCallback callback;
48
49 // Collects the data received from OnProcessMemoryDumpResponse().
50 std::vector<mojom::ProcessMemoryDumpPtr> process_memory_dumps;
48 }; 51 };
49 52
50 ~CoordinatorImpl() override; 53 ~CoordinatorImpl() override;
51 54
52 // mojom::Coordinator 55 // mojom::Coordinator
53 void RegisterProcessLocalDumpManager( 56 void RegisterProcessLocalDumpManager(
54 mojom::ProcessLocalDumpManagerPtr process_manager) override; 57 mojom::ProcessLocalDumpManagerPtr process_manager) override;
55 58
56 // Broadcasts a dump request to all the process-local managers registered and 59 // Broadcasts a dump request to all the process-local managers registered and
57 // notifies when all of them have completed, or the global dump attempt 60 // notifies when all of them have completed, or the global dump attempt
58 // failed. This is in the mojom::Coordinator interface. 61 // failed. This is in the mojom::Coordinator interface.
59 void RequestGlobalMemoryDump( 62 void RequestGlobalMemoryDump(
60 const base::trace_event::MemoryDumpRequestArgs& args, 63 const base::trace_event::MemoryDumpRequestArgs& args,
61 const RequestGlobalMemoryDumpCallback& callback) override; 64 const RequestGlobalMemoryDumpCallback& callback) override;
62 65
63 // Called when a process-local manager gets disconnected. 66 // Called when a process-local manager gets disconnected.
64 void UnregisterProcessLocalDumpManager( 67 void UnregisterProcessLocalDumpManager(
65 mojom::ProcessLocalDumpManager* process_manager); 68 mojom::ProcessLocalDumpManager* process_manager);
66 69
67 // Callback of RequestProcessMemoryDump. 70 // Callback of RequestProcessMemoryDump.
68 void OnProcessMemoryDumpResponse( 71 void OnProcessMemoryDumpResponse(
69 mojom::ProcessLocalDumpManager* process_manager, 72 mojom::ProcessLocalDumpManager* process_manager,
70 uint64_t dump_guid, 73 uint64_t dump_guid,
71 bool success, 74 bool success,
72 const base::Optional<base::trace_event::MemoryDumpCallbackResult>& 75 mojom::ProcessMemoryDumpPtr process_memory_dump);
73 result);
74 76
75 void PerformNextQueuedGlobalMemoryDump(); 77 void PerformNextQueuedGlobalMemoryDump();
76 void FinalizeGlobalMemoryDumpIfAllManagersReplied(); 78 void FinalizeGlobalMemoryDumpIfAllManagersReplied();
77 79
78 mojo::BindingSet<mojom::Coordinator> bindings_; 80 mojo::BindingSet<mojom::Coordinator> bindings_;
79 81
80 // Registered ProcessLocalDumpManagers. 82 // Registered ProcessLocalDumpManagers.
81 std::unordered_map<mojom::ProcessLocalDumpManager*, 83 std::map<mojom::ProcessLocalDumpManager*, mojom::ProcessLocalDumpManagerPtr>
82 mojom::ProcessLocalDumpManagerPtr>
83 process_managers_; 84 process_managers_;
84 85
85 // Pending process managers for RequestGlobalMemoryDump. 86 // Pending process managers for RequestGlobalMemoryDump.
86 std::set<mojom::ProcessLocalDumpManager*> pending_process_managers_; 87 std::set<mojom::ProcessLocalDumpManager*> pending_process_managers_;
87 int failed_memory_dump_count_; 88 int failed_memory_dump_count_;
88 std::list<QueuedMemoryDumpRequest> queued_memory_dump_requests_; 89 std::list<QueuedMemoryDumpRequest> queued_memory_dump_requests_;
89 90
90 const bool initialize_memory_dump_manager_; 91 const bool initialize_memory_dump_manager_;
91 92
92 base::ThreadChecker thread_checker_; 93 base::ThreadChecker thread_checker_;
93 94
94 DISALLOW_COPY_AND_ASSIGN(CoordinatorImpl); 95 DISALLOW_COPY_AND_ASSIGN(CoordinatorImpl);
95 }; 96 };
96 97
97 } // namespace memory_instrumentation 98 } // namespace memory_instrumentation
98 #endif // SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_ 99 #endif // SERVICES_RESOURCE_COORDINATOR_MEMORY_COORDINATOR_COORDINATOR_IMPL_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698