From b82b2b5434fc1b35c91cd379ed47275cd3ecc16c Mon Sep 17 00:00:00 2001 From: Christian Hergert Date: Mon, 10 Jul 2023 10:47:27 -0700 Subject: [PATCH] libsysprof-profile: add sysinfo metadata to capture --- src/libsysprof-profile/sysprof-recording.c | 30 ++++++++++++++++++++++ 1 file changed, 30 insertions(+) diff --git a/src/libsysprof-profile/sysprof-recording.c b/src/libsysprof-profile/sysprof-recording.c index 247a7a72..cc69c662 100644 --- a/src/libsysprof-profile/sysprof-recording.c +++ b/src/libsysprof-profile/sysprof-recording.c @@ -20,6 +20,7 @@ #include "config.h" +#include #include #include @@ -128,6 +129,18 @@ add_metadata_int (SysprofRecording *self, -1, -1, id, str, -1); } +static inline void +add_metadata_int64 (SysprofRecording *self, + const char *id, + gint64 value) +{ + char str[32]; + g_snprintf (str, sizeof str, "%"G_GINT64_FORMAT, value); + sysprof_capture_writer_add_metadata (self->writer, + SYSPROF_CAPTURE_CURRENT_TIME, + -1, -1, id, str, -1); +} + static DexFuture * sysprof_recording_fiber (gpointer user_data) { @@ -138,6 +151,7 @@ sysprof_recording_fiber (gpointer user_data) g_autoptr(DexFuture) message = NULL; g_autoptr(GError) error = NULL; struct utsname uts; + struct sysinfo si; gint64 begin_time; gint64 end_time; @@ -184,6 +198,22 @@ sysprof_recording_fiber (gpointer user_data) add_metadata (self, "uname.machine", uts.machine); } + /* More system information via sysinfo */ + if (sysinfo (&si) == 0) + { + add_metadata_int64 (self, "sysinfo.uptime", si.uptime); + add_metadata_int64 (self, "sysinfo.totalram", si.totalram); + add_metadata_int64 (self, "sysinfo.freeram", si.freeram); + add_metadata_int64 (self, "sysinfo.sharedram", si.sharedram); + add_metadata_int64 (self, "sysinfo.bufferram", si.bufferram); + add_metadata_int64 (self, "sysinfo.totalswap", si.totalswap); + add_metadata_int64 (self, "sysinfo.freeswap", si.freeswap); + add_metadata_int64 (self, "sysinfo.procs", si.procs); + add_metadata_int64 (self, "sysinfo.totalhigh", si.totalhigh); + add_metadata_int64 (self, "sysinfo.freehigh", si.freehigh); + add_metadata_int64 (self, "sysinfo.mem_unit", si.mem_unit); + } + /* Some environment variables/info for correlating */ add_metadata (self, "USER", g_get_user_name ()); add_metadata (self, "DISPLAY", g_getenv ("DISPLAY"));