# Resource utilization with Edera

This guide provides an overview of how Edera improves resource utilization, including CPU and memory utilization. We will show how you can use the `protect` CLI to view resource utilization and manually adjust the resources available to your workloads. For more information about how Edera does memory ballooning, see [our guide](https://docs.edera.dev/guides/memory-management/memory-ballooning/).

For the Kubernetes-native equivalent that exposes Zone capacity to the scheduler through Dynamic Resource Allocation, see the [DRA Driver for Edera Zones guide](https://docs.edera.dev/guides/install/dra-driver/).

- **View metrics**: Use the `protect` [CLI](https://docs.edera.dev/reference/cli/) to view current resource utilization of a zone.
- **Adjust available resources**: Manually adjust available resources as needed.
- **Save on cloud compute**: Use the metrics to determine the amount of compute needed for workloads.

## View metrics 
To view the memory and CPU utilization of a zone, run the following

```bash
protect zone metrics <zone_name>
```

The output will show the total and available memory, as well as the usage of each CPU attached to the zone.

## Adjust available resources 
After viewing metrics, you may want to adjust the resources available in a zone. By default, both CPU and memory usage is dynamic, so it scales to the needs of the application. However, if you want to manually adjust these resources, or change the limits on a zone, this section will provide some tips.

### Add or remove a CPU 
To adjust the number of CPUs in a zone, Edera provides 3 parameters: `min-cpus`, `max-cpus`, and `target-cpus`. Together, these parameters allow the system to dynamically assign CPUs to the zone. If all three are the same value, the zone will always have that many CPUs. These values may be adjusted in the CLI:

```bash
# adjust min-cpus
protect zone update-resources --min-cpus 4 <zone_name>

# adjust max-cpus
protect zone update-resources --max-cpus 4 <zone_name>

# adjust target-cpus
protect zone update-resources --target-cpus 4 <zone_name>
```

### Set a target memory 
Edera supports two memory allocation modes: **dynamic** (default) and **static**. We will cover how to adjust the memory manually. For more information about dynamic memory ballooning, see [our memory ballooning guide](https://docs.edera.dev/guides/memory-management/memory-ballooning/)

#### Manual memory adjustment with the protect CLI 
```bash
# Switch between static and dynamic
protect zone update-resources <zone_name> --adjustment-policy static|dynamic

# Set target memory
protect zone update-resources <zone_name> --target-memory 500

# Set minimum memory
protect zone update-resources <zone_name> --min-memory 300

# Set maximum memory
protect zone update-resources <zone_name> --max-memory 700
```

## Putting it all together: resource utilization 
By measuring the memory and CPU utilization over time, you can ensure that you have the correct number of zones assigned to your hardware. This can ensure that the hardware you pay for is being fully used by your Edera zones.

## Additional notes 
Tested with **Edera 1.0.3-rc4**.

Last updated on 2026-05-18.
