UNPKG

@cloud-carbon-footprint/gcp

Version:

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

204 lines 10.9 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.CASCADE_LAKE]: 0.64, [core_1.COMPUTE_PROCESSOR_TYPES.SKYLAKE]: 0.65, [core_1.COMPUTE_PROCESSOR_TYPES.BROADWELL]: 0.71, [core_1.COMPUTE_PROCESSOR_TYPES.HASWELL]: 1, [core_1.COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE]: 1.14, [core_1.COMPUTE_PROCESSOR_TYPES.SANDY_BRIDGE]: 2.17, [core_1.COMPUTE_PROCESSOR_TYPES.IVY_BRIDGE]: 3.04, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN]: 0.82, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN]: 0.47, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN]: 0.45, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_K520]: 26, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_A10G]: 18, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_T4]: 8, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60]: 35, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80]: 35, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100]: 35, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100]: 46, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P4]: 9, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100]: 36, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_RADEON_PRO_V520]: 26, }, 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.CASCADE_LAKE]: 3.97, [core_1.COMPUTE_PROCESSOR_TYPES.SKYLAKE]: 4.26, [core_1.COMPUTE_PROCESSOR_TYPES.BROADWELL]: 3.69, [core_1.COMPUTE_PROCESSOR_TYPES.HASWELL]: 4.74, [core_1.COMPUTE_PROCESSOR_TYPES.COFFEE_LAKE]: 5.42, [core_1.COMPUTE_PROCESSOR_TYPES.SANDY_BRIDGE]: 8.58, [core_1.COMPUTE_PROCESSOR_TYPES.IVY_BRIDGE]: 8.25, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_1ST_GEN]: 2.55, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_2ND_GEN]: 1.69, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_EPYC_3RD_GEN]: 2.02, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_K520]: 229, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_A10G]: 153, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_T4]: 71, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_M60]: 306, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_K80]: 306, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_V100]: 306, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_A100]: 407, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P4]: 76.5, [core_1.COMPUTE_PROCESSOR_TYPES.NVIDIA_TESLA_P100]: 306, [core_1.COMPUTE_PROCESSOR_TYPES.AMD_RADEON_PRO_V520]: 229, }, 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.0002152373529, [GCPRegions_1.GCP_REGIONS.US_CENTRAL2]: 0.0002152373529, [GCPRegions_1.GCP_REGIONS.US_EAST1]: 0.0003255, [GCPRegions_1.GCP_REGIONS.US_EAST4]: 0.00011124, [GCPRegions_1.GCP_REGIONS.US_EAST5]: 0.00011124, [GCPRegions_1.GCP_REGIONS.US_WEST1]: 0.0000072, [GCPRegions_1.GCP_REGIONS.US_WEST2]: 0.0000893, [GCPRegions_1.GCP_REGIONS.US_WEST3]: 0.00030912, [GCPRegions_1.GCP_REGIONS.US_WEST4]: 0.00028835, [GCPRegions_1.GCP_REGIONS.US_SOUTH1]: 0.0001776, [GCPRegions_1.GCP_REGIONS.ASIA_EAST1]: 0.00037848, [GCPRegions_1.GCP_REGIONS.ASIA_EAST2]: 0.0002592, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST1]: 0.00038976, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST2]: 0.00026496, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST3]: 0.00029325, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH1]: 0.000603, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH2]: 0.00061732, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST1]: 0.00035712, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST2]: 0.0005046, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST1]: 0.00047242, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST2]: 0.00035949, [GCPRegions_1.GCP_REGIONS.EUROPE_CENTRAL2]: 0.0004608, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH1]: 0.00001143, [GCPRegions_1.GCP_REGIONS.EUROPE_SOUTHWEST1]: 0.000121, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST1]: 0.0000198, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST2]: 0.00007396, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST3]: 0.0001076, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST4]: 0.00013301, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST6]: 0.0000129, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST8]: 0.000298, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST9]: 0.000059, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST1]: 0, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST2]: 0.00000232, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_EAST1]: 0.00002838, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_WEST1]: 0.0000589, [GCPRegions_1.GCP_DUAL_REGIONS.ASIA1]: 0.00065472, [GCPRegions_1.GCP_DUAL_REGIONS.EUR4]: 0.00014444, [GCPRegions_1.GCP_DUAL_REGIONS.NAM4]: 0.00033732, [GCPRegions_1.GCP_MULTI_REGIONS.ASIA]: 0.00139032, [GCPRegions_1.GCP_MULTI_REGIONS.EU]: 0.00121064, [GCPRegions_1.GCP_MULTI_REGIONS.US]: 0.00143137, [GCPRegions_1.GCP_REGIONS.UNKNOWN]: 0.0002152373529, }; return { [GCPRegions_1.GCP_REGIONS.US_CENTRAL1]: 0.000456, [GCPRegions_1.GCP_REGIONS.US_CENTRAL2]: 0.000456, [GCPRegions_1.GCP_REGIONS.US_EAST1]: 0.000434, [GCPRegions_1.GCP_REGIONS.US_EAST4]: 0.000309, [GCPRegions_1.GCP_REGIONS.US_EAST5]: 0.000309, [GCPRegions_1.GCP_REGIONS.US_WEST1]: 0.00006, [GCPRegions_1.GCP_REGIONS.US_WEST2]: 0.00019, [GCPRegions_1.GCP_REGIONS.US_WEST3]: 0.000448, [GCPRegions_1.GCP_REGIONS.US_WEST4]: 0.000365, [GCPRegions_1.GCP_REGIONS.US_SOUTH1]: 0.000296, [GCPRegions_1.GCP_REGIONS.ASIA_EAST1]: 0.000456, [GCPRegions_1.GCP_REGIONS.ASIA_EAST2]: 0.00036, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST1]: 0.000464, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST2]: 0.000384, [GCPRegions_1.GCP_REGIONS.ASIA_NORTHEAST3]: 0.000425, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH1]: 0.00067, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTH2]: 0.000671, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST1]: 0.000372, [GCPRegions_1.GCP_REGIONS.ASIA_SOUTHEAST2]: 0.00058, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST1]: 0.000598, [GCPRegions_1.GCP_REGIONS.AUSTRALIA_SOUTHEAST2]: 0.000521, [GCPRegions_1.GCP_REGIONS.EUROPE_CENTRAL2]: 0.000576, [GCPRegions_1.GCP_REGIONS.EUROPE_NORTH1]: 0.000127, [GCPRegions_1.GCP_REGIONS.EUROPE_SOUTHWEST1]: 0.000121, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST1]: 0.00011, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST2]: 0.000172, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST3]: 0.000269, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST4]: 0.000283, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST6]: 0.000086, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST8]: 0.000298, [GCPRegions_1.GCP_REGIONS.EUROPE_WEST9]: 0.000059, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST1]: 0.000028, [GCPRegions_1.GCP_REGIONS.NORTHAMERICA_NORTHEAST2]: 0.000029, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_EAST1]: 0.000129, [GCPRegions_1.GCP_REGIONS.SOUTHAMERICA_WEST1]: 0.00019, [GCPRegions_1.GCP_DUAL_REGIONS.ASIA1]: 0.000848, [GCPRegions_1.GCP_DUAL_REGIONS.EUR4]: 0.00041, [GCPRegions_1.GCP_DUAL_REGIONS.NAM4]: 0.000828, [GCPRegions_1.GCP_MULTI_REGIONS.ASIA]: 0.001676, [GCPRegions_1.GCP_MULTI_REGIONS.EU]: 0.001843, [GCPRegions_1.GCP_MULTI_REGIONS.US]: 0.002805, [GCPRegions_1.GCP_REGIONS.UNKNOWN]: 0.0003171470588, }; }; exports.getGCPEmissionsFactors = getGCPEmissionsFactors; //# sourceMappingURL=GcpFootprintEstimationConstants.js.map