mirror of
https://github.com/dart-lang/sdk
synced 2024-10-14 15:57:17 +00:00
[vm] Cleanup unused metric accessors in VM
Only a few of the metrics are accessed via Dart C API, so we can remove the rest from the C API surface. The VM metrics seem to be unused entirely. TEST=ci Change-Id: I03be78ed2f223aa6fba80f663fb12c8ef9a66cb7 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/291762 Reviewed-by: Ryan Macnak <rmacnak@google.com> Commit-Queue: Martin Kustermann <kustermann@google.com> Reviewed-by: Slava Egorov <vegorov@google.com>
This commit is contained in:
parent
b984c308be
commit
042c3f6c76
|
@ -468,41 +468,19 @@ DART_EXPORT void Dart_SetTimelineRecorderCallback(
|
|||
|
||||
/**
|
||||
* Return metrics gathered for the VM and individual isolates.
|
||||
*
|
||||
* NOTE: Non-heap metrics are not available in PRODUCT builds of Dart.
|
||||
* Calling the non-heap metric functions on a PRODUCT build might return invalid metrics.
|
||||
*/
|
||||
DART_EXPORT int64_t Dart_VMIsolateCountMetric(); // Counter
|
||||
DART_EXPORT int64_t Dart_VMCurrentRSSMetric(); // Byte
|
||||
DART_EXPORT int64_t Dart_VMPeakRSSMetric(); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapOldUsedMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapOldUsedMaxMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapOldCapacityMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapOldCapacityMaxMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapOldExternalMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapNewUsedMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapNewUsedMaxMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapNewCapacityMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapNewCapacityMaxMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapNewExternalMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapGlobalUsedMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateGroupHeapGlobalUsedMaxMetric(Dart_IsolateGroup group); // Byte
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateRunnableLatencyMetric(Dart_Isolate isolate); // Microsecond
|
||||
DART_EXPORT int64_t
|
||||
Dart_IsolateRunnableHeapSizeMetric(Dart_Isolate isolate); // Byte
|
||||
|
||||
/*
|
||||
* ========
|
||||
|
|
|
@ -334,7 +334,6 @@ char* Dart::DartInit(const Dart_InitializeParams* params) {
|
|||
NativeSymbolResolver::Init();
|
||||
NOT_IN_PRODUCT(Profiler::Init());
|
||||
Page::Init();
|
||||
NOT_IN_PRODUCT(Metric::Init());
|
||||
StoreBuffer::Init();
|
||||
MarkingStack::Init();
|
||||
TargetCPUFeatures::Init();
|
||||
|
@ -700,7 +699,6 @@ char* Dart::Cleanup() {
|
|||
}
|
||||
bool result = Thread::EnterIsolate(vm_isolate_);
|
||||
ASSERT(result);
|
||||
Metric::Cleanup();
|
||||
Thread::ExitIsolate();
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -1226,20 +1226,6 @@ DART_EXPORT bool Dart_IsVMFlagSet(const char* flag_name) {
|
|||
return Flags::IsSet(flag_name);
|
||||
}
|
||||
|
||||
#if !defined(PRODUCT)
|
||||
#define VM_METRIC_API(type, variable, name, unit) \
|
||||
DART_EXPORT int64_t Dart_VM##variable##Metric() { \
|
||||
return vm_metric_##variable.Value(); \
|
||||
}
|
||||
VM_METRIC_LIST(VM_METRIC_API);
|
||||
#undef VM_METRIC_API
|
||||
#else // !defined(PRODUCT)
|
||||
#define VM_METRIC_API(type, variable, name, unit) \
|
||||
DART_EXPORT int64_t Dart_VM##variable##Metric() { return -1; }
|
||||
VM_METRIC_LIST(VM_METRIC_API)
|
||||
#undef VM_METRIC_API
|
||||
#endif // !defined(PRODUCT)
|
||||
|
||||
#define ISOLATE_GROUP_METRIC_API(type, variable, name, unit) \
|
||||
DART_EXPORT int64_t Dart_IsolateGroup##variable##Metric( \
|
||||
Dart_IsolateGroup isolate_group) { \
|
||||
|
@ -1250,7 +1236,7 @@ VM_METRIC_LIST(VM_METRIC_API)
|
|||
IsolateGroup* group = reinterpret_cast<IsolateGroup*>(isolate_group); \
|
||||
return group->Get##variable##Metric()->Value(); \
|
||||
}
|
||||
ISOLATE_GROUP_METRIC_LIST(ISOLATE_GROUP_METRIC_API)
|
||||
DART_API_ISOLATE_GROUP_METRIC_LIST(ISOLATE_GROUP_METRIC_API)
|
||||
#undef ISOLATE_GROUP_METRIC_API
|
||||
|
||||
#if !defined(PRODUCT)
|
||||
|
|
|
@ -191,36 +191,6 @@ int64_t MetricPeakRSS::Value() const {
|
|||
}
|
||||
#endif // !defined(PRODUCT)
|
||||
|
||||
#if !defined(PRODUCT)
|
||||
|
||||
#define VM_METRIC_VARIABLE(type, variable, name, unit) \
|
||||
type vm_metric_##variable;
|
||||
VM_METRIC_LIST(VM_METRIC_VARIABLE);
|
||||
#undef VM_METRIC_VARIABLE
|
||||
|
||||
void Metric::Init() {
|
||||
#define VM_METRIC_INIT(type, variable, name, unit) \
|
||||
vm_metric_##variable.InitInstance(name, NULL, Metric::unit);
|
||||
VM_METRIC_LIST(VM_METRIC_INIT);
|
||||
#undef VM_METRIC_INIT
|
||||
}
|
||||
|
||||
void Metric::Cleanup() {
|
||||
if (FLAG_print_metrics) {
|
||||
// Create a zone to allocate temporary strings in.
|
||||
StackZone sz(Thread::Current());
|
||||
OS::PrintErr("Printing metrics for VM\n");
|
||||
|
||||
#define VM_METRIC_INIT(type, variable, name, unit) \
|
||||
OS::PrintErr("%s\n", vm_metric_##variable.ToString());
|
||||
VM_METRIC_LIST(VM_METRIC_INIT);
|
||||
#undef VM_METRIC_INIT
|
||||
OS::PrintErr("\n");
|
||||
}
|
||||
}
|
||||
|
||||
#endif // !defined(PRODUCT)
|
||||
|
||||
MaxMetric::MaxMetric() : Metric() {
|
||||
set_value(kMinInt64);
|
||||
}
|
||||
|
|
|
@ -14,30 +14,42 @@ class IsolateGroup;
|
|||
class JSONStream;
|
||||
|
||||
// Metrics for each isolate group.
|
||||
#define ISOLATE_GROUP_METRIC_LIST(V) \
|
||||
//
|
||||
// Golem uses `--print-metrics` and relies on
|
||||
//
|
||||
// heap.old.capacity.max
|
||||
// heap.new.capacity.max
|
||||
//
|
||||
// g3 uses metrics via Dart API:
|
||||
//
|
||||
// Dart_Heap{Old,New}{Used,Capacity,External}
|
||||
//
|
||||
// All metrics are exposed via vm-service protocol.
|
||||
//
|
||||
#define DART_API_ISOLATE_GROUP_METRIC_LIST(V) \
|
||||
V(MetricHeapOldUsed, HeapOldUsed, "heap.old.used", kByte) \
|
||||
V(MaxMetric, HeapOldUsedMax, "heap.old.used.max", kByte) \
|
||||
V(MetricHeapOldCapacity, HeapOldCapacity, "heap.old.capacity", kByte) \
|
||||
V(MaxMetric, HeapOldCapacityMax, "heap.old.capacity.max", kByte) \
|
||||
V(MetricHeapOldExternal, HeapOldExternal, "heap.old.external", kByte) \
|
||||
V(MetricHeapNewUsed, HeapNewUsed, "heap.new.used", kByte) \
|
||||
V(MaxMetric, HeapNewUsedMax, "heap.new.used.max", kByte) \
|
||||
V(MetricHeapNewCapacity, HeapNewCapacity, "heap.new.capacity", kByte) \
|
||||
V(MetricHeapNewExternal, HeapNewExternal, "heap.new.external", kByte)
|
||||
|
||||
#define ISOLATE_GROUP_METRIC_LIST(V) \
|
||||
DART_API_ISOLATE_GROUP_METRIC_LIST(V) \
|
||||
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(MetricHeapNewExternal, HeapNewExternal, "heap.new.external", kByte) \
|
||||
V(MetricHeapUsed, HeapGlobalUsed, "heap.global.used", kByte) \
|
||||
V(MaxMetric, HeapGlobalUsedMax, "heap.global.used.max", kByte)
|
||||
|
||||
// Metrics for each isolate.
|
||||
//
|
||||
// All metrics are exposed via vm-service protocol.
|
||||
#define ISOLATE_METRIC_LIST(V) \
|
||||
V(Metric, RunnableLatency, "isolate.runnable.latency", kMicrosecond) \
|
||||
V(Metric, RunnableHeapSize, "isolate.runnable.heap", kByte)
|
||||
|
||||
#define VM_METRIC_LIST(V) \
|
||||
V(MetricIsolateCount, IsolateCount, "vm.isolate.count", kCounter) \
|
||||
V(MetricCurrentRSS, CurrentRSS, "vm.memory.current", kByte) \
|
||||
V(MetricPeakRSS, PeakRSS, "vm.memory.max", kByte)
|
||||
|
||||
class Metric {
|
||||
public:
|
||||
enum Unit {
|
||||
|
@ -183,13 +195,6 @@ class MetricHeapUsed : public Metric {
|
|||
virtual int64_t Value() const;
|
||||
};
|
||||
|
||||
#if !defined(PRODUCT)
|
||||
#define VM_METRIC_VARIABLE(type, variable, name, unit) \
|
||||
extern type vm_metric_##variable;
|
||||
VM_METRIC_LIST(VM_METRIC_VARIABLE);
|
||||
#undef VM_METRIC_VARIABLE
|
||||
#endif // !defined(PRODUCT)
|
||||
|
||||
} // namespace dart
|
||||
|
||||
#endif // RUNTIME_VM_METRICS_H_
|
||||
|
|
|
@ -96,23 +96,21 @@ ISOLATE_UNIT_TEST_CASE(Metric_EmbedderAPI) {
|
|||
// Ensure we've something live in new space.
|
||||
String::New("<land-in-new-space2>", Heap::kNew);
|
||||
|
||||
EXPECT(thread->isolate_group()->GetHeapOldUsedMaxMetric()->Value() > 0);
|
||||
EXPECT(thread->isolate_group()->GetHeapOldCapacityMaxMetric()->Value() > 0);
|
||||
EXPECT(thread->isolate_group()->GetHeapNewUsedMaxMetric()->Value() > 0);
|
||||
EXPECT(thread->isolate_group()->GetHeapNewCapacityMaxMetric()->Value() > 0);
|
||||
EXPECT(thread->isolate_group()->GetHeapGlobalUsedMetric()->Value() > 0);
|
||||
EXPECT(thread->isolate_group()->GetHeapGlobalUsedMaxMetric()->Value() > 0);
|
||||
|
||||
{
|
||||
TransitionVMToNative transition(thread);
|
||||
|
||||
Dart_IsolateGroup isolate_group = Dart_CurrentIsolateGroup();
|
||||
#if !defined(PRODUCT)
|
||||
EXPECT(Dart_VMIsolateCountMetric() > 0);
|
||||
#endif
|
||||
EXPECT(Dart_IsolateGroupHeapOldUsedMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapOldUsedMaxMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapOldCapacityMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapOldCapacityMaxMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapNewUsedMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapNewUsedMaxMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapNewCapacityMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapNewCapacityMaxMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapGlobalUsedMetric(isolate_group) > 0);
|
||||
EXPECT(Dart_IsolateGroupHeapGlobalUsedMaxMetric(isolate_group) > 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue