UNPKG

@cloud-carbon-footprint/gcp

Version:

The core logic to get cloud usage data and estimate energy and carbon emissions from Google Cloud Platform.

232 lines 12.6 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getGCPEmissionsFactors = exports.GCP_CLOUD_CONSTANTS = void 0; const core_1 = require("@cloud-carbon-footprint/core"); const GCPRegions_1 = require("../lib/GCPRegions"); const common_1 = require("@cloud-carbon-footprint/common"); exports.GCP_CLOUD_CONSTANTS = { SSDCOEFFICIENT: 1.2, HDDCOEFFICIENT: 0.65, MIN_WATTS_MEDIAN: 0.68, MIN_WATTS_BY_COMPUTE_PROCESSOR: { [core_1.COMPUTE_PROCESSOR_TYPES.BROADWELL]: 0.71, [core_1.COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE]: 0.69, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN]: 0.46, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_4TH_GEN]: 0.74, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_5TH_GEN]: 0.27, [core_1.COMPUTE_PROCESSOR_TYPES.EMERALD_RAPIDS]: 0.81, [core_1.COMPUTE_PROCESSOR_TYPES.GRANITE_RAPIDS]: 0.58, [core_1.COMPUTE_PROCESSOR_TYPES.HASWELL]: 1.86, [core_1.COMPUTE_PROCESSOR_TYPES.ICELAKE]: 0.77, [core_1.COMPUTE_PROCESSOR_TYPES.IVY_BRIDGE]: 1.71, [core_1.COMPUTE_PROCESSOR_TYPES.SANDY_BRIDGE]: 2.21, [core_1.COMPUTE_PROCESSOR_TYPES.SAPPHIRE_RAPIDS]: 1.04, [core_1.COMPUTE_PROCESSOR_TYPES.SKYLAKE]: 0.61, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_GB300]: 168, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_GB200]: 120, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_B200]: 120, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_H200]: 84, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_H100]: 84, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100]: 48, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_RTX_PRO_6000]: 72, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_L4]: 8.64, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_T4]: 8.4, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100]: 30, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100]: 30, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P4]: 9, }, getMinWatts: (computeProcessors) => { const minWattsForProcessors = computeProcessors.map((processor) => { return exports.GCP_CLOUD_CONSTANTS.MIN_WATTS_BY_COMPUTE_PROCESSOR[processor]; }); const wattsForProcessors = (0, core_1.getWattsByAverageOrMedian)(computeProcessors, minWattsForProcessors); return wattsForProcessors ? wattsForProcessors : exports.GCP_CLOUD_CONSTANTS.MIN_WATTS_MEDIAN; }, MAX_WATTS_MEDIAN: 4.11, MAX_WATTS_BY_COMPUTE_PROCESSOR: { [core_1.COMPUTE_PROCESSOR_TYPES.BROADWELL]: 3.39, [core_1.COMPUTE_PROCESSOR_TYPES.CASCADE_LAKE]: 3.75, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN]: 1.83, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_4TH_GEN]: 2.2, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_5TH_GEN]: 1.36, [core_1.COMPUTE_PROCESSOR_TYPES.EMERALD_RAPIDS]: 4.38, [core_1.COMPUTE_PROCESSOR_TYPES.GRANITE_RAPIDS]: 2.37, [core_1.COMPUTE_PROCESSOR_TYPES.HASWELL]: 5.56, [core_1.COMPUTE_PROCESSOR_TYPES.ICELAKE]: 3.65, [core_1.COMPUTE_PROCESSOR_TYPES.IVY_BRIDGE]: 5.51, [core_1.COMPUTE_PROCESSOR_TYPES.SANDY_BRIDGE]: 8.6, [core_1.COMPUTE_PROCESSOR_TYPES.SAPPHIRE_RAPIDS]: 4.06, [core_1.COMPUTE_PROCESSOR_TYPES.SKYLAKE]: 3.87, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_GB300]: 1428, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_GB200]: 1020, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_B200]: 1020, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_H200]: 714, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_H100]: 714, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100]: 408, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_RTX_PRO_6000]: 612, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_L4]: 73.44, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_T4]: 71.4, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100]: 255, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100]: 255, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P4]: 76.5, }, getMaxWatts: (computeProcessors) => { const maxWattsForProcessors = computeProcessors.map((processor) => { return exports.GCP_CLOUD_CONSTANTS.MAX_WATTS_BY_COMPUTE_PROCESSOR[processor]; }); const wattsForProcessors = (0, core_1.getWattsByAverageOrMedian)(computeProcessors, maxWattsForProcessors); return wattsForProcessors ? wattsForProcessors : exports.GCP_CLOUD_CONSTANTS.MAX_WATTS_MEDIAN; }, NETWORKING_COEFFICIENT: 0.001, MEMORY_COEFFICIENT: 0.000392, PUE_AVG: 1.1, PUE_TRAILING_TWELVE_MONTH: { [GCPRegions_1.GCP_REGIONS.US_EAST4]: 1.08, [GCPRegions_1.GCP_REGIONS.US_CENTRAL1]: 1.11, [GCPRegions_1.GCP_REGIONS.US_CENTRAL2]: 1.11, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST1]: 1.09, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST4]: 1.07, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH1]: 1.09, [GCPRegions_1.GCP_REGIONS.ASIA_EAST1]: 1.12, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST1]: 1.13, }, getPUE: (region) => { return exports.GCP_CLOUD_CONSTANTS.PUE_TRAILING_TWELVE_MONTH[region] ? exports.GCP_CLOUD_CONSTANTS.PUE_TRAILING_TWELVE_MONTH[region] : exports.GCP_CLOUD_CONSTANTS.PUE_AVG; }, AVG_CPU_UTILIZATION_2020: 50, REPLICATION_FACTORS: { CLOUD_STORAGE_SINGLE_REGION: 2, CLOUD_STORAGE_DUAL_REGION: 2, CLOUD_STORAGE_MULTI_REGION: 2, COMPUTE_ENGINE_REGIONAL_DISKS: 2, CLOUD_FILESTORE: 2, CLOUD_SQL_HIGH_AVAILABILITY: 2, CLOUD_MEMORY_STORE_REDIS: 2, CLOUD_SPANNER_SINGLE_REGION: 2, CLOUD_SPANNER_MULTI_REGION: 2, KUBERNETES_ENGINE: 3, DEFAULT: 1, }, KILOWATT_HOURS_BY_SERVICE_AND_USAGE_UNIT: { total: {}, }, ESTIMATE_UNKNOWN_USAGE_BY: core_1.EstimateUnknownUsageBy.USAGE_AMOUNT, SERVER_EXPECTED_LIFESPAN: 35040, }; const getGCPEmissionsFactors = () => { if ((0, common_1.configLoader)().GCP.USE_CARBON_FREE_ENERGY_PERCENTAGE) return { [GCPRegions_1.GCP_REGIONS.US_CENTRAL1]: 0.0000537, [GCPRegions_1.GCP_REGIONS.US_CENTRAL2]: 0.0000446, [GCPRegions_1.GCP_REGIONS.US_EAST1]: 0.0003974, [GCPRegions_1.GCP_REGIONS.US_EAST4]: 0.0001227, [GCPRegions_1.GCP_REGIONS.US_EAST5]: 0.0001227, [GCPRegions_1.GCP_REGIONS.US_WEST1]: 0.0000103, [GCPRegions_1.GCP_REGIONS.US_WEST2]: 0.0000625, [GCPRegions_1.GCP_REGIONS.US_WEST3]: 0.0003719, [GCPRegions_1.GCP_REGIONS.US_WEST4]: 0.0001285, [GCPRegions_1.GCP_REGIONS.US_SOUTH1]: 0.0000182, [GCPRegions_1.GCP_REGIONS.ASIA_EAST1]: 0.0003644, [GCPRegions_1.GCP_REGIONS.ASIA_EAST2]: 0.0005, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST1]: 0.000376, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST2]: 0.0001598, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST3]: 0.0002249, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH1]: 0.0006179, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH2]: 0.0003777, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST1]: 0.0003523, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST2]: 0.00046, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST1]: 0.0003287, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST2]: 0.0002769, [GCPRegions_1.GCP_REGIONS.EUROPE_CENTRAL2]: 0.0003858, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH1]: 0.0000008, [GCPRegions_1.GCP_REGIONS.EUROPE_SOUTHWEST1]: 0.0000116, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST1]: 0.0000165, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST2]: 0.0000223, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST3]: 0.0000883, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST4]: 0.0000355, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST6]: 0.0000003, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST8]: 0.0000545, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST9]: 0.0000006, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST10]: 0.0000883, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST12]: 0.0000545, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST1]: 0.0000001, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST2]: 0.0000094, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_EAST1]: 0.000008, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_WEST1]: 0.000019, [GCPRegions_1.GCP_REGIONS.AFRICA_SOUTH1]: 0.0005585, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH2]: 0, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_CENTRAL1]: 0.0003623, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_CENTRAL2]: 0.0003782, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_WEST1]: 0.0004036, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_SOUTH1]: 0.0002471, [GCPRegions_1.GCP_REGIONS.US_EAST2]: 0.0001972, [GCPRegions_1.GCP_DUAL_REGIONS.ASIA1]: 0.0005358, [GCPRegions_1.GCP_DUAL_REGIONS.EUR4]: 0.0000363, [GCPRegions_1.GCP_DUAL_REGIONS.NAM4]: 0.0004511, [GCPRegions_1.GCP_MULTI_REGIONS.ASIA]: 0.002473, [GCPRegions_1.GCP_MULTI_REGIONS.EU]: 0.0007364, [GCPRegions_1.GCP_MULTI_REGIONS.US]: 0.0015297, [GCPRegions_1.GCP_REGIONS.UNKNOWN]: 0.0001889431818, }; return { [GCPRegions_1.GCP_REGIONS.US_CENTRAL1]: 0.000413, [GCPRegions_1.GCP_REGIONS.US_CENTRAL2]: 0.000372, [GCPRegions_1.GCP_REGIONS.US_EAST1]: 0.000576, [GCPRegions_1.GCP_REGIONS.US_EAST4]: 0.000323, [GCPRegions_1.GCP_REGIONS.US_EAST5]: 0.000323, [GCPRegions_1.GCP_REGIONS.US_WEST1]: 0.000079, [GCPRegions_1.GCP_REGIONS.US_WEST2]: 0.000169, [GCPRegions_1.GCP_REGIONS.US_WEST3]: 0.000555, [GCPRegions_1.GCP_REGIONS.US_WEST4]: 0.000357, [GCPRegions_1.GCP_REGIONS.US_SOUTH1]: 0.000303, [GCPRegions_1.GCP_REGIONS.ASIA_EAST1]: 0.000439, [GCPRegions_1.GCP_REGIONS.ASIA_EAST2]: 0.000505, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST1]: 0.000453, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST2]: 0.000296, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST3]: 0.000357, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH1]: 0.000679, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH2]: 0.000532, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST1]: 0.000367, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST2]: 0.000561, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST1]: 0.000498, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST2]: 0.000454, [GCPRegions_1.GCP_REGIONS.EUROPE_CENTRAL2]: 0.000643, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH1]: 0.000039, [GCPRegions_1.GCP_REGIONS.EUROPE_SOUTHWEST1]: 0.000089, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST1]: 0.000103, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST2]: 0.000106, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST3]: 0.000276, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST4]: 0.000209, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST6]: 0.000015, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST8]: 0.000202, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST9]: 0.000016, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST10]: 0.000276, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST12]: 0.000202, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST1]: 0.000005, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST2]: 0.000059, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_EAST1]: 0.000067, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_WEST1]: 0.000238, [GCPRegions_1.GCP_REGIONS.AFRICA_SOUTH1]: 0.000657, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH2]: 0.000003, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_CENTRAL1]: 0.000366, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_CENTRAL2]: 0.000382, [GCPRegions_1.GCP_REGIONS.MIDDLEEAST_WEST1]: 0.000434, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_SOUTH1]: 0.000305, [GCPRegions_1.GCP_REGIONS.US_EAST2]: 0.00034, [GCPRegions_1.GCP_DUAL_REGIONS.ASIA1]: 0.000749, [GCPRegions_1.GCP_DUAL_REGIONS.EUR4]: 0.000248, [GCPRegions_1.GCP_DUAL_REGIONS.NAM4]: 0.000989, [GCPRegions_1.GCP_MULTI_REGIONS.ASIA]: 0.003123, [GCPRegions_1.GCP_MULTI_REGIONS.EU]: 0.002058, [GCPRegions_1.GCP_MULTI_REGIONS.US]: 0.00381, [GCPRegions_1.GCP_REGIONS.UNKNOWN]: 0.0003100681818, }; }; exports.getGCPEmissionsFactors = getGCPEmissionsFactors; //# sourceMappingURL=GcpFootprintEstimationConstants.js.map