@@ -3,7 +3,6 @@ package cli
3
3
import (
4
4
"fmt"
5
5
"os"
6
- "time"
7
6
8
7
"github.com/spf13/afero"
9
8
@@ -20,38 +19,57 @@ func (*RootCmd) stat() *clibase.Cmd {
20
19
defaultCols = append ([]string {"container_cpu" , "container_memory" }, defaultCols ... )
21
20
}
22
21
var (
23
- sampleInterval time.Duration
24
- formatter = cliui .NewOutputFormatter (
22
+ formatter = cliui .NewOutputFormatter (
25
23
cliui .TableFormat ([]statsRow {}, defaultCols ),
26
24
cliui .JSONFormat (),
27
25
)
28
26
)
29
27
30
28
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 {},
41
32
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 ))
43
34
if err != nil {
44
35
return err
45
36
}
46
37
47
- // Host-level stats
48
38
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 {
51
65
return err
52
66
}
53
- sr .HostCPU = cs
67
+ if err2 := <- errCh ; err2 != nil {
68
+ return err
69
+ }
70
+ close (errCh )
54
71
72
+ // Host-level stats
55
73
ms , err := st .HostMemory ()
56
74
if err != nil {
57
75
return err
0 commit comments