| //- |
| Licensed to the Apache Software Foundation (ASF) under one or more |
| contributor license agreements. See the NOTICE file distributed with |
| this work for additional information regarding copyright ownership. |
| The ASF licenses this file to You under the Apache License, Version 2.0 |
| (the "License"); you may not use this file except in compliance with |
| the License. You may obtain a copy of the License at |
| |
| http://www.apache.org/licenses/LICENSE-2.0 |
| |
| Unless required by applicable law or agreed to in writing, software |
| distributed under the License is distributed on an "AS IS" BASIS, |
| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| See the License for the specific language governing permissions and |
| limitations under the License. |
| |
| include /app/helpers/jade/mixins |
| |
| -var form = 'memoryConfiguration' |
| -var model = 'backupItem.memoryConfiguration' |
| -var memoryPolicies = model + '.memoryPolicies' |
| |
| .panel.panel-default(ng-if='$ctrl.available("2.0.0")' ng-form=form novalidate) |
| .panel-heading(bs-collapse-toggle ng-click=`ui.loadPanel('${form}')`) |
| ignite-form-panel-chevron |
| label Memory configuration |
| ignite-form-field-tooltip.tipLabel |
| | Page memory is a manageable off-heap based memory architecture that is split into pages of fixed size#[br] |
| | #[a(href="https://apacheignite.readme.io/docs/page-memory" target="_blank") More info] |
| ignite-form-revert |
| .panel-collapse(role='tabpanel' bs-collapse-target id=`${form}`) |
| .panel-body(ng-if=`ui.isPanelLoaded('${form}')`) |
| .col-sm-6 |
| .settings-row |
| +number-min-max('Page size:', model + '.pageSize', '"MemoryConfigurationPageSize"', |
| 'true', '2048', '1024', '16384', 'Every memory region is split on pages of fixed size') |
| .settings-row |
| +number('Concurrency level:', model + '.concurrencyLevel', '"MemoryConfigurationConcurrencyLevel"', |
| 'true', 'availableProcessors', '2', 'The number of concurrent segments in Ignite internal page mapping tables') |
| .settings-row |
| +ignite-form-group |
| ignite-form-field-label |
| | System cache |
| ignite-form-group-tooltip |
| | System cache properties |
| .group-content |
| .details-row |
| +number('Initial size:', model + '.systemCacheInitialSize', '"systemCacheInitialSize"', |
| 'true', '41943040', '10485760', 'Initial size of a memory region reserved for system cache') |
| .details-row |
| +number('Maximum size:', model + '.systemCacheMaxSize', '"systemCacheMaxSize"', |
| 'true', '104857600', '10485760', 'Maximum size of a memory region reserved for system cache') |
| .settings-row |
| +ignite-form-group |
| ignite-form-field-label |
| | Memory policies |
| ignite-form-group-tooltip |
| | Memory policies configuration |
| .group-content |
| .details-row |
| +text('Default region name:', model + '.defaultMemoryPolicyName', '"defaultMemoryPolicyName"', |
| 'false', 'default', 'Name of the memory policy that defines the default memory region') |
| .details-row(ng-hide='(' + model + '.defaultMemoryPolicyName || "default") !== "default"') |
| +number('Default region size:', model + '.defaultMemoryPolicySize', '"defaultMemoryPolicySize"', |
| 'true', '0.8 * totalMemoryAvailable', '10485760', |
| 'Size of the memory policy that defines the default memory region') |
| .details-row(ng-init='memoryPoliciesTbl={type: "memoryPolicies", model: "memoryPolicies", focusId: "name", ui: "memory-policies-table"}') |
| +ignite-form-group() |
| ignite-form-field-label |
| | Configured policies |
| ignite-form-group-tooltip |
| | List of configured policies |
| ignite-form-group-add(ng-click='tableNewItem(memoryPoliciesTbl)') |
| | Add Memory policy configuration |
| .group-content-empty(ng-if=`!(${memoryPolicies} && ${memoryPolicies}.length > 0)`) |
| | Not defined |
| .group-content(ng-show=`${memoryPolicies} && ${memoryPolicies}.length > 0` ng-repeat=`model in ${memoryPolicies} track by $index`) |
| hr(ng-if='$index != 0') |
| .settings-row |
| +text-enabled-autofocus('Name:', 'model.name', '"MemoryPolicyName" + $index', 'true', 'false', 'default', 'Memory policy name') |
| +table-remove-button(memoryPolicies, 'Remove memory configuration') |
| .settings-row |
| +number('Initial size:', 'model.initialSize', '"MemoryPolicyInitialSize" + $index', |
| 'true', '268435456', '10485760', 'Initial memory region size defined by this memory policy') |
| .settings-row |
| +number('Maximum size:', 'model.maxSize', '"MemoryPolicyMaxSize" + $index', |
| 'true', '0.8 * totalMemoryAvailable', '10485760', 'Maximum memory region size defined by this memory policy') |
| .settings-row |
| +text('Swap file path:', 'model.swapFilePath', '"MemoryPolicySwapFilePath" + $index', 'false', |
| 'Input swap file path', 'An optional path to a memory mapped file for this memory policy') |
| .settings-row |
| +dropdown('Eviction mode:', 'model.pageEvictionMode', '"MemoryPolicyPageEvictionMode"', 'true', 'DISABLED', |
| '[\ |
| {value: "DISABLED", label: "DISABLED"},\ |
| {value: "RANDOM_LRU", label: "RANDOM_LRU"},\ |
| {value: "RANDOM_2_LRU", label: "RANDOM_2_LRU"}\ |
| ]', |
| 'An algorithm for memory pages eviction\ |
| <ul>\ |
| <li>DISABLED - Eviction is disabled</li>\ |
| <li>RANDOM_LRU - Once a memory region defined by a memory policy is configured, an off - heap array is allocated to track last usage timestamp for every individual data page</li>\ |
| <li>RANDOM_2_LRU - Differs from Random - LRU only in a way that two latest access timestamps are stored for every data page</li>\ |
| </ul>') |
| .settings-row |
| +number-min-max-step('Eviction threshold:', 'model.evictionThreshold', '"MemoryPolicyEvictionThreshold" + $index', |
| 'true', '0.9', '0.5', '0.999', '0.05', 'A threshold for memory pages eviction initiation') |
| .settings-row |
| +number('Empty pages pool size:', 'model.emptyPagesPoolSize', '"MemoryPolicyEmptyPagesPoolSize" + $index', |
| 'true', '100', '10', 'The minimal number of empty pages to be present in reuse lists for this memory policy') |
| .settings-row |
| +checkbox('Metrics enabled', 'model.metricsEnabled', '"MemoryPolicyMetricsEnabled" + $index', |
| 'Whether memory metrics are enabled by default on node startup') |
| |
| //- Since ignite 2.1 |
| .div(ng-if='$ctrl.available("2.1.0")') |
| .settings-row |
| +number('Sub intervals:', 'model.subIntervals', '"MemoryPolicySubIntervals" + $index', |
| 'true', '5', '1', 'A number of sub-intervals the whole rate time interval will be split into to calculate allocation and eviction rates') |
| .settings-row |
| +number('Rate time interval:', 'model.rateTimeInterval', '"MemoryPolicyRateTimeInterval" + $index', |
| 'true', '60000', '1000', 'Time interval for allocation rate and eviction rate monitoring purposes') |
| .col-sm-6 |
| +preview-xml-java(model, 'clusterMemory') |