# Hardware requirements

## Read-write scenarios

### Co-located Elasticsearch cluster

For installations where Snow Owl and Elasticsearch are co-located, we recommend the following hardware specifications for full read-write scenarios:

| Snow Owl & co-located ES | Cloud            | Dedicated        |
| ------------------------ | ---------------- | ---------------- |
| vCPU                     | 8                | 8                |
| Memory                   | 32 GB            | 32 GB            |
| I/O performance          | >= 5000 IOPS SSD | >= 5000 IOPS SSD |
| Disk space               | 200 GB           | 200 GB           |

### Cloud Managed Elasticsearch cluster

For installations where Snow Owl connects to a managed Elasticsearch cluster at [elastic.co](https://www.elastic.co/elasticsearch/service) we recommend the following hardware specifications for full read-write scenarios:

| Snow Owl        | Cloud                                                     | Dedicated                                       |
| --------------- | --------------------------------------------------------- | ----------------------------------------------- |
| vCPU            | 8 (compute optimized)                                     | 8                                               |
| Memory          | 16 GB                                                     | 16 GB                                           |
| I/O performance | <p>OS: balanced disk</p><p>TS file storage: local SSD</p> | <p>OS: HDD / SSD</p><p>TS file storage: SSD</p> |
| Disk space      | <p>OS: 20 GB </p><p>TS file storage: 100 GB</p>           | <p>OS: 20 GB </p><p>TS file storage: 100 GB</p> |

#### Elasticsearch cluster requirements:

| Elasticsearch @ elastic.co |                       |
| -------------------------- | --------------------- |
| vCPU                       | 8 (compute optimized) |
| Memory                     | 4 GB                  |
| I/O performance            | handled by elastic.co |
| Disk space                 | 180 GB                |

{% hint style="info" %}
If Snow Owl is planned to be used for resource-intensive workloads (large code system upgrades, frequent classification of terminology, bulk authoring), an 8 vCPU / 4 GB Elasticsearch cluster might not be sufficient. Consider increasing the size of the hosted Elasticsearch instance gradually, so that finding the sweet spot will be straightforward.
{% endhint %}

## Read-only scenarios

Once the required runtime terminology data is indexed and prepared for consumption, read instances of the server can be booted up by pointing to the same Elasticsearch cluster (running co-located to the write instance or remotely by elastic.co). These instances require way fewer hardware resources to operate and can heavily reduce the read load on the write instance when needed.

| Snow Owl Read instance | Cloud        | Dedicated    |
| ---------------------- | ------------ | ------------ |
| vCPU                   | 2            | 2            |
| Memory                 | 2-4 GB       | 2-4 GB       |
| I/O performance        | Not required | Not required |
| Disk space             | 1 Gb         | 1 Gb         |

## Cloud VMs

Here are a few examples of which Virtual Machine types could be used for hosting the Terminology Server at the three most popular Cloud providers (including but not limited to):

<table><thead><tr><th width="249.33333333333331">Cloud Provider</th><th>Scenario</th><th>VM type</th></tr></thead><tbody><tr><td>GCP</td><td>Read-write</td><td><a href="https://cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-cpu">c2d-highcpu-8</a> or similar newer variant</td></tr><tr><td>GCP</td><td>Read-only</td><td><p><a href="https://docs.cloud.google.com/compute/docs/compute-optimized-machines#c2d-high-cpu">c2d-highcpu-2</a> or</p><p><a href="https://docs.cloud.google.com/compute/docs/general-purpose-machines#c4d-highcpu">c4d-highcpu-2</a> or similar newer variant</p></td></tr><tr><td>AWS</td><td>Read-write</td><td><a href="https://aws.amazon.com/ec2/instance-types/c8i/">C8id series</a> (with local disk) or similar newer variant</td></tr><tr><td>AWS</td><td>Read-only</td><td><a href="https://aws.amazon.com/ec2/instance-types/c8i/">C8i series</a> (no local disk) or similar newer variant</td></tr><tr><td>Azure</td><td>Read-write</td><td><a href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/compute-optimized/fadsv7-series?tabs=sizebasic">Fadsv7</a> or similar newer variant</td></tr><tr><td>Azure</td><td>Read-only</td><td><a href="https://learn.microsoft.com/en-us/azure/virtual-machines/sizes/compute-optimized/fasv7-series?tabs=sizebasic">Fasv7</a> or similar newer variant</td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.b2ihealthcare.com/snow-owl/setup-and-administration/plan-your-deployment/hardware-requirements.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
