# Parameter

A **parameter** is a property of the system that can be applied and tuned to change the system's behavior. Akamas optimizes systems by changing parameters to achieve the stated [goal](https://docs.akamas.io/akamas-docs/3.5.0/reference/glossary/goals-and-constraints) while respecting the defined [constraints](https://docs.akamas.io/akamas-docs/3.5.0/reference/glossary/goals-and-constraints).

Examples of a parameter include:

* Configuration knobs (e.g. JVM garbage collection type)
* Resource settings (e.g. amount of memory allocated to a Spark job)
* Algorithms settings (e.g. learning rate of a neural network)
* Architectural properties (e.g. how many caching layers in an enterprise application)
* Type of resources (e.g. AWS EC2 instance or EBS volume type)
* Any other thing (e.g. amount of sugar in your cookies)

The following table describes the parameter types:

| Prameter Type | Domain             | Akamas normalized domain                                                                                                                                                                                                                  |
| ------------- | ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| REAL          | real values        | <p>Akamas normalizes the values</p><p>\[0.0, 10.0] → \[0.0, 1.0]</p>                                                                                                                                                                      |
| INTEGER       | integer values     | <p>Akamas converts the integer into real and then normalizes the values</p><p>\[0, 3] → \[0.0, 3.0] → \[0.0, 1.0]</p>                                                                                                                     |
| ORDINAL       | integer values     | <p>Akamas converts the category into real and then normalizes the values</p><p>\['a', 'b', 'c'] → \[0, 2] → \[0.0, 2.0] → \[0.0, 1.0]</p>                                                                                                 |
| CATEGORICAL   | categorical values | <p>Akamas converts each param value into a new param that may be either 1.0 (active) or 0.0 (inactive), only 1 of these new params can be "active" during each exp:</p><p>\['a', 'b', 'c'] → \[\[0.0, 1.0], \[0.0, 1.0], \[0.0, 1.0]]</p> |

## Construct

A parameter is described by the following properties:

* a **name** that uniquely identifies the parameter
* a **description** that clarifies the semantics of the parameter
* a **unit** that defines the unit of measurement used by the parameter

Although users can create parameters with any name, we suggest using the naming convention `context_parameter` where

* `context` refers to the technology or more general environment in which that metric is defined (e.g. elasticsearch, jvm, mysql, spark)
* `parameter` is the parameter name in the original context (e.g. gcType, numberOfExecutors)

This makes it possible to identify parameters more easily and avoid any potential name clash.

The construct to be used to define a parameter is described on the [Parameter template](https://docs.akamas.io/akamas-docs/3.5.0/reference/construct-templates/parameter-template) page.

## User Interface

Parameters are displayed in the Akamas UI when drilling down to each system component.

<figure><img src="https://3774185011-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJSNpKvJ3IYa5Vo69I0ed%2Fuploads%2Fgit-blob-81e1c21ffc188e689228f0724ea6e4ae5f40b96b%2FScreenshot%202022-12-22%20at%2009.16.08.png?alt=media" alt=""><figcaption></figcaption></figure>

For each optimization study, the **optimization scope** is the set of parameters that Akamas can change to achieve the defined optimization goal.

<figure><img src="https://3774185011-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FJSNpKvJ3IYa5Vo69I0ed%2Fuploads%2Fgit-blob-063fd007155dca3fd2d6ed847bcb036fd4c67abf%2FScreenshot%202022-12-22%20at%2009.17.03.png?alt=media" alt=""><figcaption></figcaption></figure>


---

# 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.akamas.io/akamas-docs/3.5.0/reference/glossary/parameter.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.
