Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Classes | Namespaces | Macros
metrics.h File Reference
#include "vm/allocation.h"

Go to the source code of this file.

Classes

class  dart::Metric
 
class  dart::MaxMetric
 
class  dart::MinMetric
 
class  dart::MetricHeapOldUsed
 
class  dart::MetricHeapOldCapacity
 
class  dart::MetricHeapOldExternal
 
class  dart::MetricHeapNewUsed
 
class  dart::MetricHeapNewCapacity
 
class  dart::MetricHeapNewExternal
 
class  dart::MetricIsolateCount
 
class  dart::MetricCurrentRSS
 
class  dart::MetricPeakRSS
 
class  dart::MetricHeapUsed
 

Namespaces

namespace  dart
 

Macros

#define DART_API_ISOLATE_GROUP_METRIC_LIST(V)
 
#define ISOLATE_GROUP_METRIC_LIST(V)
 
#define ISOLATE_METRIC_LIST(V)
 

Macro Definition Documentation

◆ DART_API_ISOLATE_GROUP_METRIC_LIST

#define DART_API_ISOLATE_GROUP_METRIC_LIST (   V)
Value:
V(MetricHeapOldUsed, HeapOldUsed, "heap.old.used", kByte) \
V(MetricHeapOldCapacity, HeapOldCapacity, "heap.old.capacity", kByte) \
V(MetricHeapOldExternal, HeapOldExternal, "heap.old.external", kByte) \
V(MetricHeapNewUsed, HeapNewUsed, "heap.new.used", kByte) \
V(MetricHeapNewCapacity, HeapNewCapacity, "heap.new.capacity", kByte) \
V(MetricHeapNewExternal, HeapNewExternal, "heap.new.external", kByte)
#define V(name)
Definition raw_object.h:124

Definition at line 29 of file metrics.h.

52 {
53 public:
54 enum Unit {
55 kCounter,
56 kByte,
57 kMicrosecond,
58 };
59
60 Metric();
61
62#if !defined(PRODUCT)
63 static void Init();
64 static void Cleanup();
65#endif // !defined(PRODUCT)
66
67 // Initialize a metric for an isolate.
68 void InitInstance(Isolate* isolate,
69 const char* name,
70 const char* description,
71 Unit unit);
72
73 // Initialize a metric for an isolate group.
74 void InitInstance(IsolateGroup* isolate_group,
75 const char* name,
76 const char* description,
77 Unit unit);
78
79 // Initialize a metric for the VM.
80 void InitInstance(const char* name, const char* description, Unit unit);
81
82 virtual ~Metric();
83
84#ifndef PRODUCT
85 void PrintJSON(JSONStream* stream);
86#endif // !PRODUCT
87
88 // Returns a zone allocated string.
89 static char* ValueToString(int64_t value, Unit unit);
90
91 // Returns a zone allocated string.
92 char* ToString();
93
94 int64_t value() const { return value_; }
95 void set_value(int64_t value) { value_ = value; }
96
97 void increment() { value_++; }
98
99 const char* name() const { return name_; }
100 const char* description() const { return description_; }
101 Unit unit() const { return unit_; }
102
103 // Only non-null for isolate specific metrics.
104 Isolate* isolate() const { return isolate_; }
105
106 // Only non-null for isolate group specific metrics.
107 IsolateGroup* isolate_group() const { return isolate_group_; }
108
109 static Metric* vm_head() { return vm_list_head_; }
110
111 // Override to get a callback when value is serialized to JSON.
112 // Use this for metrics that produce their value on demand.
113 virtual int64_t Value() const { return value(); }
114
115 private:
116 Isolate* isolate_ = nullptr;
117 IsolateGroup* isolate_group_ = nullptr;
118 const char* name_ = nullptr;
119 const char* description_ = nullptr;
120 Unit unit_;
121 int64_t value_;
122
123 static Metric* vm_list_head_;
125};
126
127// A Metric class that reports the maximum value observed.
128// Initial maximum is kMinInt64.
129class MaxMetric : public Metric {
130 public:
131 MaxMetric();
132
133 void SetValue(int64_t new_value);
134};
135
136// A Metric class that reports the minimum value observed.
137// Initial minimum is kMaxInt64.
138class MinMetric : public Metric {
139 public:
140 MinMetric();
141
142 void SetValue(int64_t new_value);
143};
144
145class MetricHeapOldUsed : public Metric {
146 public:
147 virtual int64_t Value() const;
148};
149
150class MetricHeapOldCapacity : public Metric {
151 public:
152 virtual int64_t Value() const;
153};
154
155class MetricHeapOldExternal : public Metric {
156 public:
157 virtual int64_t Value() const;
158};
159
160class MetricHeapNewUsed : public Metric {
161 public:
162 virtual int64_t Value() const;
163};
164
165class MetricHeapNewCapacity : public Metric {
166 public:
167 virtual int64_t Value() const;
168};
169
170class MetricHeapNewExternal : public Metric {
171 public:
172 virtual int64_t Value() const;
173};
174
175#if !defined(PRODUCT)
176class MetricIsolateCount : public Metric {
177 public:
178 virtual int64_t Value() const;
179};
180
181class MetricCurrentRSS : public Metric {
182 public:
183 virtual int64_t Value() const;
184};
185
186class MetricPeakRSS : public Metric {
187 public:
188 virtual int64_t Value() const;
189};
190#endif // !defined(PRODUCT)
191
192class MetricHeapUsed : public Metric {
193 public:
194 virtual int64_t Value() const;
195};
196
197} // namespace dart
198
199#endif // RUNTIME_VM_METRICS_H_
static void set_value(FlSettingsPortal *portal, const FlSetting *setting, GVariant *value)
uint8_t value
const char * name
Definition fuchsia.cc:50
void Init()
Unit(benchmark::kNanosecond)
const char * ToString(ax::mojom::Event event)
#define DISALLOW_COPY_AND_ASSIGN(TypeName)
Definition globals.h:581

◆ ISOLATE_GROUP_METRIC_LIST

#define ISOLATE_GROUP_METRIC_LIST (   V)
Value:
V(MaxMetric, HeapOldUsedMax, "heap.old.used.max", kByte) \
V(MaxMetric, HeapOldCapacityMax, "heap.old.capacity.max", kByte) \
V(MaxMetric, HeapNewUsedMax, "heap.new.used.max", kByte) \
V(MaxMetric, HeapNewCapacityMax, "heap.new.capacity.max", kByte) \
V(MetricHeapUsed, HeapGlobalUsed, "heap.global.used", kByte) \
V(MaxMetric, HeapGlobalUsedMax, "heap.global.used.max", kByte)
T __attribute__((ext_vector_type(N))) V
#define DART_API_ISOLATE_GROUP_METRIC_LIST(V)
Definition metrics.h:29

Definition at line 37 of file metrics.h.

◆ ISOLATE_METRIC_LIST

#define ISOLATE_METRIC_LIST (   V)
Value:
V(Metric, RunnableLatency, "isolate.runnable.latency", kMicrosecond) \
V(Metric, RunnableHeapSize, "isolate.runnable.heap", kByte)

Definition at line 49 of file metrics.h.