Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tato stránka obsahuje informace o nastavení pro uvolňování paměti modulu runtime .NET (GC). Pokud se pokoušíte dosáhnout maximálního výkonu spuštěné aplikace, zvažte použití těchto nastavení. Výchozí hodnoty však poskytují optimální výkon pro většinu aplikací v typických situacích.
Nastavení jsou uspořádaná do skupin na této stránce. Nastavení v rámci každé skupiny se běžně používají ve spojení s ostatními k dosažení konkrétního výsledku.
Poznámka:
- Tyto konfigurace jsou při inicializaci GC čteny pouze modulem runtime (obvykle to znamená během doby spuštění procesu). Pokud změníte proměnnou prostředí, když už proces běží, změna se v daném procesu neprojeví. Nastavení, která je možné změnit prostřednictvím rozhraní API za běhu, například na úrovni latence, se na této stránce vynechá.
- Vzhledem k tomu, že GC je pro každý proces, dává zřídka smysl nastavit tyto konfigurace na úrovni počítače. Například nechcete, aby každý proces .NET na počítači používal serverový GC nebo stejný pevný limit haldy.
- Pro číselné hodnoty použijte desetinnou notaci pro nastavení v souboru runtimeconfig.json nebo runtimeconfig.template.json a šestnáctkové notace pro nastavení proměnné prostředí. U šestnáctkových hodnot můžete zadat předponu 0x nebo bez nich.
- Pokud používáte proměnné prostředí, .NET 6 a novější verze standardizují předponu
DOTNET_místoCOMPlus_. PředponaCOMPlus_ale bude fungovat i nadále. Pokud používáte předchozí verzi modulu runtime .NET, měli byste přesto použít předponuCOMPlus_,COMPlus_gcServernapříklad .
Způsoby určení konfigurace
Pro různé verze modulu runtime .NET existují různé způsoby, jak zadat hodnoty konfigurace. Následující tabulka obsahuje souhrn.
| Umístění konfigurace | Verze .NET, na které se toto umístění vztahuje | Formáty | Jak se interpretuje |
|---|---|---|---|
| runtimeconfig.json soubor/ runtimeconfig.template.json soubor |
.NET (Core) | n | n se interpretuje jako desetinná hodnota. |
| Proměnná prostředí | .NET Framework, .NET | 0xn nebo n | N se interpretuje jako šestnáctková hodnota v obou formátech. |
| soubor app.config | .NET Framework | 0xn | n se interpretuje jako šestnáctková hodnota1. |
1 Můžete zadat hodnotu bez předpony 0x pro nastavení souboru app.config, ale nedoporučuje se. V rozhraní .NET Framework 4.8+ je kvůli chybě interpretována hodnota 0x bez předpony jako šestnáctková, ale v předchozích verzích rozhraní .NET Framework je interpretována jako desítková. Pokud se chcete vyhnout změně konfigurace, použijte předponu 0x při zadávání hodnoty v souboru app.config.
Pokud chcete například zadat 12 hald pro GCHeapCount aplikaci .NET Framework s názvem A.exe, přidejte do souboru A.exe.config následující kód XML.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
...
<runtime>
<gcServer enabled="true"/>
<GCHeapCount>0xc</GCHeapCount>
</runtime>
</configuration>
Pro .NET (Core) i .NET Framework můžete použít proměnné prostředí.
Ve Windows pomocí .NET 6 nebo novější verze:
SET DOTNET_gcServer=1
SET DOTNET_GCHeapCount=c
V jiných operačních systémech používajících .NET 6 nebo novější verzi:
export DOTNET_gcServer=1
export DOTNET_GCHeapCount=c
Pokud nepoužíváte rozhraní .NET Framework, můžete také nastavit hodnotu v souboru runtimeconfig.json nebo runtimeconfig.template.json .
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.Server": true,
"System.GC.HeapCount": 12
}
}
Příchuť uvolňování paměti
Dvě hlavní příchutě uvolňování paměti jsou pracovní stanice GC a server GC. Další informace o rozdílech mezi těmito dvěma typy najdete v tématu Pracovní stanice a uvolňování paměti serveru.
Subflavory uvolňování paměti jsou na pozadí a nejsou souběžné.
Pomocí následujících nastavení vyberte varianty uvolňování paměti:
Pracovní stanice vs. server
- Konfiguruje, zda aplikace používá uvolňování paměti pracovní stanice nebo uvolňování paměti serveru.
- Výchozí nastavení: Uvolňování paměti pracovní stanice. To je ekvivalentní nastavení hodnoty na
false.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Server |
false -pracovní stanicetrue -server |
.NET Core 1.0 |
| Vlastnost MSBuild | ServerGarbageCollection |
false -pracovní stanicetrue -server |
.NET Core 1.0 |
| Proměnná prostředí | DOTNET_gcServer |
0 -pracovní stanice1 -server |
.NET 6 |
| app.config pro .NET Framework | GCServer |
false -pracovní stanicetrue -server |
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Server": true
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.Server": true
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ServerGarbageCollection>true</ServerGarbageCollection>
</PropertyGroup>
</Project>
Uvolňování paměti pozadí
- Konfiguruje, jestli je povolené uvolňování paměti na pozadí (souběžné).
- Výchozí: Použijte uvolňování paměti na pozadí. To je ekvivalentní nastavení hodnoty na
true. - Další informace naleznete v tématu Uvolňování paměti na pozadí.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Concurrent |
true - uvolňování paměti na pozadífalse – nesou souběžné GC |
.NET Core 1.0 |
| Vlastnost MSBuild | ConcurrentGarbageCollection |
true - uvolňování paměti na pozadífalse – nesou souběžné GC |
.NET Core 1.0 |
| Proměnná prostředí | DOTNET_gcConcurrent |
1 - uvolňování paměti na pozadí0 – nesou souběžné GC |
.NET 6 |
| app.config pro .NET Framework | gcConcurrent |
true - uvolňování paměti na pozadífalse – nesou souběžné GC |
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.Concurrent": false
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.Concurrent": false
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<ConcurrentGarbageCollection>false</ConcurrentGarbageCollection>
</PropertyGroup>
</Project>
Samostatný GC
Pokud chcete místo výchozí implementace uvolňování paměti použít samostatný systém uvolňování paměti, můžete zadat cestu (v .NET 9 a novějších verzích) nebo název nativní knihovny uvolňování paměti.
Cesta
- Určuje úplnou cestu nativní knihovny uvolňování paměti, kterou modul runtime načte místo výchozí implementace uvolňování paměti. Aby byla tato lokalita zabezpečená, měla by být chráněná před potenciálně škodlivým manipulováním.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Path |
string_path | .NET 9 |
| Proměnná prostředí | DOTNET_GCPath |
string_path | .NET 9 |
Název
Určuje název nativní knihovny GC, kterou modul runtime načte místo výchozí implementace GC. Chování se v rozhraní .NET 9 změnilo zavedením konfigurace cesty .
V .NET 8 a předchozích verzích:
- Pokud je zadán pouze název knihovny, musí se knihovna nacházet ve stejném adresáři jako modul runtime .NET (coreclr.dll ve Windows, libcoreclr.so v Linuxu nebo knihovně libcoreclr.dylib v OSX).
- Hodnota může být také relativní cestou, například pokud zadáte ".. \clrgc.dll" ve Windows, clrgc.dll se načte z nadřazeného adresáře adresáře modulu runtime .NET.
V .NET 9 a novějších verzích tato hodnota určuje pouze název souboru (cesty nejsou povoleny):
- .NET vyhledá název, který zadáte v adresáři, ve kterém se nachází sestavení obsahující metodu
Mainvaší aplikace. - Pokud se soubor nenajde, prohledá se adresář modulu runtime .NET.
Toto nastavení konfigurace se ignoruje, pokud je zadána konfigurace cesty .
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.Name |
string_name | .NET 7 |
| Proměnná prostředí | DOTNET_GCName |
string_name | .NET 6 |
Specifické nastavení LOH
Povolit velmi velké objekty
- Konfiguruje podporu uvolňování paměti na 64bitových platformách pro pole, která mají celkovou velikost větší než 2 gigabajty (GB).
- Výchozí hodnota: GC podporuje pole větší než 2 GB. To je ekvivalentní nastavení hodnoty na
1. - Tato možnost může být zastaralá v budoucí verzi .NET.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | – | – | – |
| Proměnná prostředí | DOTNET_gcAllowVeryLargeObjects |
1 -zpřístupněný0 -invalidní |
.NET 6 |
| app.config pro .NET Framework | gcAllowVeryLargeObjects |
1 -zpřístupněný0 -invalidní |
.NET Framework 4.5 |
Prahová hodnota haldy velkého objektu
- Určuje velikost prahové hodnoty v bajtech, která způsobí, že objekty přejdou na velkou haldu objektu (LOH).
- Výchozí prahová hodnota je 85 000 bajtů.
- Zadaná hodnota musí být větší než výchozí prahová hodnota.
- Hodnota může být omezena modulem runtime na maximální možnou velikost aktuální konfigurace. Hodnotu, která se používá za běhu, můžete zkontrolovat prostřednictvím GC.GetConfigurationVariables() rozhraní API.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.LOHThreshold |
desetinná hodnota | .NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCLOHThreshold |
šestnáctková hodnota | .NET 6 |
| app.config pro .NET Framework | GCLOHThreshold | desetinná hodnota | .NET Framework 4.8 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.LOHThreshold": 120000
}
}
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete nastavit prahovou hodnotu 120 000 bajtů, budou hodnoty 120000 pro soubor JSON a 0x1D4C0 nebo 1D4C0 pro proměnnou prostředí.
Správa využití prostředků pro všechny varianty GC
Následující nastavení platí pro všechny varianty GC:
- Pevný limit haldy
- Procento pevného limitu haldy
- Pevné limity haldy pro jednotlivé objekty
- Procento pevného limitu haldy pro jednotlivé objekty
- Velké stránky
- Oblast
- Velikost oblasti
- Vysoké procento paměti
- Zachování virtuálního počítače
- Úspora paměti
Pevný limit haldy
- Pevný limit haldy je definován jako maximální velikost potvrzení v bajtech pro haldu GC a uchovávání knih GC.
- Toto nastavení platí jenom pro 64bitové počítače.
- Pokud tento limit není nakonfigurovaný, ale proces běží v prostředí s omezením paměti, tj. uvnitř kontejneru se zadaným limitem paměti, je nastavena výchozí hodnota. Výchozí hodnota je větší než 20 MB nebo 75 % limitu paměti v kontejneru.
- Toto nastavení se ignoruje, pokud jsou nakonfigurované pevné limity haldy pro jednotlivé objekty .
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimit |
desetinná hodnota | .NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCHeapHardLimit |
šestnáctková hodnota | .NET 6 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.HeapHardLimit": 209715200
}
}
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete zadat pevný limit haldy 200 mebibajtů (MiB), budou hodnoty 209715200 pro soubor JSON a 0xC800000 nebo C800000 pro proměnnou prostředí.
Procento pevného limitu haldy
- Určuje pevný limit haldy jako procento celkové fyzické paměti. Pokud proces běží v prostředí s omezením paměti, to znamená uvnitř kontejneru se zadaným limitem paměti, celková fyzická paměť je limit paměti; jinak je to, co je na počítači k dispozici.
- Toto nastavení platí jenom pro 64bitové počítače.
- Toto nastavení se ignoruje, pokud jsou nakonfigurované pevné limity haldy pro jednotlivé objekty nebo je nakonfigurovaný pevný limit haldy.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPercent |
desetinná hodnota | .NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitPercent |
šestnáctková hodnota | .NET 6 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.HeapHardLimitPercent": 30
}
}
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete omezit využití haldy na 30 %, hodnoty by byly 30 pro soubor JSON a 0x1E nebo 1E pro proměnnou prostředí.
Pevné limity haldy pro jednotlivé objekty
Pevný limit haldy GC můžete určit na základě haldy pro jednotlivé objekty. Různé haldy jsou velká halda objektu (LOH), malá halda objektu (SOH) a připnutá halda objektu (POH).
- Pokud zadáte hodnotu pro některou z
DOTNET_GCHeapHardLimitSOHhodnot ,DOTNET_GCHeapHardLimitLOHneboDOTNET_GCHeapHardLimitPOHnastavení, musíte také zadat hodnotu proDOTNET_GCHeapHardLimitSOHaDOTNET_GCHeapHardLimitLOH. Pokud ne, modul runtime se nepovede inicializovat. - Výchozí hodnota je
DOTNET_GCHeapHardLimitPOH0.DOTNET_GCHeapHardLimitSOHaDOTNET_GCHeapHardLimitLOHnemá výchozí hodnoty.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitSOH |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitSOH |
šestnáctková hodnota | .NET 6 |
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitLOH |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitLOH |
šestnáctková hodnota | .NET 6 |
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPOH |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitPOH |
šestnáctková hodnota | .NET 6 |
Tato nastavení konfigurace nemají specifické vlastnosti nástroje MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete zadat pevný limit haldy 200 mebibajtů (MiB), budou hodnoty 209715200 pro soubor JSON a 0xC800000 nebo C800000 pro proměnnou prostředí.
Procento pevného limitu haldy pro jednotlivé objekty
Pevný limit haldy GC můžete určit na základě haldy pro jednotlivé objekty. Různé haldy jsou velká halda objektu (LOH), malá halda objektu (SOH) a připnutá halda objektu (POH).
- Pokud zadáte hodnotu pro některou z
DOTNET_GCHeapHardLimitSOHPercenthodnot ,DOTNET_GCHeapHardLimitLOHPercentneboDOTNET_GCHeapHardLimitPOHPercentnastavení, musíte také zadat hodnotu proDOTNET_GCHeapHardLimitSOHPercentaDOTNET_GCHeapHardLimitLOHPercent. Pokud ne, modul runtime se nepovede inicializovat. - Tato nastavení se ignorují, pokud
DOTNET_GCHeapHardLimitSOHDOTNET_GCHeapHardLimitLOHjsou zadána aDOTNET_GCHeapHardLimitPOHjsou zadána. - Hodnota 1 znamená, že GC používá 1% celkové fyzické paměti pro haldu daného objektu.
- Každá hodnota musí být větší než nula a menší než 100. Kromě toho musí být součet tří procentuálních hodnot menší než 100. Jinak se modul runtime nepodaří inicializovat.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitSOHPercent |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitSOHPercent |
šestnáctková hodnota | .NET 6 |
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitLOHPercent |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitLOHPercent |
šestnáctková hodnota | .NET 6 |
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapHardLimitPOHPercent |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHeapHardLimitPOHPercent |
šestnáctková hodnota | .NET 6 |
Tato nastavení konfigurace nemají specifické vlastnosti nástroje MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete omezit využití haldy na 30 %, hodnoty by byly 30 pro soubor JSON a 0x1E nebo 1E pro proměnnou prostředí.
Velké stránky
- Určuje, jestli mají být při nastavení pevného limitu haldy použity velké stránky.
- Výchozí nastavení: Nepoužívejte velké stránky, pokud je nastavený pevný limit haldy. To je ekvivalentní nastavení hodnoty na
0. - Toto je experimentální nastavení.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | – | – | – |
| Proměnná prostředí | DOTNET_GCLargePages |
0 -invalidní1 -zpřístupněný |
.NET 6 |
Oblast
Od verze .NET 7 přepnul haldu GC svou fyzickou reprezentaci ze segmentů do oblastí pro 64bitovou verzi Windows a Linuxu. (Další informace najdete v článku blogu Maoni Stephens.) Při této změně si GC během inicializace vyhrazuje rozsah virtuální paměti. Všimněte si, že se jedná pouze o rezervaci paměti, nikoli potvrzení (velikost haldy GC je potvrzena paměť). Jedná se pouze o rozsah, který definuje maximální rozsah, který může halda GC potvrdit. Většina aplikací toho moc nemusí provádět.
Pokud nemáte žádné další konfigurace a neběžíte v prostředí s omezením paměti (což by způsobilo nastavení některých konfigurací GC), ve výchozím nastavení je rezervováno 256 GB. Pokud máte k dispozici více než 256 GB fyzické paměti, bude tato velikost dvojnásobná.
Pokud jsou nastavené pevné limity haldy, rozsah rezerv je stejný jako celkový pevný limit. Pokud je nastavená konfigurace s jedním pevným limitem, je tento rozsah pětkrát větší.
Tento rozsah je omezen množstvím celkové virtuální paměti. Obvykle na 64bitové verzi to nikdy není problém, ale může existovat limit virtuální paměti nastavený na proces. Tento rozsah je omezený o polovinu této částky. Pokud například nastavíte HeapHardLimit konfiguraci na 1 GB a pro proces je nastaven limit 4 GB virtuální paměti, je min (5x1GB, 4GB/2)tento rozsah , což je 2 GB.
Pomocí GC.GetConfigurationVariables() rozhraní API můžete zobrazit hodnotu tohoto rozsahu pod názvem GCRegionRange. Pokud se během inicializace modulu runtime dostanete E_OUTOFMEMORY a chcete zjistit, jestli je příčinou rezervace tohoto rozsahu, podívejte se na VirtualAlloc volání ve MEM_RESERVE Windows nebo na mmap volání v PROT_NONE Linuxu během inicializace GC a zjistěte, jestli je OOM z tohoto volání. Pokud se toto volání rezervace nedaří, můžete ho změnit pomocí následujícího nastavení konfigurace. Doporučení pro částku rezervace je 2 až pětkrát vyšší než potvrzená velikost haldy GC. Pokud váš scénář nevydělá mnoho velkých přidělení (může se jednat o přidělení UOH nebo větší než velikost oblasti UOH), mělo by být dvakrát potvrzená velikost bezpečná. Jinak byste ho mohli chtít zvětšit, abyste nemuseli příliš často komprimovat GCS, abyste pro tyto větší oblasti uvolnili místo. Pokud neznáte potvrzenou velikost haldy GC, můžete ji nastavit na dvojnásobek fyzické paměti dostupné pro váš proces.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RegionRange |
desetinná hodnota | .NET 10 |
| Proměnná prostředí | DOTNET_GCRegionRange |
šestnáctková hodnota | .NET 7 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Velikost oblasti
Od .NET 7 přepnul haldu GC svou fyzickou reprezentaci ze segmentů do oblastí pro 64bitovou verzi Windows a Linuxu. (Další informace najdete v článku blogu Maoni Stephens.) Ve výchozím nastavení je každá oblast pro SOH 4 MB. UOH (LOH a POH) je to osmkrát velikost oblasti SOH. Tuto konfiguraci můžete použít ke změně velikosti oblasti SOH a odpovídajícím způsobem se upraví oblasti UOH.
Oblasti se přidělují jenom v případě potřeby, takže obecně nemusíte mít obavy o velikost oblasti. Existují však dva případy, kdy můžete chtít upravit tuto velikost:
- U procesů, které mají velmi malé haldy GC, je změna velikosti oblasti menší přínosem pro nativní využití paměti z vlastního účetnictví GC. Doporučení je 1 MB.
- Pokud v Linuxu potřebujete snížit počet mapování paměti, můžete změnit velikost oblasti, aby byla větší, například 32 MB.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RegionSize |
desetinná hodnota | .NET 10 |
| Proměnná prostředí | DOTNET_GCRegionSize |
šestnáctková hodnota | .NET 7 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Vysoké procento paměti
Zatížení paměti je indikováno procentem používané fyzické paměti. Ve výchozím nastavení, když zatížení fyzické paměti dosáhne 90 %, uvolňování paměti se stává agresivnější o provádění plného komprimace uvolňování paměti, aby se zabránilo stránkování. Pokud je zatížení paměti nižší než 90 %, GC upřednostňuje kolekce pozadí pro úplné uvolňování paměti, které mají kratší pozastavení, ale nezmenšují celkovou velikost haldy o moc. Na počítačích s velkým množstvím paměti (80 GB nebo více) je výchozí prahová hodnota zatížení mezi 90 % a 97 %.
Prahovou hodnotu vysokého zatížení paměti lze upravit nastavením DOTNET_GCHighMemPercent proměnné prostředí nebo System.GC.HighMemoryPercent konfigurace JSON. Pokud chcete řídit velikost haldy, zvažte úpravu prahové hodnoty. Například u dominantního procesu na počítači s 64 GB paměti je vhodné, aby GC začal reagovat, když je k dispozici 10 % paměti. Ale u menších procesů, například u procesu, který spotřebovává pouze 1 GB paměti, může GC pohodlně běžet s méně než 10% dostupnou pamětí. U těchto menších procesů zvažte nastavení prahové hodnoty vyšší. Na druhou stranu pokud chcete, aby větší procesy měly menší velikosti haldy (i když je k dispozici dostatek fyzické paměti), snížení této prahové hodnoty je efektivní způsob, jak GC reagovat dříve, aby komprimovala haldu dolů.
Poznámka:
Pro procesy spuštěné v kontejneru GC bere v úvahu fyzickou paměť na základě limitu kontejneru.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HighMemoryPercent |
desetinná hodnota | .NET 5 |
| Proměnná prostředí | DOTNET_GCHighMemPercent |
šestnáctková hodnota | .NET 6 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete nastavit vysokou prahovou hodnotu paměti na 75 %, budou hodnoty 75 pro soubor JSON a 0x4B nebo 4B pro proměnnou prostředí.
Zachování virtuálního počítače
- Konfiguruje, jestli se segmenty, které mají být odstraněny, umístí do pohotovostního seznamu pro budoucí použití nebo se uvolní zpět do operačního systému (OS).
- Výchozí: Uvolnění segmentů zpět do operačního systému. To je ekvivalentní nastavení hodnoty na
false.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.RetainVM |
false – vydání do operačního systémutrue - v pohotovostním režimu |
.NET Core 1.0 |
| Vlastnost MSBuild | RetainVMGarbageCollection |
false – vydání do operačního systémutrue - v pohotovostním režimu |
.NET Core 1.0 |
| Proměnná prostředí | DOTNET_GCRetainVM |
0 – vydání do operačního systému1 - v pohotovostním režimu |
.NET 6 |
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.RetainVM": true
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.RetainVM": true
}
}
Soubor projektu:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<RetainVMGarbageCollection>true</RetainVMGarbageCollection>
</PropertyGroup>
</Project>
Úspora paměti
- Nakonfiguruje systém uvolňování paměti tak, aby ušetřil paměť na úkor častějších uvolňování paměti a případně i delších časů pozastavení.
- Výchozí hodnota je 0 – neznamená to žádnou změnu.
- Kromě výchozí hodnoty 0 jsou hodnoty mezi 1 a 9 (včetně) platné. Čím vyšší je hodnota, tím více uvolňování paměti se snaží šetřit paměť, a tak zachovat haldu malou.
- Pokud je hodnota nenulová, velká halda objektu se zkomprimuje automaticky, pokud má příliš mnoho fragmentace.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.ConserveMemory |
0 - 9 |
.NET 6 |
| Proměnná prostředí | DOTNET_GCConserveMemory |
0 -9 |
.NET 6 |
| app.config pro .NET Framework | GCConserveMemory | 0 -9 |
.NET Framework 4.8 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Ukázkový soubor app.config :
<configuration>
<runtime>
<GCConserveMemory enabled="5"/>
</runtime>
</configuration>
Návod
Experimentujte s různými čísly a zjistěte, která hodnota je pro vás nejvhodnější. Začněte hodnotou od 5 do 7.
Správa využití prostředků pro Server GC
Následující nastavení ovlivňují počet vláken GC serveru a to, jestli/jak jsou spřažení s jádry. Nemají žádný vliv na GC pracovní stanice.
Další informace o prvních 3 nastavení naleznete v middle ground between workstation and server GC blog entry.
Počet hald
- Omezuje počet hald vytvořených uvolňováním paměti.
- Platí pouze pro uvolňování paměti serveru.
- Pokud je povolena spřažení procesoru GC, což je výchozí nastavení počtu hald,
nspřažení spřažení GC haldy nebo vláken na prvnínprocesory. (Pomocí nastavení masky spřažení nebo rozsahů spřažení určete, které procesory se mají spřažení provést.) - Pokud je spřažení procesoru GC zakázané, toto nastavení omezuje počet hald GC.
- Další informace naleznete v poznámkách GCHeapCount.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapCount |
desetinná hodnota | .NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCHeapCount |
šestnáctková hodnota | .NET 6 |
| app.config pro .NET Framework | GCHeapCount | desetinná hodnota | .NET Framework 4.6.2 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapCount": 16
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.HeapCount": 16
}
}
Návod
Pokud nastavujete možnost v runtimeconfig.json, zadejte desetinnou hodnotu. Pokud možnost nastavujete jako proměnnou prostředí, zadejte šestnáctkovou hodnotu. Pokud například chcete omezit počet hald na 16, budou hodnoty 16 pro soubor JSON a 0x10 nebo 10 pro proměnnou prostředí.
Spřažení
- Určuje, zda se mají spřažení vláken uvolňování paměti s procesory. Spřažení vlákna uvolňování paměti znamená, že může běžet pouze na konkrétním procesoru. Pro každé vlákno GC se vytvoří halda.
- Platí pouze pro uvolňování paměti serveru.
- Výchozí: Spřažení vláken uvolňování paměti s procesory. To je ekvivalentní nastavení hodnoty na
false.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.NoAffinitize |
false - spřaženítrue - spřažení |
.NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCNoAffinitize |
0 - spřažení1 - spřažení |
.NET 6 |
| app.config pro .NET Framework | GCNoAffinitize |
false - spřaženítrue - spřažení |
.NET Framework 4.6.2 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.NoAffinitize": true
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.NoAffinitize": true
}
}
Spřažení masky
- Určuje přesné procesory, které by měla používat vlákna uvolňování paměti.
- Pokud je spřažení procesoru GC zakázané, bude toto nastavení ignorováno.
- Platí pouze pro uvolňování paměti serveru.
- Hodnota je bitová maska, která definuje procesory, které jsou k dispozici procesu. Například desetinná hodnota 1023 (nebo šestnáctková hodnota 0x3FF nebo 3FF, pokud používáte proměnnou prostředí) je v binárním zápisu 0011 1111 1111. Určuje, že se má použít prvních 10 procesorů. Pokud chcete určit dalších 10 procesorů, tj. procesory 10–19, zadejte desetinnou hodnotu 1047552 (nebo šestnáctkovou hodnotu 0xFFC00 nebo FFC00), která je ekvivalentní binární hodnotě 1111 1111 1100 0000 0000.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapAffinitizeMask |
desetinná hodnota | .NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCHeapAffinitizeMask |
šestnáctková hodnota | .NET 6 |
| app.config pro .NET Framework | GCHeapAffinitizeMask | desetinná hodnota | .NET Framework 4.6.2 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.HeapAffinitizeMask": 1023
}
}
Spřažení oblastí
- Určuje seznam procesorů, které se mají použít pro vlákna uvolňování paměti.
- Toto nastavení je podobné system.GC.HeapAffinitizeMask, s výjimkou toho, že umožňuje zadat více než 64 procesorů.
- V případě operačních systémů Windows zadejte předponu čísla procesoru nebo rozsahu odpovídající skupinou procesoru, například 0:1-10,0:12,1:50-52,1:7". Pokud ve skutečnosti nemáte více než 1 skupinu procesorů, nemůžete toto nastavení použít. Musíte použít nastavení Maska spřažení. A zadaná čísla jsou v této skupině, což znamená, že nemůže být >= 64.
- V případě operačních systémů Linux, kde koncept skupiny procesorů neexistuje, můžete použít toto nastavení i nastavení masky spřažení k určení stejných rozsahů. Místo 0:1-10 zadejte 1-10, protože nemusíte zadávat index skupiny.
- Pokud je spřažení procesoru GC zakázané, bude toto nastavení ignorováno.
- Platí pouze pro uvolňování paměti serveru.
- Další informace naleznete v tématu Lepší konfigurace procesoru pro GC na počítačích s > 64 procesory na blogu Maoni Stephens.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.HeapAffinitizeRanges |
Čárkami oddělený seznam čísel procesorů nebo rozsahů čísel procesoru Příklad unixu: "1-10,12,50-52,70" Příklad Windows: "0:1-10,0:12,1:50-52,1:7" |
.NET Core 3.0 |
| Proměnná prostředí | DOTNET_GCHeapAffinitizeRanges |
Čárkami oddělený seznam čísel procesorů nebo rozsahů čísel procesoru Příklad unixu: "1-10,12,50-52,70" Příklad Windows: "0:1-10,0:12,1:50-52,1:7" |
.NET 6 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Příklady
runtimeconfig.json soubor:
{
"runtimeOptions": {
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
}
runtimeconfig.template.json soubor:
{
"configProperties": {
"System.GC.HeapAffinitizeRanges": "0:1-10,0:12,1:50-52,1:7"
}
}
Skupiny procesorů
Konfiguruje, jestli systém uvolňování paměti používá skupiny procesorů, nebo ne.
Pokud má 64bitový počítač s Windows více skupin procesorů, to znamená, že existuje více než 64 procesorů, což tento prvek rozšiřuje uvolňování paměti napříč všemi skupinami procesoru. Systém uvolňování paměti používá všechna jádra k vytvoření a vyrovnávání hald.
Poznámka:
Jedná se o koncept jen pro Windows. Ve starších verzích Windows omezil Systém Windows proces na jednu skupinu procesoru. Uvolňování paměti proto používalo pouze jednu skupinu procesorů, pokud jste toto nastavení nepoužili k povolení více skupin procesoru. Toto omezení operačního systému bylo ve Windows 11 a Serveru 2022 zrušeno. Počínaje rozhraním .NET 7 používá uvolňování paměti ve výchozím nastavení všechny skupiny procesorů při spuštění ve Windows 11 nebo Serveru 2022.
Platí pouze pro uvolňování paměti serveru v 64bitových operačních systémech Windows.
Výchozí hodnota: Uvolňování paměti se nerozšiřuje mezi skupinami procesoru. To je ekvivalentní nastavení hodnoty na
0.Další informace naleznete v tématu Lepší konfigurace procesoru pro GC na počítačích s > 64 procesory na blogu Maoni Stephens.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.CpuGroup |
false -invalidnítrue -zpřístupněný |
.NET 5 |
| Proměnná prostředí | DOTNET_GCCpuGroup |
0 -invalidní1 -zpřístupněný |
.NET 6 |
| app.config pro .NET Framework | GCCpuGroup |
false -invalidnítrue -zpřístupněný |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Poznámka:
Pokud chcete nakonfigurovat modul CLR (Common Language Runtime), aby také distribuovali vlákna z fondu vláken napříč všemi skupinami procesoru, povolte možnost Thread_UseAllCpuGroups elementu . U aplikací .NET Core můžete tuto možnost povolit nastavením hodnoty DOTNET_Thread_UseAllCpuGroups proměnné prostředí na 1hodnotu .
Dynamická přizpůsobení velikostem aplikací (DATAS)
Povolení nebo zakázání DAT
- Nakonfiguruje systém uvolňování paměti tak, aby používal DATAS. DATAS se přizpůsobí požadavkům na paměť aplikace, což znamená, že velikost haldy aplikace by měla být přibližně úměrná dlouhodobé velikosti dat.
- Ve výchozím nastavení je povoleno od verze .NET 9.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| Proměnná prostředí | DOTNET_GCDynamicAdaptationMode |
1 -zpřístupněný0 -invalidní |
.NET 8 |
| Vlastnost MSBuild | GarbageCollectionAdaptationMode |
1 -zpřístupněný0 -invalidní |
.NET 8 |
| runtimeconfig.json | System.GC.DynamicAdaptationMode |
1 -zpřístupněný0 -invalidní |
.NET 8 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Cílový protokol TCP
DataS jako měření nákladů na paměť pro propustnost používá procento nákladů na propustnost (TCP). Bere v úvahu jak pozastavení GC, tak i kolik přidělení musí čekat. Obvykle dominuje GC pozastavení, takže můžete použít "% dobu pozastavení v GC" k odhadu těchto nákladů. Existují dva přechodné případy, kdy může dominovat doba čekání přidělení:
- Při spuštění procesu datas vždy začíná jednou haldou. Takže pokud je k dispozici dostatek vláken přidělení, dojde k čekání.
- Když se úloha změní z lehčího na těžší, například když se spustí špička, může přidělení vláken během tohoto časového období čekat. Je to proto, že trvá několik GC, než se zvýší počet hald.
DATAS používá jako výchozí tcp 2%, které můžete upravit pomocí tohoto nastavení. Jedná se o celé číslo, které se interpretuje jako procento, například 5 znamená, že cílový tcp bude 5%.
| Název nastavení | Hodnoty | Zavedená verze | |
|---|---|---|---|
| runtimeconfig.json | System.GC.DTargetTCP |
desetinná hodnota | .NET 9 |
| Proměnná prostředí | DOTNET_GCDTargetTCP |
šestnáctková hodnota | .NET 9 |
Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat RuntimeHostConfigurationOption položku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.Include Příklad naleznete v tématu MSBuild vlastnosti.
Maximální nastavení rozpočtu Gen0
Úprava rozpočtu gen0 je jedním z klíčových prvků, které DATAS používá k přizpůsobení velikostí aplikací. DATAS definuje horní prahovou hodnotu nazvanou BCD (Rozpočet vypočítaný prostřednictvím DATAS) pro celkový rozpočet Gen0 jako funkci velikosti aplikace. Vzorec pro výpočet násobitele je následující:
$$ f(\text{application_size_in_MB}) = \frac{20 - \text{conserve_memory}}{\sqrt{\text{application_size_in_MB}}} $$
Vzorec se pak uchytne maximální a minimální hodnotou, než se použije na velikost aplikace v MB. Pokud není zadané nastavení paměti pro úsporu, datas ve výchozím nastavení používá hodnotu 5. Výchozí maximální a minimální hodnota je 10 a 0,1.
Pokud je například velikost aplikace 1 GB, vzorec vypočítá (20 - 5) / sqrt (1000) = 0.474. Vzhledem k tomu, že je mezi 10 a 0,1, upnutí nemá žádný vliv. To znamená, že celkový rozpočet gen0 je 47,4% z 1 GB, což je 474 MB. Pokud je velikost aplikace 1 MB, vzorec by vypočítal 15, což by se pak upravilo na 10, což znamená, že celkový povolený rozpočet Gen0 je 10 MB.
K dispozici jsou tři nastavení pro úpravu toho, co vzorec vypočítá a upraví hodnoty upnutí:
Procento, které se použije na výpočet
f.Název nastavení Hodnoty Zavedená verze runtimeconfig.json System.GC.DGen0GrowthPercentdesetinná hodnota .NET 10 Proměnná prostředí DOTNET_GCDGen0GrowthPercentšestnáctková hodnota .NET 10 Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat
RuntimeHostConfigurationOptionpoložku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.IncludePříklad naleznete v tématu MSBuild vlastnosti.Takže pokud
fse vypočítá 0,474 a toto nastavení je 200, násobitel se stane0.474 * 200% = 0.948před upnutím.Maximální hodnota upnutí v hodnotě permil.
Název nastavení Hodnoty Zavedená verze runtimeconfig.json System.GC.DGen0GrowthMaxFactordesetinná hodnota .NET 10 Proměnná prostředí DOTNET_GCDGen0GrowthMaxFactoršestnáctková hodnota .NET 10 Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat
RuntimeHostConfigurationOptionpoložku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.IncludePříklad naleznete v tématu MSBuild vlastnosti.Pokud je tato hodnota 20000, znamená to, že maximální upínací hodnota je
20000 * 0.001 = 20.Minimální hodnota upnutí v hodnotě permil.
Název nastavení Hodnoty Zavedená verze runtimeconfig.json System.GC.DGen0GrowthMinFactordesetinná hodnota .NET 10 Proměnná prostředí DOTNET_GCDGen0GrowthMinFactoršestnáctková hodnota .NET 10 Toto nastavení konfigurace nemá konkrétní vlastnost MSBuild. Místo toho však můžete přidat
RuntimeHostConfigurationOptionpoložku NÁSTROJE MSBuild. Jako hodnotu atributu použijte název nastavení runtimeconfig.json.IncludePříklad naleznete v tématu MSBuild vlastnosti.Pokud je tato hodnota 200, minimální upínací hodnota je
200 * 0.001 = 0.2.