示例#1
0
    def CustomDataHandler(self, fvs):
        value = collectd.Values(type='gauge')  # pylint: disable=no-member
        value.plugin = 'dcgm_collectd'

        for gpuId in fvs.keys():
            gpuFv = fvs[gpuId]

            uuid = self.m_gpuIdToUUId[gpuId]
            value.plugin_instance = '%s' % (uuid)

            typeInstance = str(gpuId)

            for fieldId in gpuFv.keys():
                # Skip ignore list
                if fieldId in self.m_dcgmIgnoreFields:
                    continue

                fieldTag = self.m_fieldIdToInfo[fieldId].tag
                val = gpuFv[fieldId][-1]

                #Skip blank values. Otherwise, we'd have to insert a placeholder blank value based on the fieldId
                if val.isBlank:
                    continue

                valTimeSec1970 = (val.ts / 1000000) #Round down to 1-second for now
                valueArray = [val.value, ]

                value.dispatch(type=fieldTag, type_instance=typeInstance, time=valTimeSec1970, values=valueArray, plugin=value.plugin)

                collectd.debug("gpuId %d, tag %s, value %s" % (gpuId, fieldTag, str(val.value)))  # pylint: disable=no-member
示例#2
0
    def __init__(self):
        global c_ONE_SEC_IN_USEC

        collectd.debug(
            'Initializing DCGM with interval={}s'.format(g_intervalSec))
        DcgmReader.__init__(self,
                            fieldIds=g_publishFieldIds,
                            ignoreList=g_dcgmIgnoreFields,
                            fieldGroupName='collectd_plugin',
                            updateFrequency=g_intervalSec * c_ONE_SEC_IN_USEC,
                            fieldIntervalMap=g_fieldIntervalMap)
示例#3
0
    def CustomDataHandler(self, fvs):
        global c_ONE_SEC_IN_USEC

        value = collectd.Values(type='gauge')  # pylint: disable=no-member
        value.plugin = 'dcgm_collectd'

        for gpuId in list(fvs.keys()):
            gpuFv = fvs[gpuId]

            uuid = self.m_gpuIdToUUId[gpuId]
            collectd.debug('CustomDataHandler uuid: ' + '%s' % (uuid) + '\n')
            value.plugin_instance = '%s' % (uuid)

            typeInstance = str(gpuId)

            for fieldId in list(gpuFv.keys()):
                # Skip ignore list
                if fieldId in self.m_dcgmIgnoreFields:
                    continue

                fieldTag = self.m_fieldIdToInfo[fieldId].tag
                lastValTime = float("inf")

                # Filter out times too close together (< 1.0 sec) but always
                # include latest one.

                for val in gpuFv[fieldId][::-1]:
                    # Skip blank values. Otherwise, we'd have to insert a placeholder blank value based on the fieldId
                    if val.isBlank:
                        continue

                    valTimeSec1970 = (val.ts / c_ONE_SEC_IN_USEC
                                      )  #Round down to 1-second for now
                    if (lastValTime - valTimeSec1970) < 1.0:
                        collectd.debug(
                            "DCGM sample for field ID %d too soon  at %f, last one sampled at %f"
                            % (fieldId, valTimeSec1970, lastValTime))
                        val.isBlank = True  # Filter this one out
                        continue

                    lastValTime = valTimeSec1970

                i = 0

                for val in gpuFv[fieldId]:
                    # Skip blank values. Otherwise, we'd have to insert a placeholder blank value based on the fieldId
                    if val.isBlank:
                        continue

                    # Round down to 1-second for now
                    valTimeSec1970 = (val.ts / c_ONE_SEC_IN_USEC)
                    valueArray = [
                        val.value,
                    ]
                    value.dispatch(type=fieldTag,
                                   type_instance=typeInstance,
                                   time=valTimeSec1970,
                                   values=valueArray,
                                   plugin=value.plugin)

                    collectd.debug(
                        "    gpuId %d, tag %s, sample %d, value %s, time %s" %
                        (gpuId, fieldTag, i, str(val.value), str(val.ts)))  # pylint: disable=no-member
                    i += 1
示例#4
0
 def __init__(self):
     collectd.debug('Initializing DCGM with interval={}s'.format(g_intervalSec))
     DcgmReader.__init__(self, fieldIds=g_publishFieldIds, ignoreList=g_dcgmIgnoreFields, fieldGroupName='collectd_plugin', updateFrequency=g_intervalSec*1000000)