Boavizta / boaviztapi

🛠 Giving access to BOAVIZTA reference data and methodologies trough a RESTful API
GNU Affero General Public License v3.0
68 stars 23 forks source link

Server bottom-up #2

Closed da-ekchajzer closed 2 years ago

da-ekchajzer commented 2 years ago

Epic

Server

US

As an external user I can retrieve the impact of my server With the bottom-up methodology of Boavizta

Route(s) involved

/v1/server/bottom-up

Process

The user send data concerning the server (model, brand, type, CPU type, CPU number, stockage capacity, ...). If all the data needed to apply the methodology has been given by the user, the impact is calculated and sent back to the user. If not, default values are used

da-ekchajzer commented 2 years ago

Methodology

This methodology is a bottom-up approach to evaluate the manufacture impact of a server from the impact of its components. The impact of CPU, RAM and SSD are evaluated depending on their die density (which as been found as the most influent variable). The impact of the other components are evaluated directly with emission factors.

Equations

For CPU

GWP_Manuf_CPU (kgCO2eq) = CPUNumber (Unit) x ((CPUCoreNumber (unit) x DieSizePerCore (cm2) + 0.491) x CPUDieGWPImpact (kg CO2eq) + CPUGWPImpact (kgCO2eq) )   
ADP_Manuf_CPU (kgSbeq)= CPUNumber (Unit) x ((CPUCoreNumber (unit) x DieSizePerCore (cm2) + 0.491) x CPUDieADPImpact (kg Sbeq) + CPUADPImpact (kgSbeq) )  
PE_Manuf_CPU (MJ)= CPUNumber (Unit) x ((CPUCoreNumber (unit) x DieSizePerCore (cm2) + 0.491) x CPUDiePEImpact (MJ) + CPUPEImpact (MJ) )   

with:

CPUNumber : server data
CPUCoreNumber : component data (cpu)
DieSizePerCore :  component data (cpu) or 0.245 cm2 (default)

CPUDie[*]PImpact : impact factor
CPU[*]Impact : impact factor

For RAM

GWP_Manuf_RAM (kgCO2eq) = RAMModuleNumber (Unit) x ((RAMSize (Go) / RAMStorageDensity (Go/cm2)) x RAMDieGWPImpact (kg CO2eq) + RAMModuleGWPImpact (kgCO2eq) )   
ADP_Manuf_RAM (kg Sb eq) = RAMModuleNumber (Unit) x ((RAMSize (Go) / RAMStorageDensity (Go/cm2)) x RAMDieADPImpact (kg Sb eq) + RAMModuleADPImpact (kg Sb eq) )   
PE_Manuf_RAM (MJ) = RAMModuleNumber (Unit) x ((RAMSize (Go) / RAMStorageDensity (Go/cm2)) x RAMDiePEImpact (MJ) + RAMModulePEImpact (MJ) )   

with :

RAMModuleNumber : server data
RAMSize : component data (ram)
RAMStorageDensity :  component data (ram) or 1.79Go/cm2 (default)

RAMDie[*]Impact : impact factor
RAMModule[*]Impact : impact factor

For SSD

GWP_Manuf_SSD (kgCO2eq) = SSDDiskNumber (Unit) x ((SSDDiskSize (Go) / SSDStorageDensity (Go/cm2)) x SSDDieGWPImpact (kg CO2eq) + SSDDiskGWPImpact (kgCO2eq) )   
ADP_Manuf_SSD (kg Sb eq) = SSDDiskNumber (Unit) x ((SSDDiskSize (Go) / SSDStorageDensity (Go/cm2)) x SSDDieADPImpact (kg Sb eq) + SSDDiskGWPImpact (kg Sb eq) )   
PE_Manuf_SSD (MJ) = SSDDiskNumber (Unit) x ((SSDDiskSize (Go) / SSDStorageDensity (Go/cm2)) x SSDDieEPImpact (MJ) + SSDDiskEPImpact (MJ) )   

with:

SSDDiskNumber : server data
SSDDiskSize : component data (ssd)
SSDStorageDensity :  component data (ssd) or 50.6 Go/cm2 (default)

SSDDie[*]Impact : impact factor
SSDDisk[*]Impact : impact factor

For the all server

GWP_Manuf_Server (kgCO2eq) = GWP_Manuf_CPU + GWP_Manuf_RAM + GWP_Manuf_SSD + HDDDriveNumber*HDDGWPImpact + MotherBoardGWPImpact + PowerSupplyUnitNumber*PowerSupplyUnitWeight*PSUGWPImpact + ServerAssemblyGWPImpact + RackGWPImpact (si serveur rack) + BladeGWPImpact + 1/16 (BladeSlotsGWPImpact) (if blade server) 
ADP_Manuf_Server (kgCO2eq) = ADP_Manuf_CPU + ADP_Manuf_RAM + ADP_Manuf_SSD + HDDDriveNumber*HDDADPImpact + MotherBoardADPImpact + PowerSupplyUnitNumber*PowerSupplyUnitWeight*PSUADPImpact + ServerAssemblyADPImpact + RackADPImpact (if server rack) + BladeADPImpact + 1/16 (BladeSlotsADPImpact) (if blade server) 
EP_Manuf_Server (kgCO2eq) = EP_Manuf_CPU + EP_Manuf_RAM + EP_Manuf_SSD + HDDDriveNumber*HDDEPImpact + MotherBoardEPImpact + PowerSupplyUnitNumber*PowerSupplyUnitWeight*PSUEPImpact + ServerAssemblyEPImpact + RackEPImpact (si serveur rack) + BladeEPImpact + 1/16 (BladeSlotsEPImpact) (if blade server) 

