瀏覽代碼

Windows: Implement docker top for containerd

Signed-off-by: John Howard <jhoward@microsoft.com>
John Howard 6 年之前
父節點
當前提交
2f27332836

+ 2 - 2
daemon/top_windows.go

@@ -51,10 +51,10 @@ func (daemon *Daemon) ContainerTop(name string, psArgs string) (*containertypes.
 	procList.Titles = []string{"Name", "PID", "CPU", "Private Working Set"}
 
 	for _, j := range s {
-		d := time.Duration((j.KernelTime100ns + j.UserTime100ns) * 100) // Combined time in nanoseconds
+		d := time.Duration((j.KernelTime_100Ns + j.UserTime_100Ns) * 100) // Combined time in nanoseconds
 		procList.Processes = append(procList.Processes, []string{
 			j.ImageName,
-			fmt.Sprint(j.ProcessId),
+			fmt.Sprint(j.ProcessID),
 			fmt.Sprintf("%02d:%02d:%02d.%03d", int(d.Hours()), int(d.Minutes())%60, int(d.Seconds())%60, int(d.Nanoseconds()/1000000)%1000),
 			units.HumanSize(float64(j.MemoryWorkingSetPrivateBytes))})
 	}

+ 11 - 1
libcontainerd/local/local_windows.go

@@ -1138,7 +1138,17 @@ func (c *client) Summary(_ context.Context, containerID string) ([]libcontainerd
 
 	pl := make([]libcontainerdtypes.Summary, len(p))
 	for i := range p {
-		pl[i] = libcontainerdtypes.Summary(p[i])
+		pl[i] = libcontainerdtypes.Summary{
+			ImageName:                    p[i].ImageName,
+			CreatedAt:                    p[i].CreateTimestamp,
+			KernelTime_100Ns:             p[i].KernelTime100ns,
+			MemoryCommitBytes:            p[i].MemoryCommitBytes,
+			MemoryWorkingSetPrivateBytes: p[i].MemoryWorkingSetPrivateBytes,
+			MemoryWorkingSetSharedBytes:  p[i].MemoryWorkingSetSharedBytes,
+			ProcessID:                    p[i].ProcessId,
+			UserTime_100Ns:               p[i].UserTime100ns,
+			ExecID:                       "",
+		}
 	}
 	return pl, nil
 }

+ 8 - 6
libcontainerd/remote/client_windows.go

@@ -6,8 +6,9 @@ import (
 	"os"
 	"path/filepath"
 
+	"github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"
 	"github.com/containerd/containerd/cio"
-	"github.com/containerd/containerd/windows/hcsshimtypes"
+
 	libcontainerdtypes "github.com/docker/docker/libcontainerd/types"
 	specs "github.com/opencontainers/runtime-spec/specs-go"
 	"github.com/pkg/errors"
@@ -17,16 +18,17 @@ const runtimeName = "io.containerd.runhcs.v1"
 
 func summaryFromInterface(i interface{}) (*libcontainerdtypes.Summary, error) {
 	switch pd := i.(type) {
-	case *hcsshimtypes.ProcessDetails:
+	case *options.ProcessDetails:
 		return &libcontainerdtypes.Summary{
-			CreateTimestamp:              pd.CreatedAt,
 			ImageName:                    pd.ImageName,
-			KernelTime100ns:              pd.KernelTime_100Ns,
+			CreatedAt:                    pd.CreatedAt,
+			KernelTime_100Ns:             pd.KernelTime_100Ns,
 			MemoryCommitBytes:            pd.MemoryCommitBytes,
 			MemoryWorkingSetPrivateBytes: pd.MemoryWorkingSetPrivateBytes,
 			MemoryWorkingSetSharedBytes:  pd.MemoryWorkingSetSharedBytes,
-			ProcessId:                    pd.ProcessID,
-			UserTime100ns:                pd.UserTime_100Ns,
+			ProcessID:                    pd.ProcessID,
+			UserTime_100Ns:               pd.UserTime_100Ns,
+			ExecID:                       pd.ExecID,
 		}, nil
 	default:
 		return nil, errors.Errorf("Unknown process details type %T", pd)

+ 2 - 2
libcontainerd/types/types_windows.go

@@ -4,10 +4,10 @@ import (
 	"time"
 
 	"github.com/Microsoft/hcsshim"
+	"github.com/Microsoft/hcsshim/cmd/containerd-shim-runhcs-v1/options"
 )
 
-// Summary contains a ProcessList item from HCS to support `top`
-type Summary hcsshim.ProcessListItem
+type Summary options.ProcessDetails
 
 // Stats contains statistics from HCS
 type Stats struct {