# DotNet Core 3.1

This page describes the Optimization Pack for the component type DotNet Core 3.1.

## Metrics

| Metric            | Unit          | Description                             |
| ----------------- | ------------- | --------------------------------------- |
| gc\_count         | collections/s | The total number of garbage collections |
| gc\_duration      | seconds       | The garbage collection duration         |
| heap\_hard\_limit | bytes         | The size of the heap                    |

## Parameters

| Parameter                                 | Type        | Unit        | Default    | Domain                       | Restart | Description                                                                                                                                                                                                                                                   |
| ----------------------------------------- | ----------- | ----------- | ---------- | ---------------------------- | ------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| csproj\_System\_GC\_Server                | categorical | CPUs        | `false`    | `true`, `false`              | yes     | The main flavor of the GC: set it to false for workstation GC or true for server GC. To be set in csproj file and requires rebuild.                                                                                                                           |
| csproj\_System\_GC\_Concurrent            | categorical | boolean     | `true`     | `true`, `false`              | yes     | Configures whether background (concurrent) garbage collection is enabled (setting to true). To be set in csproj file and requires rebuild.                                                                                                                    |
| runtime\_System\_GC\_Server               | categorical | boolean     | `false`    | `true`, `false`              | yes     | The main flavor of the GC: set it to false for workstation GC or true for server GC. To be set in csproj file and requires rebuild.                                                                                                                           |
| runtime\_System\_GC\_Concurrent           | categorical | boolean     | `true`     | `true`, `false`              | yes     | Configures whether background (concurrent) garbage collection is enabled (setting to true). To be set in csproj file and requires rebuild.                                                                                                                    |
| runtime\_System\_GC\_HeapCount            | integer     | heapcount   | `8`        | `1` → `1000`                 | no      | Limits the number of heaps created by the garbage collector. To be set in runtimeconfig.json in runtimeOptions: configProperties                                                                                                                              |
| runtime\_System\_GC\_CpuGroup             | categorical | boolean     | `0`        | `1`, `0`                     | no      | Configures whether the garbage collector uses CPU groups or not. Default is false. To be set in runtimeconfig.json                                                                                                                                            |
| runtime\_System\_GC\_NoAffinitize         | categorical | boolean     | `false`    | `true`, `false`              | no      | Specifies whether to affinitize garbage collection threads with processors. To affinitize a GC thread means that it can only run on its specific CPU. To be set in runtimeconfig.json in runtimeOptions: configProperties                                     |
| runtime\_System\_GC\_HeapHardLimit        | integer     | bytes       | `20971520` | `16777216` → `1099511627776` | no      | Specifies the maximum commit size, in bytes, for the GC heap and GC bookkeeping. To be set in runtimeconfig.json in runtimeOptions: configProperties                                                                                                          |
| runtime\_System\_GC\_HeapHardLimitPercent | real        | percent     | `0.75`     | `0.1` → `100.0`              | no      | Specifies the allowable GC heap usage as a percentage of the total physical memory. To be set in runtimeconfig.json in runtimeOptions: configProperties.                                                                                                      |
| runtime\_System\_GC\_HighMemoryPercent    | integer     | bytes       | `20971520` | `16777216` → `1099511627776` | no      | Specify the memory threshold that triggers the execution of a garbage collection. To be set in runtimeconfig.json.                                                                                                                                            |
| runtime\_System\_GC\_RetainVM             | categorical | boolean     | `false`    | `true`, `false`              | no      | Configures whether segments that should be deleted are put on a standby list for future use or are released back to the operating system (OS). Default is false. To be set in runtimeconfig.json in runtimeOptions: configProperties                          |
| runtime\_System\_GC\_LOHThreshold         | integer     | bytes       | `85000`    | `850000` → `1099511627776`   | no      | Specifies the threshold size, in bytes, that causes objects to go on the large object heap (LOH). To be set in runtimeconfig.json in runtimeOptions: configProperties                                                                                         |
| webconf\_maxconnection                    | integer     | connections | `2`        | `2` → `1000`                 | no      | This setting controls the maximum number of outgoing HTTP connections that you can initiate from a client. To be set in web.config (target app only) or machine.config (global)                                                                               |
| webconf\_maxIoThreads                     | integer     | threads     | `20`       | `20` → `1000`                | no      | Controls the maximum number of I/O threads in the .NET thread pool. Automatically multiplied by the number of available CPUs. To be set in web.config (target app only) or machine.config (global). It requires autoConfig=false                              |
| webconf\_minIoThreads                     | integer     | threads     | `20`       | `20` → `1000`                | no      | The minIoThreads setting enable you to configure a minimum number of worker threads and I/O threads for load conditions. To be set in web.config (target app only) or machine.config (global). It requires autoConfig=false                                   |
| webconf\_maxWorkerThreads                 | integer     | threads     | `20`       | `20` → `1000`                | no      | This setting controls the maximum number of worker threads in the thread pool. This number is then automatically multiplied by the number of available CPUs.To be set in web.config (target app only) or machine.config (global).It requires autoConfig=false |
| webconf\_minWorkerThreads                 | integer     | threads     | `20`       | `20` → `1000`                | no      | The minWorkerThreads setting enable you to configure a minimum number of worker threads and I/O threads for load conditions. To be set in web.config (target app only) or machine.config (global). It requires autoConfig=false                               |
| webconf\_minFreeThreads                   | integer     | threads     | `8`        | `8` → `800`                  | no      | Used by the worker process to queue all the incoming requests if the number of available threads in the thread pool falls below its value. To be set in web.config (target app only) or machine.config (global). It requires autoConfig=false                 |
| webconf\_minLocalRequestFreeThreads       | integer     | threads     | `4`        | `4` → `7600`                 | no      | Used to queue requests from localhost (where a Web application sends requests to a local Web service) if the number of available threads falls below it. To be set in web.config (target app only) or machine.config (global). It requires autoConfig=false   |
| webconf\_autoConfig                       | categori    | boolean     | `true`     | `true`, `false`              | no      | Enable settings the system.web configuration parameters. To be set in web.config (target app only) or machine.config (global)                                                                                                                                 |


---

# 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.1.3/akamas-reference/optimization-packs/dotnet-pack/dotnet-core-3.1.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.
