From 3bcae7f4304b16bd883eb204b5c5228dda6260fb Mon Sep 17 00:00:00 2001 From: Rohit Jnagal Date: Tue, 12 May 2015 22:44:48 +0000 Subject: [PATCH] Add memory-percent to ps output. --- info/v2/container.go | 21 +++++++++++---------- manager/container.go | 25 +++++++++++++------------ pages/static/containers_js.go | 5 +++-- 3 files changed, 27 insertions(+), 24 deletions(-) diff --git a/info/v2/container.go b/info/v2/container.go index bdb1be5b..340ebcd9 100644 --- a/info/v2/container.go +++ b/info/v2/container.go @@ -168,14 +168,15 @@ type RequestOptions struct { } type ProcessInfo struct { - User string `json:"user"` - Pid int `json:"pid"` - Ppid int `json:"parent_pid"` - StartTime string `json:"start_time"` - PercentCpu string `json:"percent_cpu"` - RSS string `json:"rss"` - VirtualSize string `json:"virtual_size"` - Status string `json:"status"` - RunningTime string `json:"running_time"` - Cmd string `json:"cmd"` + User string `json:"user"` + Pid int `json:"pid"` + Ppid int `json:"parent_pid"` + StartTime string `json:"start_time"` + PercentCpu string `json:"percent_cpu"` + PercentMemory string `json:"percent_mem"` + RSS string `json:"rss"` + VirtualSize string `json:"virtual_size"` + Status string `json:"status"` + RunningTime string `json:"running_time"` + Cmd string `json:"cmd"` } diff --git a/manager/container.go b/manager/container.go index 190c2a0a..e9968ef0 100644 --- a/manager/container.go +++ b/manager/container.go @@ -130,9 +130,9 @@ func (c *containerData) GetProcessList() ([]v2.ProcessInfo, error) { } } // TODO(rjnagal): Take format as an option? - format := "user,pid,ppid,stime,pcpu,rss,vsz,stat,time,comm" + format := "user,pid,ppid,stime,pcpu,pmem,rss,vsz,stat,time,comm" args := []string{"-e", "-o", format} - expectedFields := 10 + expectedFields := 11 out, err := exec.Command("ps", args...).Output() if err != nil { return nil, fmt.Errorf("failed to execute ps command: %v", err) @@ -157,16 +157,17 @@ func (c *containerData) GetProcessList() ([]v2.ProcessInfo, error) { } if isRoot || pidMap[pid] == true { processes = append(processes, v2.ProcessInfo{ - User: fields[0], - Pid: pid, - Ppid: ppid, - StartTime: fields[3], - PercentCpu: fields[4], - RSS: fields[5], - VirtualSize: fields[6], - Status: fields[7], - RunningTime: fields[8], - Cmd: strings.Join(fields[9:], " "), + User: fields[0], + Pid: pid, + Ppid: ppid, + StartTime: fields[3], + PercentCpu: fields[4], + PercentMemory: fields[5], + RSS: fields[6], + VirtualSize: fields[7], + Status: fields[8], + RunningTime: fields[9], + Cmd: strings.Join(fields[10:], " "), }) } } diff --git a/pages/static/containers_js.go b/pages/static/containers_js.go index 94548957..6afaa842 100644 --- a/pages/static/containers_js.go +++ b/pages/static/containers_js.go @@ -427,8 +427,8 @@ function drawFileSystemUsage(machineInfo, stats) { } function drawProcesses(processInfo) { - var titles = ["User", "PID", "PPID", "Start Time", "CPU %", "RSS", "Virtual Size", "Status", "Running Time", "Command"]; - var titleTypes = ['string', 'number', 'number', 'string', 'string', 'string', 'string', 'string', 'string', 'string']; + var titles = ["User", "PID", "PPID", "Start Time", "CPU %", "MEM %", "RSS", "Virtual Size", "Status", "Running Time", "Command"]; + var titleTypes = ['string', 'number', 'number', 'string', 'string', 'string', 'string', 'string', 'string', 'string', 'string']; var data = [] for (var i = 1; i < processInfo.length; i++) { var elements = []; @@ -437,6 +437,7 @@ function drawProcesses(processInfo) { elements.push(processInfo[i].parent_pid); elements.push(processInfo[i].start_time); elements.push(processInfo[i].percent_cpu); + elements.push(processInfo[i].percent_mem); elements.push(processInfo[i].rss); elements.push(processInfo[i].virtual_size); elements.push(processInfo[i].status);