Split `ResourceUsage` into `MemoryUsage` and setup specific stats

This commit is contained in:
Martchus 2022-04-24 18:25:22 +02:00
parent 142f6466ae
commit e343b3ca44
4 changed files with 25 additions and 10 deletions

View File

@ -1,4 +1,5 @@
#include "./resourceusage.h"
#include "./serversetup.h"
#if defined(PLATFORM_WINDOWS)
#include <psapi.h>
@ -9,9 +10,11 @@
#include <unistd.h>
#endif
#include <filesystem>
namespace LibRepoMgr {
ResourceUsage::ResourceUsage()
MemoryUsage::MemoryUsage()
{
#if defined(PLATFORM_WINDOWS)
auto info = PROCESS_MEMORY_COUNTERS();
@ -35,6 +38,16 @@ ResourceUsage::ResourceUsage()
#endif
}
ResourceUsage::ResourceUsage(ServiceSetup &setup)
{
auto ec = std::error_code();
packageDbSize = std::filesystem::file_size(setup.dbPath, ec);
actionsDbSize = std::filesystem::file_size(setup.building.dbPath, ec);
cachedPackages = setup.config.cachedPackages();
actionsCount = setup.building.buildActionCount();
runningActionsCount = setup.building.runningBuildActionCount();
}
} // namespace LibRepoMgr
#include "reflection/resourceusage.h"

View File

@ -7,13 +7,20 @@
namespace LibRepoMgr {
struct LIBREPOMGR_EXPORT ResourceUsage : public ReflectiveRapidJSON::JsonSerializable<ResourceUsage> {
explicit ResourceUsage();
struct ServiceSetup;
struct LIBREPOMGR_EXPORT MemoryUsage : public ReflectiveRapidJSON::JsonSerializable<MemoryUsage> {
explicit MemoryUsage();
std::size_t virtualMemory = 0;
std::size_t residentSetSize = 0;
std::size_t sharedResidentSetSize = 0;
std::size_t peakResidentSetSize = 0;
};
struct LIBREPOMGR_EXPORT ResourceUsage : public MemoryUsage, public ReflectiveRapidJSON::JsonSerializable<ResourceUsage> {
explicit ResourceUsage(ServiceSetup &setup);
std::size_t packageDbSize = 0;
std::size_t actionsDbSize = 0;
std::size_t cachedPackages = 0;

View File

@ -874,13 +874,8 @@ ServiceStatus::ServiceStatus(ServiceSetup &setup)
, config(setup.config.computeStatus())
, actions(setup.building.metaInfo)
, presets(setup.building.presets)
, resourceUsage(setup)
{
auto ec = std::error_code();
resourceUsage.packageDbSize = std::filesystem::file_size(setup.dbPath, ec);
resourceUsage.actionsDbSize = std::filesystem::file_size(setup.building.dbPath, ec);
resourceUsage.cachedPackages = setup.config.cachedPackages();
resourceUsage.actionsCount = setup.building.buildActionCount();
resourceUsage.runningActionsCount = setup.building.runningBuildActionCount();
}
} // namespace LibRepoMgr

View File

@ -221,7 +221,7 @@ struct LIBREPOMGR_EXPORT ServiceStatus : public ReflectiveRapidJSON::JsonSeriali
const LibPkg::Status config;
const BuildActionMetaInfo &actions;
const BuildPresets &presets;
ResourceUsage resourceUsage;
const ResourceUsage resourceUsage;
};
inline ServiceStatus ServiceSetup::computeStatus()