Skip to content

Commit eb2bcf6

Browse files
committed
remove --sample-interval and collect CPU stats in parallel
1 parent d1bb322 commit eb2bcf6

File tree

1 file changed

+36
-18
lines changed

1 file changed

+36
-18
lines changed

cli/stat.go

Lines changed: 36 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package cli
33
import (
44
"fmt"
55
"os"
6-
"time"
76

87
"github.com/spf13/afero"
98

@@ -20,38 +19,57 @@ func (*RootCmd) stat() *clibase.Cmd {
2019
defaultCols = append([]string{"container_cpu", "container_memory"}, defaultCols...)
2120
}
2221
var (
23-
sampleInterval time.Duration
24-
formatter = cliui.NewOutputFormatter(
22+
formatter = cliui.NewOutputFormatter(
2523
cliui.TableFormat([]statsRow{}, defaultCols),
2624
cliui.JSONFormat(),
2725
)
2826
)
2927

3028
cmd := &clibase.Cmd{
31-
Use: "stat",
32-
Short: "Show workspace resource usage.",
33-
Options: clibase.OptionSet{
34-
{
35-
Description: "Configure the sample interval.",
36-
Flag: "sample-interval",
37-
Value: clibase.DurationOf(&sampleInterval),
38-
Default: "100ms",
39-
},
40-
},
29+
Use: "stat",
30+
Short: "Show workspace resource usage.",
31+
Options: clibase.OptionSet{},
4132
Handler: func(inv *clibase.Invocation) error {
42-
st, err := clistat.New(clistat.WithSampleInterval(sampleInterval), clistat.WithFS(fs))
33+
st, err := clistat.New(clistat.WithFS(fs))
4334
if err != nil {
4435
return err
4536
}
4637

47-
// Host-level stats
4838
var sr statsRow
49-
cs, err := st.HostCPU()
50-
if err != nil {
39+
40+
// Get CPU measurements first.
41+
errCh := make(chan error, 2)
42+
go func() {
43+
cs, err := st.HostCPU()
44+
if err != nil {
45+
errCh <- err
46+
return
47+
}
48+
sr.HostCPU = cs
49+
errCh <- nil
50+
}()
51+
go func() {
52+
if ok, _ := clistat.IsContainerized(fs); !ok {
53+
errCh <- nil
54+
}
55+
cs, err := st.ContainerCPU()
56+
if err != nil {
57+
errCh <- err
58+
return
59+
}
60+
sr.ContainerCPU = cs
61+
errCh <- nil
62+
}()
63+
64+
if err1 := <-errCh; err1 != nil {
5165
return err
5266
}
53-
sr.HostCPU = cs
67+
if err2 := <-errCh; err2 != nil {
68+
return err
69+
}
70+
close(errCh)
5471

72+
// Host-level stats
5573
ms, err := st.HostMemory()
5674
if err != nil {
5775
return err

0 commit comments

Comments
 (0)