diff --git a/pkg/project/projects.go b/pkg/project/projects.go index fa33005..9e0c1d5 100644 --- a/pkg/project/projects.go +++ b/pkg/project/projects.go @@ -162,16 +162,17 @@ func (ps Projects) String() string { return "" } - result += "Projectname\tGw\tIP\tMAC\tPids\n" + result += "Projectname\tGw\tIP\tMem\tPids\tMAC\n" for _, p := range ps { pids := []string{} + p.Process[0].Mem = p.Process[0].GetMem(p.Process[0].Pid) for _, instance := range p.Process { pids = append(pids, strconv.Itoa(instance.Pid)) } - result += fmt.Sprintf("%s\t%s\t%s\t%s\t%s\n", p.ProjectName, p.Network[0].Gw, p.Network[0].Ip, p.Network[0].Mac, tools.Join(pids, ", ")) + result += fmt.Sprintf("%s\t%s\t%s\t%s\t%s\t%s\n", p.ProjectName, p.Network[0].Gw, p.Network[0].Ip, p.Process[0].Mem,tools.Join(pids, ", "),p.Network[0].Mac) for i := 1; i < len(p.Network); i++ { result += fmt.Sprintf("\t%s\t%s\t%s\n", p.Network[i].Gw, p.Network[i].Ip, p.Network[i].Mac) diff --git a/pkg/runner/runner.go b/pkg/runner/runner.go index 37b2b4e..f6b2808 100644 --- a/pkg/runner/runner.go +++ b/pkg/runner/runner.go @@ -7,6 +7,9 @@ import ( "os" "os/exec" "syscall" + "log" + "strings" + "strconv" "github.com/deferpanic/virgo/pkg/tools" ) @@ -25,6 +28,7 @@ type ExecRunner struct { proc *exec.Cmd Detached bool Pid int + Mem string } func NewExecRunner(stdout, stderr *os.File, detached bool) *ExecRunner { @@ -81,6 +85,26 @@ func (r *ExecRunner) Exec(name string, args ...string) error { return err } +func (r *ExecRunner) GetMem(pid int) string { + var c string = "/bin/cat" + out, err := exec.Command(c, "/proc/" + strconv.Itoa(pid) + "/smaps").Output() + if err != nil { + log.Fatal(err) + } + _ = err + var mem = strings.Split(string(out[:]), "\n") + var sum int = 0 + for _, element := range mem { + var line = strings.Fields(element) + if (len(line) > 0 && line[0] == "Pss:") { + tmp, _ := strconv.Atoi(line[1]) + sum = sum + tmp + } + } + + return string(strconv.Itoa(sum) + "kB") +} + func (r *ExecRunner) Run(name string, args ...string) ([]byte, error) { return exec.Command(tools.Join(args, " ")).CombinedOutput() }