with:

[*]_Manuf_CPU : equation
[*]_Manuf_RAM : equation
[*]_Manuf_SSD :  equation

HDD[*]Impact : impact factor
MotherBoard[*]Impact  : impact factor
PSU[*]Impact  : impact factor
ServerAssembly[*]Impact  : impact factor
Rack[*]Impact  : impact factor
Blade[*]Impact  : impact factor
BladeSlots[*]Impact : impact factor

HDDDriveNumber : server data
PowerSupplyUnitNumber : server data
PowerSupplyUnitWeight : component data

Data

Impact factor

Composant | Variable (GWP) | Unité | ADP (kgSbeq) | GWP (kgCO2eq) | PE (MJ) -- | -- | -- | -- | -- | -- CPU | CPUGWPImpact | Unit | 2.04E-02 | 9.14 | 156.00 CPU Die | CPUDieGWPImpact | 1 cm2 | 5.80E-07 | 1.97 | 26.50 RAM Module |   | Unit | 1.69E-03 | 5.22 | 74.00 RAM Die |   | 1 cm2 | 6.30E-05 | 2.20 | 27.30 SSD (excluding die) Disk |   | Unit | 5.63E-04 | 6.34 | 76.90 SSD Die |   | 1 cm2 | 6.30E-05 | 2.20 | 27.30 HDD Disk |   | Unit | 2.50E-04 | 31.10 | 276.00 Motherboard |   | Unit | 3.69E-03 | 66.10 | 836.00 Rack Server |   | Unit | 2.02E-02 | 150.00 | 2 200.00 Blade 16 Slots |   | Unit | 4.32E-01 | 880.00 | 12 700.00 Blade Server |   | Unit | 6.72E-04 | 30.90 | 435.00 Server Assembly |   | Unit | 1.41E-06 | 6.68 | 68.60 Power Supply Unit |   | kg | 8.30E-03 | 24.30 | 352.00

Components

CPU

CPU Family | Introduction Year | Process (nm) | Die size (mm2) | Core Number | Size/Core  (mm2) -- | -- | -- | -- | -- | -- Skylake | 2017 | 14 | 694 | 28 | 24.8 Skylake | 2017 | 14 | 485 | 18 | 26.9 Skylake | 2017 | 14 | 325 | 10 | 32.5 Coffee Lake | 2017 | 14 | 149 | 6 | 24.8 Coffee Lake | 2017 | 14 | 174 | 8 | 21.8 Broadwell | 2014 | 14 | 456 | 24 | 19.0 Broadwell | 2014 | 14 | 306 | 14 | 21.9 Broadwell | 2014 | 14 | 246 | 10 | 24.6 Haswell | 2013 | 22 | 622 | 18 | 34.6 Ivy Bridge | 2011 | 22 | 160 | 4 | 40.0 Ivy Bridge | 2011 | 22 | 257 | 6 | 42.8 Ivy Bridge | 2011 | 22 | 341 | 10 | 34.1 Ivy Bridge | 2011 | 22 | 541 | 15 | 36.1 Sandy Bridge | 2010 | 32 | 216 | 4 | 54.0

RAM

Constructeur | Architecture | Go/cm2 -- | -- | -- Samsung | 30nm | 0.625 Samsung | 25nm | 1.25 Samsung | 20nm | 1.75 Samsung | 18nm | 2.38 SK hynix | 30nm | 0.750 SK hynix | 26nm | 1.00 SK hynix | 21nm | 1.31 SK hynix | 21nm | 1.88 Micron | 30nm | 0.750 Micron | 30nm | 0.875 Micron | 20nm | 1.13 Micron | 20nm | 1.13

SSD

Constructeur | Densité de stockage (Go/cm2) -- | -- Micron | 49.6 Toshiba | 48.5 Samsung | 53.6
da-ekchajzer commented 2 years ago

Exemple of post request

{
"model":{
   "brand": "Dell",
   "name": "R740",
   "type": "rack",
   "year": 2020
},
"configuration": {
    "cpu":{
        "number": 2,
        "die": 0.245,
        "core_number": 24
    },
    "ram":{
        "capacity": 32,
        "quantity": 12,
        "die": 1.79
    },
    "ssd":{
        "capacity": 400,
        "quantity": 1,
        "die": 50.6
    },
    "hdd":{
        "number": 0
    },
   "power_supply":{
         "weight": 2.99,
         "quantity": 2
    }
}}

Any element can be removed and will be replaced server side by a default value

Response

{
    "hypothesis": "not implemented",
    "impacts": {
        "adp": 0.1493534978742977,
        "gwp": 963.6083516103959,
        "pe": 12834.909589529003
    }
}