summaryrefslogtreecommitdiff
path: root/process.c
diff options
context:
space:
mode:
authorKevin Newton <kddnewton@gmail.com>2022-01-11 12:47:22 -0500
committerAaron Patterson <aaron.patterson@gmail.com>2022-01-21 14:34:53 -0800
commitfc6fd4c31e957a4b15ba2c03cbd1cea0a8af6513 (patch)
treeec1681ac98d098f35d2751fd4d33138d3141f8a0 /process.c
parent5e3a32021849718ae483eaaa9fbf155f91828039 (diff)
downloadruby-fc6fd4c31e957a4b15ba2c03cbd1cea0a8af6513.tar.gz
Accurately report VM memsize
Currently the calculation only counts the size of the struct. This commit adds the size of the associated st tables, id tables, and linked lists. Still missing is the size of the ractors and (potentially) the size of the object space.
Diffstat (limited to 'process.c')
-rw-r--r--process.c15
1 files changed, 15 insertions, 0 deletions
diff --git a/process.c b/process.c
index 83c44fdd48..8eee6f772a 100644
--- a/process.c
+++ b/process.c
@@ -1090,6 +1090,21 @@ waitpid_signal(struct waitpid_state *w)
return FALSE;
}
+// Used for VM memsize reporting. Returns the size of a list of waitpid_state
+// structs. Defined here because the struct definition lives here as well.
+size_t
+rb_vm_memsize_waiting_list(struct list_head *waiting_list)
+{
+ struct waitpid_state *waitpid = 0;
+ size_t size = 0;
+
+ list_for_each(waiting_list, waitpid, wnode) {
+ size += sizeof(struct waitpid_state);
+ }
+
+ return size;
+}
+
/*
* When a thread is done using sigwait_fd and there are other threads
* sleeping on waitpid, we must kick one of the threads out of