# Performance Metrics | Sentry for Resque

Sentry's SDKs support sending performance metrics data to Sentry. These are numeric values attached to transactions that are aggregated and displayed in Sentry.

## [Custom Measurements](https://docs.sentry.io/.md#custom-measurements)

In addition to automatic performance metrics, the SDK supports setting [custom performance measurements](https://docs.sentry.io/product/insights/overview/metrics.md#custom-performance-measurements) on transactions. This allows you to define measurements that are important to your application and send them to Sentry.

To set a performance measurement, you need to supply the following:

* name (`string`)
* value (any numeric type - `float`, `integer`, etc.)
* unit (`string`, defaults to the string `none` if omitted)

Sentry supports adding arbitrary custom units, but we recommend using one of the [supported units listed below](https://docs.sentry.io/.md#supported-measurement-units).

Adding custom measurements is supported in `sentry-ruby` version `5.8.0` and above.

```ruby
transaction = Sentry.get_current_scope.get_transaction

# Record amount of memory used
transaction.set_measurement('memory_used', 123, 'byte')

# Record time when job was started
transaction.set_measurement('job_start_time', 1.3, 'second')

# Record amount of times cache was read
transaction.set_measurement('cache_read_count', 4)
```

Currently, unit conversion is only supported once the data has already been stored. This means that, for example, `('myMeasurement', 60, 'second')` and `('myMeasurement', 3, 'minute')` would not be aggregated, but rather stored as two separate measurements. To avoid this, make sure to use a consistent unit when recording a custom measurement.

## [Supported Measurement Units](https://docs.sentry.io/.md#supported-measurement-units)

Units augment measurement values by giving meaning to what otherwise might be abstract numbers. Adding units also allows Sentry to offer controls - unit conversions, filters, and so on - based on those units. For values that are unitless, you can supply an empty string or `none`.

### [Duration Units](https://docs.sentry.io/.md#duration-units)

* `nanosecond`
* `microsecond`
* `millisecond`
* `second`
* `minute`
* `hour`
* `day`
* `week`

### [Information Units](https://docs.sentry.io/.md#information-units)

* `bit`
* `byte`
* `kilobyte`
* `kibibyte`
* `megabyte`
* `mebibyte`
* `gigabyte`
* `gibibyte`
* `terabyte`
* `tebibyte`
* `petabyte`
* `pebibyte`
* `exabyte`
* `exbibyte`

### [Fraction Units](https://docs.sentry.io/.md#fraction-units)

* `ratio`
* `percent`

If you want to explore further, you can find details about supported units in our [event ingestion documentation](https://getsentry.github.io/relay/relay_metrics/enum.MetricUnit.html).
