libsysprof-profile: add sysinfo metadata to capture

This commit is contained in:
Christian Hergert
2023-07-10 10:47:27 -07:00
parent 788bb949f1
commit b82b2b5434

View File

@ -20,6 +20,7 @@
#include "config.h"
#include <sys/sysinfo.h>
#include <sys/utsname.h>
#include <libdex.h>
@ -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"));