Ślad węglowy strony: jak liczę SWDM v4
Maciej Zmitrukiewicz · materiał do artykułu Ślad węglowy strony internetowej: kalkulator
To materiał do artykułu. Pokazuję tu wzór SWDM v4, którego używa kalkulator, i sześć przykładów, na których go sprawdzam. To obliczenie z modelu, więc wynik mówi, ile emisji model przypisuje stronie, a energię strony trzeba by zmierzyć osobno.
Na co patrzyłem
Wziąłem współczynniki SWDM v4 z opisu metody i ze stałych w bibliotece CO2.js. Dla części operacyjnej to 0,055 kWh/GB dla centrum danych, 0,059 dla sieci i 0,080 dla urządzenia. Emisje wbudowane, czyli produkcję sprzętu, model wyraża jako ekwiwalent energii: 0,012, 0,013 i 0,081. Bazowa konwersja to 494 g CO₂e/kWh.
Arytmetykę napisałem sam w krótkim skrypcie, bez uruchamiania CO2.js, żeby kalkulator w artykule miał niezależny punkt odniesienia.
D = bajty / 1 000 000 000 F = udział pierwszych wizyt + udział powrotów × udział danych pobieranych ponownie C = F × D × [ 0.055 × I_dc × (1 - hosting_factor) + 0.059 × I_network + 0.080 × I_device + (0.012 + 0.013 + 0.081) × 494 ]
Udział pierwszych wizyt i powrotów sumuje się do jedności. Zielony hosting (hosting_factor) zmniejsza tylko operacyjną część centrum danych.
Przypadki kontrolne
| Scenariusz | g CO₂e / modelowaną wizytę |
|---|---|
| 1 MB, pierwsza wizyta | 0,148200 |
| 1 MB, hosting factor 1 | 0,121030 |
| 1 MB, 50% pierwszych / 50% powrotów, 20% reload | 0,088920 |
| Ten sam mix + hosting factor 1 | 0,072618 |
| 2 MB, pierwsza wizyta | 0,296400 |
| 1 MiB = 1 048 576 B | 0,155399 |
Sześć miejsc po przecinku trzymam tylko po to, żeby testy łapały każdą zmianę w arytmetyce. W tekście dla ludzi pisz „około 0,15 g CO₂e”.
Czego te dane nie pokażą
- To obliczenie z modelu na przykładowych danych. Nie mierzy energii żadnej strony i nie ocenia trafności samego SWDM.
- Gdy wynik spada po zmianie współczynnika, cache albo hostingu, to model przypisuje stronie mniej emisji. Fizyczne zużycie energii może zmienić się w innej proporcji.
- Testy obejmują wzór i odrzucanie błędnych danych wejściowych. Przeglądarkę i samą bibliotekę CO2.js trzeba sprawdzić osobno.
Pliki
scenarios.json: dane wejściowe i wyniki wszystkich scenariuszycalculation-tests.json: wynik testów: 8 poprawnych przypadków i 12 błędnych danych wejściowych, które zostały odrzuconereproduce.py: skrypt, który przelicza przypadki kontrolne i sprawdza, czy wychodzą wartości z tabeli powyżejkarta-pomiaru.mdiporownanie-przed-po.md: szablony do własnego pomiaru i retestu
Żeby to powtórzyć, uruchom python3 reproduce.py (wystarczy sam Python, bez pakietów i bez sieci).