8016: Clarify comments/docs and cpuSample initialization.
authorTom Clegg <tom@curoverse.com>
Mon, 4 Jul 2016 21:08:37 +0000 (17:08 -0400)
committerTom Clegg <tom@curoverse.com>
Mon, 4 Jul 2016 21:08:37 +0000 (17:08 -0400)
lib/crunchstat/crunchstat.go
services/crunch-run/crunchrun.go

index e0ef058835ad6652009e5b2dbb40dbbf7a63da58..03cfa7d3ef2570826ff4b1279783711d1e00597d 100644 (file)
@@ -40,7 +40,7 @@ type Reporter struct {
 
        // Where cgroup accounting files live on this system, e.g.,
        // "/sys/fs/cgroup".
-       CgroupRoot   string
+       CgroupRoot string
 
        // Parent cgroup, e.g., "docker".
        CgroupParent string
@@ -312,6 +312,9 @@ func (r *Reporter) getCPUCount() int64 {
        }
        defer cpusetFile.Close()
        b, err := r.readAllOrWarn(cpusetFile)
+       if err != nil {
+               return 0
+       }
        sp := strings.Split(string(b), ",")
        cpus := int64(0)
        for _, v := range sp {
@@ -337,12 +340,16 @@ func (r *Reporter) doCPUStats() {
                return
        }
 
-       nextSample := cpuSample{true, time.Now(), 0, 0, r.getCPUCount()}
        var userTicks, sysTicks int64
        fmt.Sscanf(string(b), "user %d\nsystem %d", &userTicks, &sysTicks)
        userHz := float64(C.sysconf(C._SC_CLK_TCK))
-       nextSample.user = float64(userTicks) / userHz
-       nextSample.sys = float64(sysTicks) / userHz
+       nextSample := cpuSample{
+               hasData:    true,
+               sampleTime: time.Now(),
+               user:       float64(userTicks) / userHz,
+               sys:        float64(sysTicks) / userHz,
+               cpus:       r.getCPUCount(),
+       }
 
        delta := ""
        if r.lastCPUSample.hasData {
@@ -356,8 +363,8 @@ func (r *Reporter) doCPUStats() {
        r.lastCPUSample = nextSample
 }
 
-// Report stats periodically until r.done indicates someone called
-// Stop.
+// Report stats periodically until we learn (via r.done) that someone
+// called Stop.
 func (r *Reporter) run() {
        r.reportedStatFile = make(map[string]string)
 
@@ -383,7 +390,7 @@ func (r *Reporter) run() {
 }
 
 // If CID is empty, wait for it to appear in CIDFile. Return true if
-// we get it before r.done indicates someone called Stop.
+// we get it before we learn (via r.done) that someone called Stop.
 func (r *Reporter) waitForCIDFile() bool {
        if r.CID != "" || r.CIDFile == "" {
                return true
index 9a508d5077af193762b78b8fa1820db526938bdf..2795cb021e143ec1b883822c1baf2a891226d2c7 100644 (file)
@@ -821,7 +821,7 @@ func NewContainerRunner(api IArvadosClient,
 }
 
 func main() {
-       statInterval := flag.Duration("crunchstat-interval", 10*time.Second, "resource usage statistics reporting period")
+       statInterval := flag.Duration("crunchstat-interval", 10*time.Second, "sampling period for periodic resource usage reporting")
        cgroupRoot := flag.String("cgroup-root", "/sys/fs/cgroup", "path to sysfs cgroup tree")
        cgroupParent := flag.String("cgroup-parent", "docker", "name of container's parent cgroup")
        flag.Parse()