23 Star 19 Fork 75

src-openEuler / openjdk-1.8.0

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
jcmd-mnt-add-start-time-and-end-time.patch 4.35 KB
一键复制 编辑 原始数据 按行查看 历史
crash888 提交于 2023-05-06 10:57 . #I70J8T:upgrade to jdk8u372-ga
From d16c3a864883eade51aac931db1ff403e90ac959 Mon Sep 17 00:00:00 2001
From: z30010524 <zhangyunbo7@huawei.com>
Date: Tue, 7 Feb 2023 15:31:05 +0000
Subject: [PATCH 08/15] jcmd mnt add start time and end time
DTS/AR: AR.SR.02ce7e6e.001
Summary: <JDK> :jcmd mnt add start time and end time
LLT: NA
Patch Type:huawei
Bug url: NA
---
hotspot/src/share/vm/services/memReporter.cpp | 15 ++++++++++++++-
hotspot/src/share/vm/services/nmtDCmd.cpp | 14 +++++++++++++-
hotspot/src/share/vm/services/nmtDCmd.hpp | 9 +++++++++
3 files changed, 36 insertions(+), 2 deletions(-)
diff --git a/hotspot/src/share/vm/services/memReporter.cpp b/hotspot/src/share/vm/services/memReporter.cpp
index a324890d3..8ea363805 100644
--- a/hotspot/src/share/vm/services/memReporter.cpp
+++ b/hotspot/src/share/vm/services/memReporter.cpp
@@ -24,6 +24,7 @@
#include "precompiled.hpp"
#include "memory/allocation.hpp"
+#include "services/nmtDCmd.hpp"
#include "services/mallocTracker.hpp"
#include "services/memReporter.hpp"
#include "services/virtualMemoryTracker.hpp"
@@ -294,7 +295,19 @@ void MemDetailReporter::report_virtual_memory_region(const ReservedMemoryRegion*
void MemSummaryDiffReporter::report_diff() {
const char* scale = current_scale();
outputStream* out = output();
- out->print_cr("\nNative Memory Tracking:\n");
+ time_t startTime = NMTDCmd::get_start_time();
+ time_t endTime = time(0);
+ struct tm endTimeTm = {0};
+ if (localtime_r(&endTime, &endTimeTm) == NULL) {
+ out->print_cr("\nNative Memory Tracking:\n");
+ } else {
+ out->print_cr("\nNative Memory Tracking: end time is %d-%02d-%02d %02d:%02d:%02d, elapsed time is %d secs\n",
+ static_cast<int>(endTimeTm.tm_year) + START_YEAR,
+ static_cast<int>(endTimeTm.tm_mon) + 1,
+ static_cast<int>(endTimeTm.tm_mday), static_cast<int>(endTimeTm.tm_hour),
+ static_cast<int>(endTimeTm.tm_min), static_cast<int>(endTimeTm.tm_sec),
+ static_cast<int>(endTime - startTime));
+ }
// Overall diff
out->print("Total: ");
diff --git a/hotspot/src/share/vm/services/nmtDCmd.cpp b/hotspot/src/share/vm/services/nmtDCmd.cpp
index 2635bbb6e..417a58c59 100644
--- a/hotspot/src/share/vm/services/nmtDCmd.cpp
+++ b/hotspot/src/share/vm/services/nmtDCmd.cpp
@@ -73,6 +73,7 @@ size_t NMTDCmd::get_scale(const char* scale) const {
return NMTUtil::scale_from_name(scale);
}
+time_t NMTDCmd::_start_time = 0;
void NMTDCmd::execute(DCmdSource source, TRAPS) {
// Check NMT state
// native memory tracking has to be on
@@ -128,7 +129,18 @@ void NMTDCmd::execute(DCmdSource source, TRAPS) {
if (!baseline.baseline(MemTracker::tracking_level() != NMT_detail)) {
output()->print_cr("Baseline failed");
} else {
- output()->print_cr("Baseline succeeded");
+ NMTDCmd::set_start_time(time(0));
+ time_t startTime = NMTDCmd::get_start_time();
+ struct tm startTimeTm = {0};
+ if (localtime_r(&startTime, &startTimeTm) == NULL) {
+ output()->print_cr("Baseline succeeded");
+ } else {
+ output()->print_cr("Baseline succeeded, start time is %d-%02d-%02d %02d:%02d:%02d",
+ static_cast<int>(startTimeTm.tm_year) + START_YEAR,
+ static_cast<int>(startTimeTm.tm_mon) + 1,
+ static_cast<int>(startTimeTm.tm_mday), static_cast<int>(startTimeTm.tm_hour),
+ static_cast<int>(startTimeTm.tm_min), static_cast<int>(startTimeTm.tm_sec));
+ }
}
} else if (_summary_diff.value()) {
MemBaseline& baseline = MemTracker::get_baseline();
diff --git a/hotspot/src/share/vm/services/nmtDCmd.hpp b/hotspot/src/share/vm/services/nmtDCmd.hpp
index df1ab367f..fc7af5c8d 100644
--- a/hotspot/src/share/vm/services/nmtDCmd.hpp
+++ b/hotspot/src/share/vm/services/nmtDCmd.hpp
@@ -32,6 +32,8 @@
#include "services/memBaseline.hpp"
#include "services/mallocTracker.hpp"
+const int START_YEAR = 1900; // tm struct, the number of years since 1900.
+
/**
* Native memory tracking DCmd implementation
*/
@@ -61,9 +63,16 @@ class NMTDCmd: public DCmdWithParser {
return p;
}
static int num_arguments();
+ static void set_start_time(const time_t &time) {
+ _start_time = time;
+ }
+ static time_t get_start_time() {
+ return _start_time;
+ }
virtual void execute(DCmdSource source, TRAPS);
private:
+ static time_t _start_time;
void report(bool summaryOnly, size_t scale);
void report_diff(bool summaryOnly, size_t scale);
--
2.19.0
1
https://gitee.com/src-openeuler/openjdk-1.8.0.git
git@gitee.com:src-openeuler/openjdk-1.8.0.git
src-openeuler
openjdk-1.8.0
openjdk-1.8.0
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891