mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 05:17:35 +00:00
Kernel+SystemMonitor: Add fault counters
This patch adds three separate per-process fault counters: - Inode faults An inode fault happens when we've memory-mapped a file from disk and we end up having to load 1 page (4KB) of the file into memory. - Zero faults Memory returned by mmap() is lazily zeroed out. Every time we have to zero out 1 page, we count a zero fault. - CoW faults VM objects can be shared by multiple mappings that make their own unique copy iff they want to modify it. The typical reason here is memory shared between a parent and child process.
This commit is contained in:
parent
c33ac7f170
commit
35138437ef
7 changed files with 62 additions and 0 deletions
|
@ -291,6 +291,12 @@ public:
|
|||
|
||||
unsigned syscall_count() const { return m_syscall_count; }
|
||||
void did_syscall() { ++m_syscall_count; }
|
||||
unsigned inode_faults() const { return m_inode_faults; }
|
||||
void did_inode_fault() { ++m_inode_faults; }
|
||||
unsigned zero_faults() const { return m_zero_faults; }
|
||||
void did_zero_fault() { ++m_zero_faults; }
|
||||
unsigned cow_faults() const { return m_cow_faults; }
|
||||
void did_cow_fault() { ++m_cow_faults; }
|
||||
|
||||
const ELFLoader* elf_loader() const { return m_elf_loader.ptr(); }
|
||||
|
||||
|
@ -369,6 +375,9 @@ private:
|
|||
int m_next_tid { 0 };
|
||||
|
||||
unsigned m_syscall_count { 0 };
|
||||
unsigned m_inode_faults { 0 };
|
||||
unsigned m_zero_faults { 0 };
|
||||
unsigned m_cow_faults { 0 };
|
||||
|
||||
RefPtr<ProcessTracer> m_tracer;
|
||||
OwnPtr<ELFLoader> m_elf_loader;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue