{-# 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.GreengrassV2.Types.SystemResourceLimits -- 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.GreengrassV2.Types.SystemResourceLimits where 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 -- | Contains information about system resource limits that the IoT -- Greengrass Core software applies to a component\'s processes. For more -- information, see -- . -- -- /See:/ 'newSystemResourceLimits' smart constructor. data SystemResourceLimits = SystemResourceLimits' { -- | The maximum amount of CPU time that a component\'s processes can use on -- the core device. A core device\'s total CPU time is equivalent to the -- device\'s number of CPU cores. For example, on a core device with 4 CPU -- cores, you can set this value to @2@ to limit the component\'s processes -- to 50 percent usage of each CPU core. On a device with 1 CPU core, you -- can set this value to @0.25@ to limit the component\'s processes to 25 -- percent usage of the CPU. If you set this value to a number greater than -- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit -- the component\'s CPU usage. cpus :: Prelude.Maybe Prelude.Double, -- | The maximum amount of RAM, expressed in kilobytes, that a component\'s -- processes can use on the core device. memory :: Prelude.Maybe Prelude.Natural } deriving (Prelude.Eq, Prelude.Read, Prelude.Show, Prelude.Generic) -- | -- Create a value of 'SystemResourceLimits' 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: -- -- 'cpus', 'systemResourceLimits_cpus' - The maximum amount of CPU time that a component\'s processes can use on -- the core device. A core device\'s total CPU time is equivalent to the -- device\'s number of CPU cores. For example, on a core device with 4 CPU -- cores, you can set this value to @2@ to limit the component\'s processes -- to 50 percent usage of each CPU core. On a device with 1 CPU core, you -- can set this value to @0.25@ to limit the component\'s processes to 25 -- percent usage of the CPU. If you set this value to a number greater than -- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit -- the component\'s CPU usage. -- -- 'memory', 'systemResourceLimits_memory' - The maximum amount of RAM, expressed in kilobytes, that a component\'s -- processes can use on the core device. newSystemResourceLimits :: SystemResourceLimits newSystemResourceLimits = SystemResourceLimits' { cpus = Prelude.Nothing, memory = Prelude.Nothing } -- | The maximum amount of CPU time that a component\'s processes can use on -- the core device. A core device\'s total CPU time is equivalent to the -- device\'s number of CPU cores. For example, on a core device with 4 CPU -- cores, you can set this value to @2@ to limit the component\'s processes -- to 50 percent usage of each CPU core. On a device with 1 CPU core, you -- can set this value to @0.25@ to limit the component\'s processes to 25 -- percent usage of the CPU. If you set this value to a number greater than -- the number of CPU cores, the IoT Greengrass Core software doesn\'t limit -- the component\'s CPU usage. systemResourceLimits_cpus :: Lens.Lens' SystemResourceLimits (Prelude.Maybe Prelude.Double) systemResourceLimits_cpus = Lens.lens (\SystemResourceLimits' {cpus} -> cpus) (\s@SystemResourceLimits' {} a -> s {cpus = a} :: SystemResourceLimits) -- | The maximum amount of RAM, expressed in kilobytes, that a component\'s -- processes can use on the core device. systemResourceLimits_memory :: Lens.Lens' SystemResourceLimits (Prelude.Maybe Prelude.Natural) systemResourceLimits_memory = Lens.lens (\SystemResourceLimits' {memory} -> memory) (\s@SystemResourceLimits' {} a -> s {memory = a} :: SystemResourceLimits) instance Data.FromJSON SystemResourceLimits where parseJSON = Data.withObject "SystemResourceLimits" ( \x -> SystemResourceLimits' Prelude.<$> (x Data..:? "cpus") Prelude.<*> (x Data..:? "memory") ) instance Prelude.Hashable SystemResourceLimits where hashWithSalt _salt SystemResourceLimits' {..} = _salt `Prelude.hashWithSalt` cpus `Prelude.hashWithSalt` memory instance Prelude.NFData SystemResourceLimits where rnf SystemResourceLimits' {..} = Prelude.rnf cpus `Prelude.seq` Prelude.rnf memory instance Data.ToJSON SystemResourceLimits where toJSON SystemResourceLimits' {..} = Data.object ( Prelude.catMaybes [ ("cpus" Data..=) Prelude.<$> cpus, ("memory" Data..=) Prelude.<$> memory ] )