{-# LANGUAGE DeriveGeneric #-} {-# LANGUAGE DuplicateRecordFields #-} {-# LANGUAGE NamedFieldPuns #-} {-# LANGUAGE OverloadedStrings #-} {-# LANGUAGE RecordWildCards #-} {-# LANGUAGE StrictData #-} {-# LANGUAGE NoImplicitPrelude #-} {-# OPTIONS_GHC -fno-warn-unused-imports #-} {-# OPTIONS_GHC -fno-warn-unused-matches #-} -- Derived from AWS service descriptions, licensed under Apache 2.0. -- | -- Module : Amazonka.Batch.Types.ResourceRequirement -- Copyright : (c) 2013-2023 Brendan Hay -- License : Mozilla Public License, v. 2.0. -- Maintainer : Brendan Hay -- Stability : auto-generated -- Portability : non-portable (GHC extensions) module Amazonka.Batch.Types.ResourceRequirement where import Amazonka.Batch.Types.ResourceType import qualified Amazonka.Core as Core import qualified Amazonka.Core.Lens.Internal as Lens import qualified Amazonka.Data as Data import qualified Amazonka.Prelude as Prelude -- | The type and amount of a resource to assign to a container. The -- supported resources include @GPU@, @MEMORY@, and @VCPU@. -- -- /See:/ 'newResourceRequirement' smart constructor. data ResourceRequirement = ResourceRequirement' { -- | The quantity of the specified resource to reserve for the container. The -- values vary based on the @type@ specified. -- -- [type=\"GPU\"] -- The number of physical GPUs to reserve for the container. Make sure -- that the number of GPUs reserved for all containers in a job -- doesn\'t exceed the number of available GPUs on the compute resource -- that the job is launched on. -- -- GPUs aren\'t available for jobs that are running on Fargate -- resources. -- -- [type=\"MEMORY\"] -- The memory hard limit (in MiB) present to the container. This -- parameter is supported for jobs that are running on EC2 resources. -- If your container attempts to exceed the memory specified, the -- container is terminated. This parameter maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . You must -- specify at least 4 MiB of memory for a job. This is required but can -- be specified in several places for multi-node parallel (MNP) jobs. -- It must be specified for each node at least once. This parameter -- maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . -- -- If you\'re trying to maximize your resource utilization by providing -- your jobs as much memory as possible for a particular instance type, -- see -- -- in the /Batch User Guide/. -- -- For jobs that are running on Fargate resources, then @value@ is the -- hard limit (in MiB), and must match one of the supported values and -- the @VCPU@ values must be one of the values supported for that -- memory value. -- -- [value = 512] -- @VCPU@ = 0.25 -- -- [value = 1024] -- @VCPU@ = 0.25 or 0.5 -- -- [value = 2048] -- @VCPU@ = 0.25, 0.5, or 1 -- -- [value = 3072] -- @VCPU@ = 0.5, or 1 -- -- [value = 4096] -- @VCPU@ = 0.5, 1, or 2 -- -- [value = 5120, 6144, or 7168] -- @VCPU@ = 1 or 2 -- -- [value = 8192] -- @VCPU@ = 1, 2, 4, or 8 -- -- [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360] -- @VCPU@ = 2 or 4 -- -- [value = 16384] -- @VCPU@ = 2, 4, or 8 -- -- [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720] -- @VCPU@ = 4 -- -- [value = 20480, 24576, or 28672] -- @VCPU@ = 4 or 8 -- -- [value = 36864, 45056, 53248, or 61440] -- @VCPU@ = 8 -- -- [value = 32768, 40960, 49152, or 57344] -- @VCPU@ = 8 or 16 -- -- [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880] -- @VCPU@ = 16 -- -- [type=\"VCPU\"] -- The number of vCPUs reserved for the container. This parameter maps -- to @CpuShares@ in the -- -- section of the -- and -- the @--cpu-shares@ option to -- . Each -- vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must -- specify at least one vCPU. This is required but can be specified in -- several places; it must be specified for each node at least once. -- -- The default for the Fargate On-Demand vCPU resource count quota is 6 -- vCPUs. For more information about Fargate quotas, see -- -- in the /Amazon Web Services General Reference/. -- -- For jobs that are running on Fargate resources, then @value@ must -- match one of the supported values and the @MEMORY@ values must be -- one of the values supported for that @VCPU@ value. The supported -- values are 0.25, 0.5, 1, 2, 4, 8, and 16 -- -- [value = 0.25] -- @MEMORY@ = 512, 1024, or 2048 -- -- [value = 0.5] -- @MEMORY@ = 1024, 2048, 3072, or 4096 -- -- [value = 1] -- @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192 -- -- [value = 2] -- @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, -- 12288, 13312, 14336, 15360, or 16384 -- -- [value = 4] -- @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, -- 16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, -- 25600, 26624, 27648, 28672, 29696, or 30720 -- -- [value = 8] -- @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960, -- 45056, 49152, 53248, 57344, or 61440 -- -- [value = 16] -- @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920, -- 90112, 98304, 106496, 114688, or 122880 value :: Prelude.Text, -- | The type of resource to assign to a container. The supported resources -- include @GPU@, @MEMORY@, and @VCPU@. type' :: ResourceType } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'ResourceRequirement' with all optional fields omitted. -- -- Use or to modify other optional fields. -- -- The following record fields are available, with the corresponding lenses provided -- for backwards compatibility: -- -- 'value', 'resourceRequirement_value' - The quantity of the specified resource to reserve for the container. The -- values vary based on the @type@ specified. -- -- [type=\"GPU\"] -- The number of physical GPUs to reserve for the container. Make sure -- that the number of GPUs reserved for all containers in a job -- doesn\'t exceed the number of available GPUs on the compute resource -- that the job is launched on. -- -- GPUs aren\'t available for jobs that are running on Fargate -- resources. -- -- [type=\"MEMORY\"] -- The memory hard limit (in MiB) present to the container. This -- parameter is supported for jobs that are running on EC2 resources. -- If your container attempts to exceed the memory specified, the -- container is terminated. This parameter maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . You must -- specify at least 4 MiB of memory for a job. This is required but can -- be specified in several places for multi-node parallel (MNP) jobs. -- It must be specified for each node at least once. This parameter -- maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . -- -- If you\'re trying to maximize your resource utilization by providing -- your jobs as much memory as possible for a particular instance type, -- see -- -- in the /Batch User Guide/. -- -- For jobs that are running on Fargate resources, then @value@ is the -- hard limit (in MiB), and must match one of the supported values and -- the @VCPU@ values must be one of the values supported for that -- memory value. -- -- [value = 512] -- @VCPU@ = 0.25 -- -- [value = 1024] -- @VCPU@ = 0.25 or 0.5 -- -- [value = 2048] -- @VCPU@ = 0.25, 0.5, or 1 -- -- [value = 3072] -- @VCPU@ = 0.5, or 1 -- -- [value = 4096] -- @VCPU@ = 0.5, 1, or 2 -- -- [value = 5120, 6144, or 7168] -- @VCPU@ = 1 or 2 -- -- [value = 8192] -- @VCPU@ = 1, 2, 4, or 8 -- -- [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360] -- @VCPU@ = 2 or 4 -- -- [value = 16384] -- @VCPU@ = 2, 4, or 8 -- -- [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720] -- @VCPU@ = 4 -- -- [value = 20480, 24576, or 28672] -- @VCPU@ = 4 or 8 -- -- [value = 36864, 45056, 53248, or 61440] -- @VCPU@ = 8 -- -- [value = 32768, 40960, 49152, or 57344] -- @VCPU@ = 8 or 16 -- -- [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880] -- @VCPU@ = 16 -- -- [type=\"VCPU\"] -- The number of vCPUs reserved for the container. This parameter maps -- to @CpuShares@ in the -- -- section of the -- and -- the @--cpu-shares@ option to -- . Each -- vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must -- specify at least one vCPU. This is required but can be specified in -- several places; it must be specified for each node at least once. -- -- The default for the Fargate On-Demand vCPU resource count quota is 6 -- vCPUs. For more information about Fargate quotas, see -- -- in the /Amazon Web Services General Reference/. -- -- For jobs that are running on Fargate resources, then @value@ must -- match one of the supported values and the @MEMORY@ values must be -- one of the values supported for that @VCPU@ value. The supported -- values are 0.25, 0.5, 1, 2, 4, 8, and 16 -- -- [value = 0.25] -- @MEMORY@ = 512, 1024, or 2048 -- -- [value = 0.5] -- @MEMORY@ = 1024, 2048, 3072, or 4096 -- -- [value = 1] -- @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192 -- -- [value = 2] -- @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, -- 12288, 13312, 14336, 15360, or 16384 -- -- [value = 4] -- @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, -- 16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, -- 25600, 26624, 27648, 28672, 29696, or 30720 -- -- [value = 8] -- @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960, -- 45056, 49152, 53248, 57344, or 61440 -- -- [value = 16] -- @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920, -- 90112, 98304, 106496, 114688, or 122880 -- -- 'type'', 'resourceRequirement_type' - The type of resource to assign to a container. The supported resources -- include @GPU@, @MEMORY@, and @VCPU@. newResourceRequirement :: -- | 'value' Prelude.Text -> -- | 'type'' ResourceType -> ResourceRequirement newResourceRequirement pValue_ pType_ = ResourceRequirement' { value = pValue_, type' = pType_ } -- | The quantity of the specified resource to reserve for the container. The -- values vary based on the @type@ specified. -- -- [type=\"GPU\"] -- The number of physical GPUs to reserve for the container. Make sure -- that the number of GPUs reserved for all containers in a job -- doesn\'t exceed the number of available GPUs on the compute resource -- that the job is launched on. -- -- GPUs aren\'t available for jobs that are running on Fargate -- resources. -- -- [type=\"MEMORY\"] -- The memory hard limit (in MiB) present to the container. This -- parameter is supported for jobs that are running on EC2 resources. -- If your container attempts to exceed the memory specified, the -- container is terminated. This parameter maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . You must -- specify at least 4 MiB of memory for a job. This is required but can -- be specified in several places for multi-node parallel (MNP) jobs. -- It must be specified for each node at least once. This parameter -- maps to @Memory@ in the -- -- section of the -- and -- the @--memory@ option to -- . -- -- If you\'re trying to maximize your resource utilization by providing -- your jobs as much memory as possible for a particular instance type, -- see -- -- in the /Batch User Guide/. -- -- For jobs that are running on Fargate resources, then @value@ is the -- hard limit (in MiB), and must match one of the supported values and -- the @VCPU@ values must be one of the values supported for that -- memory value. -- -- [value = 512] -- @VCPU@ = 0.25 -- -- [value = 1024] -- @VCPU@ = 0.25 or 0.5 -- -- [value = 2048] -- @VCPU@ = 0.25, 0.5, or 1 -- -- [value = 3072] -- @VCPU@ = 0.5, or 1 -- -- [value = 4096] -- @VCPU@ = 0.5, 1, or 2 -- -- [value = 5120, 6144, or 7168] -- @VCPU@ = 1 or 2 -- -- [value = 8192] -- @VCPU@ = 1, 2, 4, or 8 -- -- [value = 9216, 10240, 11264, 12288, 13312, 14336, or 15360] -- @VCPU@ = 2 or 4 -- -- [value = 16384] -- @VCPU@ = 2, 4, or 8 -- -- [value = 17408, 18432, 19456, 21504, 22528, 23552, 25600, 26624, 27648, 29696, or 30720] -- @VCPU@ = 4 -- -- [value = 20480, 24576, or 28672] -- @VCPU@ = 4 or 8 -- -- [value = 36864, 45056, 53248, or 61440] -- @VCPU@ = 8 -- -- [value = 32768, 40960, 49152, or 57344] -- @VCPU@ = 8 or 16 -- -- [value = 65536, 73728, 81920, 90112, 98304, 106496, 114688, or 122880] -- @VCPU@ = 16 -- -- [type=\"VCPU\"] -- The number of vCPUs reserved for the container. This parameter maps -- to @CpuShares@ in the -- -- section of the -- and -- the @--cpu-shares@ option to -- . Each -- vCPU is equivalent to 1,024 CPU shares. For EC2 resources, you must -- specify at least one vCPU. This is required but can be specified in -- several places; it must be specified for each node at least once. -- -- The default for the Fargate On-Demand vCPU resource count quota is 6 -- vCPUs. For more information about Fargate quotas, see -- -- in the /Amazon Web Services General Reference/. -- -- For jobs that are running on Fargate resources, then @value@ must -- match one of the supported values and the @MEMORY@ values must be -- one of the values supported for that @VCPU@ value. The supported -- values are 0.25, 0.5, 1, 2, 4, 8, and 16 -- -- [value = 0.25] -- @MEMORY@ = 512, 1024, or 2048 -- -- [value = 0.5] -- @MEMORY@ = 1024, 2048, 3072, or 4096 -- -- [value = 1] -- @MEMORY@ = 2048, 3072, 4096, 5120, 6144, 7168, or 8192 -- -- [value = 2] -- @MEMORY@ = 4096, 5120, 6144, 7168, 8192, 9216, 10240, 11264, -- 12288, 13312, 14336, 15360, or 16384 -- -- [value = 4] -- @MEMORY@ = 8192, 9216, 10240, 11264, 12288, 13312, 14336, 15360, -- 16384, 17408, 18432, 19456, 20480, 21504, 22528, 23552, 24576, -- 25600, 26624, 27648, 28672, 29696, or 30720 -- -- [value = 8] -- @MEMORY@ = 16384, 20480, 24576, 28672, 32768, 36864, 40960, -- 45056, 49152, 53248, 57344, or 61440 -- -- [value = 16] -- @MEMORY@ = 32768, 40960, 49152, 57344, 65536, 73728, 81920, -- 90112, 98304, 106496, 114688, or 122880 resourceRequirement_value :: Lens.Lens' ResourceRequirement Prelude.Text resourceRequirement_value = Lens.lens (\ResourceRequirement' {value} -> value) (\s@ResourceRequirement' {} a -> s {value = a} :: ResourceRequirement) -- | The type of resource to assign to a container. The supported resources -- include @GPU@, @MEMORY@, and @VCPU@. resourceRequirement_type :: Lens.Lens' ResourceRequirement ResourceType resourceRequirement_type = Lens.lens (\ResourceRequirement' {type'} -> type') (\s@ResourceRequirement' {} a -> s {type' = a} :: ResourceRequirement) instance Data.FromJSON ResourceRequirement where parseJSON = Data.withObject "ResourceRequirement" ( \x -> ResourceRequirement' Prelude.<$> (x Data..: "value") Prelude.<*> (x Data..: "type") ) instance Prelude.Hashable ResourceRequirement where hashWithSalt _salt ResourceRequirement' {..} = _salt `Prelude.hashWithSalt` value `Prelude.hashWithSalt` type' instance Prelude.NFData ResourceRequirement where rnf ResourceRequirement' {..} = Prelude.rnf value `Prelude.seq` Prelude.rnf type' instance Data.ToJSON ResourceRequirement where toJSON ResourceRequirement' {..} = Data.object ( Prelude.catMaybes [ Prelude.Just ("value" Data..= value), Prelude.Just ("type" Data..= type') ] )