How can I make my project more environmentally friendly? Philip - - PowerPoint PPT Presentation

how can i make my project more environmentally friendly
SMART_READER_LITE
LIVE PREVIEW

How can I make my project more environmentally friendly? Philip - - PowerPoint PPT Presentation

How can I make my project more environmentally friendly? Philip Withnall Endless philip@tecnocode.co.uk July 23, 2020 Online Motivation Limiting global warming to 1 . 5 C is a global priority How can I make my project more


slide-1
SLIDE 1

July 23, 2020 Online

How can I make my project more environmentally friendly?

Philip Withnall Endless philip@tecnocode.co.uk

slide-2
SLIDE 2

How can I make my project more environmentally friendly? 2

Motivation Limiting global warming to 1.5 ◦C is a global priority

slide-3
SLIDE 3

How can I make my project more environmentally friendly? 3

Life cycle analysis and products

Figure: Life cycle analysis (public domain)

slide-4
SLIDE 4

How can I make my project more environmentally friendly? 4

Carbon intensity of power generation

Power source Carbon intensity (gCO2e/kW h) Hydro 4 Wind 12 Nuclear 16 Solar PV 46 Gas 469 Coal 1001 IT average 300

Figure: Rough carbon intensities of power generation[1]

slide-5
SLIDE 5

How can I make my project more environmentally friendly? 5

Embodied carbon in software GNOME could provide carbon labelling for what we produce

slide-6
SLIDE 6

How can I make my project more environmentally friendly? 6

Functional unit and system boundary Functional unit: one dist tarball of a software release

slide-7
SLIDE 7

How can I make my project more environmentally friendly? 7

Functional unit and system boundary

GNOME Foundation Conferences Hackfests Marginal costs

  • n user systems
  • Compute
  • Network
  • Storage

GNOME-administered servers CI pipelines

System boundary

Figure: Proposed system boundary for GNOME

slide-8
SLIDE 8

How can I make my project more environmentally friendly? 8

Measuring marginal costs on user systems

Use cases sysprof + Builder systemd unit accounting Kernel power state statistics Wattmeter on power supply

slide-9
SLIDE 9

How can I make my project more environmentally friendly? 9

Measuring marginal costs on user systems: Use cases What use cases are you actually solving?

slide-10
SLIDE 10

How can I make my project more environmentally friendly? 10

Measuring marginal costs on user systems: sysprof + Builder sysprof-cli -- your-program-here

slide-11
SLIDE 11

How can I make my project more environmentally friendly? 11

Measuring marginal costs on user systems: sysprof + Builder

Figure: sysprof results in GNOME Builder

slide-12
SLIDE 12

How can I make my project more environmentally friendly? 12

Measuring marginal costs on user systems: systemd unit accounting echo -e "DefaultCPUAccounting=yes\n" \ "DefaultIOAccounting=yes\n" \ "DefaultIPAccounting=yes" >> \ /etc/systemd/system.conf

slide-13
SLIDE 13

How can I make my project more environmentally friendly? 13

Measuring marginal costs on user systems: systemd unit accounting

$ s y s t e m c t l s t a t u s geoclue . s e r v i c e

  • geoclue . s e r v i c e − Location

Lookup S e r v i c e Loaded : loaded ( . . ./ geoclue . s e r v i c e ; . . .) Active : a c t i v e ( running ) s i n c e F r i . . . Main PID : 2645 ( geoclue ) IP : 8.1M in , 3.4M out IO : 6.0M read , 9.1M w r i t t e n Tasks : 4 ( l i m i t : 18742) Memory : 10.3M CPU: 1min 42.217 s CGroup : / system . s l i c e / geoclue . s e r v i c e 2645 / usr / l i b e x e c / geoclue

slide-14
SLIDE 14

How can I make my project more environmentally friendly? 14

Measuring marginal costs on user systems: kernel power state statistics sudo powertop

slide-15
SLIDE 15

How can I make my project more environmentally friendly? 15

Measuring CI pipelines

Npipelines × (pipeline duration × 0.114 kW × 300 gCO2e/kW h + pipeline downloads × 17 gCO2e/GB)

slide-16
SLIDE 16

How can I make my project more environmentally friendly? 16

Measuring the other bits

GNOME-administered servers GNOME Foundation Conferences Hackfests

slide-17
SLIDE 17

How can I make my project more environmentally friendly? 17

Measuring the other bits We’re measuring GUADEC (thanks Bartłomiej!)

slide-18
SLIDE 18

How can I make my project more environmentally friendly? 18

Improving marginal costs on user systems

Where do we want to get to? Be used for less time Do less work; use less network Do work faster; use the network more efficiently Cache better

slide-19
SLIDE 19

How can I make my project more environmentally friendly? 19

Improving CI pipelines

Speed up your pipelines (use pre-built Docker images) Avoid downloads (use pre-built Docker images) Use shallow clones (see my blog)

slide-20
SLIDE 20

How can I make my project more environmentally friendly? 20

Improving the other bits More measuring to do: Foundation operations, and every time a hackfest is organised

slide-21
SLIDE 21

How can I make my project more environmentally friendly? 21

Pulling it all together

GNOME apps should be labelled with their embodied carbon cost: their share of the GNOME project and Foundation overheads, plus their costs for CI and hackfests, in each major release cycle

slide-22
SLIDE 22

How can I make my project more environmentally friendly? 22

Pulling it all together

GNOME apps should be labelled with their embodied carbon cost: their share of the GNOME project and Foundation overheads, plus their costs for CI and hackfests, in each major release cycle We don’t have all the data for that yet, but should collect it

slide-23
SLIDE 23

How can I make my project more environmentally friendly? 23

Pulling it all together

GNOME apps should be labelled with their embodied carbon cost: their share of the GNOME project and Foundation overheads, plus their costs for CI and hackfests, in each major release cycle We don’t have all the data for that yet, but should collect it Reduce those embodied costs (optimise CI, make hackfests carbon-neutral)

slide-24
SLIDE 24

How can I make my project more environmentally friendly? 24

Pulling it all together

GNOME apps should be labelled with their embodied carbon cost: their share of the GNOME project and Foundation overheads, plus their costs for CI and hackfests, in each major release cycle We don’t have all the data for that yet, but should collect it Reduce those embodied costs (optimise CI, make hackfests carbon-neutral) Reduce the marginal costs of your apps (optimise them, and don’t waste the user’s time)

slide-25
SLIDE 25

How can I make my project more environmentally friendly? 25

Open questions

  • 1. What is the power usage of a virtualised server?
  • 2. What is the carbon intensity of our server power supplies?
  • 3. Other life cycle analysis impacts (ozone, eutrophication, water consumption, etc.)
  • 4. How many users do we have??
  • 5. Can we collect better statistics about user systems?
slide-26
SLIDE 26

How can I make my project more environmentally friendly? 26

Miscellany

Slide source https://gitlab.com/pwithnall/ guadec-environmental-presentation-2020 IPCC SR15 summary https://www.ipcc.ch/sr15/chapter/spm/

Creative Commons Attribution-ShareAlike 4.0 International License Beamer theme: https://gitlab.gnome.org/GNOME/presentation-templates/tree/master/GUADEC/2020