aboutsummaryrefslogtreecommitdiff
path: root/src/zenserver/admin/admin.cpp
diff options
context:
space:
mode:
authorDan Engelbrecht <[email protected]>2023-11-13 16:19:39 +0100
committerGitHub <[email protected]>2023-11-13 16:19:39 +0100
commitd52bed8d5a37a39c88b78a19e22f2b7b3f6dd1d6 (patch)
tree2709bce7020faa9c73e784dd2a5997b384395b56 /src/zenserver/admin/admin.cpp
parentpackage dependency clean-ups (#531) (diff)
downloadzen-d52bed8d5a37a39c88b78a19e22f2b7b3f6dd1d6.tar.xz
zen-d52bed8d5a37a39c88b78a19e22f2b7b3f6dd1d6.zip
gc history log (#519)
- Feature: Writes a `gc.log` with settings and detailed result after each GC execution (version 2 only) - Break out file name rotate to allow access for gclog - CompactBinaryToJson(MemoryView Data, StringBuilderBase& InBuilder)
Diffstat (limited to 'src/zenserver/admin/admin.cpp')
-rw-r--r--src/zenserver/admin/admin.cpp101
1 files changed, 4 insertions, 97 deletions
diff --git a/src/zenserver/admin/admin.cpp b/src/zenserver/admin/admin.cpp
index 00a5c79ed..d4c69f41b 100644
--- a/src/zenserver/admin/admin.cpp
+++ b/src/zenserver/admin/admin.cpp
@@ -231,101 +231,6 @@ HttpAdminService::HttpAdminService(GcScheduler& Scheduler,
Response << "DiskUsed" << NiceBytes(State.DiskUsed);
Response << "DiskFree" << NiceBytes(State.DiskFree);
- auto WriteReferencerStats = [&](CbObjectWriter& Response, const GcReferencerStats& Stats) {
- if (Stats.Count == 0)
- {
- return;
- }
- Response << "Count" << Stats.Count;
- Response << "Expired" << Stats.Expired;
- Response << "Deleted" << Stats.Deleted;
-
- Response << "RemovedDisk" << NiceBytes(Stats.RemovedDisk);
- Response << "RemovedMemory" << NiceBytes(Stats.RemovedMemory);
-
- Response << "RemoveExpiredData" << NiceTimeSpanMs(Stats.RemoveExpiredDataMS.count());
- Response << "CreateReferenceCheckers" << NiceTimeSpanMs(Stats.CreateReferenceCheckersMS.count());
- Response << "LockState" << NiceTimeSpanMs(Stats.LockStateMS.count());
- Response << "Elapsed" << NiceTimeSpanMs(Stats.ElapsedMS.count());
- };
-
- auto WriteReferenceStoreStats = [&](CbObjectWriter& Response, const GcReferenceStoreStats& Stats) {
- if (Stats.Count == 0)
- {
- return;
- }
- Response << "Count" << Stats.Count;
- Response << "Pruned" << Stats.Pruned;
- Response << "Compacted" << Stats.Compacted;
-
- Response << "RemovedDisk" << NiceBytes(Stats.RemovedDisk);
- Response << "RemovedMemory" << NiceBytes(Stats.RemovedMemory);
-
- Response << "CreateReferencePruner" << NiceTimeSpanMs(Stats.CreateReferencePrunerMS.count());
- Response << "RemoveUnreferencedData" << NiceTimeSpanMs(Stats.RemoveUnreferencedDataMS.count());
- Response << "CompactReferenceStore" << NiceTimeSpanMs(Stats.CompactReferenceStoreMS.count());
- Response << "Elapsed" << NiceTimeSpanMs(Stats.ElapsedMS.count());
- };
-
- auto WriteGCResult = [&](CbObjectWriter& Response, const GcResult& Result) {
- Response << "RemovedDisk" << NiceBytes(Result.RemovedDisk);
- Response << "RemovedMemory" << NiceBytes(Result.RemovedMemory);
- Response << "WriteBlock" << NiceTimeSpanMs(Result.WriteBlockMS.count());
- Response << "Elapsed" << NiceTimeSpanMs(Result.ElapsedMS.count());
-
- if (!Details)
- {
- return;
- }
-
- Response << "RemoveExpiredData" << NiceTimeSpanMs(Result.RemoveExpiredDataMS.count());
- Response << "CreateReferenceCheckers" << NiceTimeSpanMs(Result.CreateReferenceCheckersMS.count());
- Response << "LockState" << NiceTimeSpanMs(Result.LockStateMS.count());
-
- Response << "CreateReferencePruner" << NiceTimeSpanMs(Result.CreateReferencePrunerMS.count());
- Response << "RemoveUnreferencedData" << NiceTimeSpanMs(Result.RemoveUnreferencedDataMS.count());
- Response << "CompactReferenceStore" << NiceTimeSpanMs(Result.CompactReferenceStoreMS.count());
-
- Response.BeginObject("ReferencerStats");
- {
- WriteReferencerStats(Response, Result.ReferencerStat);
- }
- Response.EndObject();
-
- Response.BeginObject("ReferenceStoreStats");
- {
- WriteReferenceStoreStats(Response, Result.ReferenceStoreStat);
- }
- Response.EndObject();
-
- if (!Result.ReferencerStats.empty())
- {
- Response.BeginArray("Referencers");
- {
- for (const std::pair<std::string, GcReferencerStats>& It : Result.ReferencerStats)
- {
- Response.BeginObject();
- Response << "Name" << It.first;
- WriteReferencerStats(Response, It.second);
- Response.EndObject();
- }
- }
- Response.EndArray();
- }
- if (!Result.ReferenceStoreStats.empty())
- {
- Response.BeginArray("ReferenceStores");
- for (const std::pair<std::string, GcReferenceStoreStats>& It : Result.ReferenceStoreStats)
- {
- Response.BeginObject();
- Response << "Name" << It.first;
- WriteReferenceStoreStats(Response, It.second);
- Response.EndObject();
- }
- Response.EndArray();
- }
- };
-
Response.BeginObject("FullGC");
{
Response << "LastTime" << fmt::format("{}", State.LastFullGcTime);
@@ -336,7 +241,8 @@ HttpAdminService::HttpAdminService(GcScheduler& Scheduler,
}
if (State.LastFullGCV2Result)
{
- WriteGCResult(Response, State.LastFullGCV2Result.value());
+ const bool HumanReadable = true;
+ WriteGCResult(Response, State.LastFullGCV2Result.value(), HumanReadable, Details);
}
else
{
@@ -353,7 +259,8 @@ HttpAdminService::HttpAdminService(GcScheduler& Scheduler,
if (State.LastLightweightGCV2Result)
{
- WriteGCResult(Response, State.LastLightweightGCV2Result.value());
+ const bool HumanReadable = true;
+ WriteGCResult(Response, State.LastLightweightGCV2Result.value(), HumanReadable, Details);
}
else
{