• Mahmood Ali's avatar
    Populate alloc stats API with device stats · 58cbafe9
    Mahmood Ali authored
    This change makes few compromises:
    
    * Looks up the devices associated with tasks at look up time.  Given
    that `nomad alloc status` is called rarely generally (compared to stats
    telemetry and general job reporting), it seems fine.  However, the
    lookup overhead grows bounded by number of `tasks x total-host-devices`,
    which can be significant.
    
    * `client.Client` performs the task devices->statistics lookup.  It
    passes self to alloc/task runners so they can look up the device statistics
    allocated to them.
      * Currently alloc/task runners are responsible for constructing the
    entire RPC response for stats
      * The alternatives for making task runners device statistics aware
    don't seem appealing (e.g. having task runners contain reference to hostStats)
    
    * On the alloc aggregation resource usage, I did a naive merging of task device statistics.
      * Personally, I question the value of such aggregation, compared to
    costs of struct duplication and bloating the response - but opted to be
    consistent in the API.
      * With naive concatination, device instances from a single device group used by separate tasks in the alloc, would be aggregated in two separate device group statistics.
    58cbafe9
client_test.go 30.18 KiB