diff --git a/process/process.go b/process/process.go index 70411c6..c60e7b4 100644 --- a/process/process.go +++ b/process/process.go @@ -127,6 +127,7 @@ type PageFaultsStat struct { MajorFaults uint64 `json:"majorFaults"` ChildMinorFaults uint64 `json:"childMinorFaults"` ChildMajorFaults uint64 `json:"childMajorFaults"` + TotalFaults uint64 `json:"totalFaults"` } // Resource limit constants are from /usr/include/x86_64-linux-gnu/bits/resource.h diff --git a/process/process_linux.go b/process/process_linux.go index 68a8c88..8adb0e3 100644 --- a/process/process_linux.go +++ b/process/process_linux.go @@ -1135,6 +1135,7 @@ func (p *Process) fillFromTIDStatWithContext(ctx context.Context, tid int32) (ui MajorFaults: majFault, ChildMinorFaults: cMinFault, ChildMajorFaults: cMajFault, + TotalFaults: minFault + majFault + cMinFault + cMajFault, } return terminal, int32(ppid), cpuTimes, createTime, uint32(rtpriority), nice, faults, nil diff --git a/process/process_windows.go b/process/process_windows.go index 012886d..1924273 100644 --- a/process/process_windows.go +++ b/process/process_windows.go @@ -632,7 +632,16 @@ func (p *Process) MemoryInfoExWithContext(ctx context.Context) (*MemoryInfoExSta } func (p *Process) PageFaultsWithContext(ctx context.Context) (*PageFaultsStat, error) { - return nil, common.ErrNotImplementedError + mem, err := getMemoryInfo(p.Pid) + if err != nil { + return nil, err + } + + ret := &PageFaultsStat{ + TotalFaults: uint64(mem.PageFaultCount), + } + + return ret, nil } func (p *Process) ChildrenWithContext(ctx context.Context) ([]*Process, error) {