소스 검색

Add debug infos in CmdInfo to know the amount of fds and goroutines in use

Guillaume J. Charmes 12 년 전
부모
커밋
99f9b69716
2개의 변경된 파일16개의 추가작업 그리고 0개의 파일을 삭제
  1. 6 0
      commands.go
  2. 10 0
      utils.go

+ 6 - 0
commands.go

@@ -203,6 +203,12 @@ func (srv *Server) CmdInfo(stdin io.ReadCloser, stdout io.Writer, args ...string
 		len(srv.runtime.List()),
 		VERSION,
 		imgcount)
+
+	if !rcli.DEBUG_FLAG {
+		return nil
+	}
+	fmt.Fprintf(stdout, "debug mode enabled\n")
+	fmt.Fprintf(stdout, "fds: %d\ngoroutines: %d\n", getTotalUsedFds(), runtime.NumGoroutine())
 	return nil
 }
 

+ 10 - 0
utils.go

@@ -7,6 +7,7 @@ import (
 	"fmt"
 	"github.com/dotcloud/docker/rcli"
 	"io"
+	"io/ioutil"
 	"net/http"
 	"os"
 	"os/exec"
@@ -260,3 +261,12 @@ func (w *writeBroadcaster) Close() error {
 func newWriteBroadcaster() *writeBroadcaster {
 	return &writeBroadcaster{list.New()}
 }
+
+func getTotalUsedFds() int {
+	if fds, err := ioutil.ReadDir(fmt.Sprintf("/proc/%d/fd", os.Getpid())); err != nil {
+		Debugf("Error opening /proc/%d/fd: %s", os.Getpid(), err)
+	} else {
+		return len(fds)
+	}
+	return -1
+}