Thanks for coming so late. I'm Florian Kez. I work for Mozilla as a performance engineer.
You might have been here last year when I was talking about the work I do. So as a performance
engineer, my work is to understand how much Firefox uses power and what we can do to reduce
it. So I was explaining last year how we developed power profiling tooling. That was the cover slide.
For example, I was explaining that we have power profiling tools that let us understand
how much power is used by things so small as just blinking the cursor in the address bar.
So this is what I was presenting last year. And if you want to hear more on this topic,
I will be doing a similar presentation updated and extended tomorrow in the main track. So today,
I will be sharing a different story. It will be more a story, actually, because it's late and I want
this presentation to be easy to follow, maybe a bit entertaining if I can. So first a story about
why I worked on power profiling the entire house and then technical details and then lots of examples
because those are the most interesting. So the story. So there was first time in February and in
April, we had a new member in our family that I was very happy to welcome and that completely
changed our life, of course. Two days before she was born, I installed this on the wall. One of the
reasons why I installed this is solar panels, it's not obvious. I wanted most of her energy used to be
renewable. And I tried before to have solar panels on the roof of our house and it turned out to be
extremely difficult, which means we failed to get around those. Reasons were mostly there were chimneys
on the south side of the house that were making massive shadows on the roof. Lots of other issues
with the roof. Basically, all the companies who came, they never gave us a code. So we couldn't get
panels on the roof. So install this and I was wondering, can this power of a bottle warmer that
we will use for the milk we give to the baby? I work from home. I work on energy efficiency all
the time. Will this power my home office? So I had questions and it answers. So how could I answer
those questions? I installed the power meter that you see here inside the electric switchboard of the
house. So it's communicating with RFI, I'm measuring three different things. The link with the grid.
So seeing if we are importing or exporting electricity. It's measuring specifically the solar
panels I had put on the wall. And it's also measuring my home office. So that I could answer the
questions. Of course, I very quickly came up with more questions. So I was also wondering about the
washing machine, the freezer, and a few other things in the house. So this is what the thing
quickly looked like. So a bunch of things in here. I made the thing in the first place so I could
make a mess of it if I wanted. So now we are measuring also the link to upstairs because there's a
second panel upstairs. The freezer, the boiler, the washing machine, those kind of things. And also,
I needed to answer the questions. So we put a smart plug on the bottle warmer to be able to figure
out what was going on there. So now let's go into technical details. What am I doing over all this?
How can I get relevant information? So first I need to correct and start the data. I have a
constraint. I have nothing in the cloud. Because it's very personal, sensitive data. All the
parameters are connected through Wi-Fi. But with parental control, they have no internet access.
They all send data through MQTT. They send one piece of data every second. And there's an Ubuntu
virtual machine somewhere in the house that hosts an MQTT server. And with trivial scripts, logs
everything to disk. So that part is pretty simple. Then second part, I need to visualize the data.
Because if I just have massive log files, I do nothing with it. And this is where the Firefox
provider part comes in. A tool I was very familiar with because the power profiling part I made
the previous year. I have on the Ubuntu virtual machine a trivial script that converts the data
from the files on disk to a JSON file the profiler can understand. And the profiles contain
mainly two things, power counters and markers. So this is what it looks like if you're not familiar
with a profiler UI. You might not be. I will explain very briefly. So there's a time axis here. The
top part here is what we call the timeline. Everything is against time. The values thing I
said I'm metering, you can see them here. You see the shape of the chart for each of those.
And markers, they are here. And they can give us more specific details about specific things that
the script thought was interesting. And you can see here that for example, so BIM is the brand of
the wall. You can see that typically produces more in the middle of the day. You can see that
when the cloud is less interesting, many other things will go into more details later about what
we see there. So one thing I wanted to mention here was the date, which is the most important, sorry,
the date is the most important thing here. We were three weeks in after we got the baby. And this is
what I spent most of my days doing. And actually most of the nights too. And how this works. Usually
when people get a baby, they say they have no time left. I actually had the exact opposite. I
ended up suddenly having plenty of spare time at night because she was waking up so often that we
couldn't sleep. So we were taking turns. And half of the night I was up. And she would wake up,
want to have some milk and then sleep a few minutes later. So I had plenty of hacking sessions
that were somewhere between 10 minutes and three hours. Unpredictable. But I had multiple weeks
of having those sessions at night, which was why the code is maybe a bit messy because I had to do
it in small chunks. But it worked pretty well. Otherwise I would have had no time to do any of
this hobby project on the side. Also the generous parental leave at Mozilla helped a lot because
that meant I had lots of those weeks where I could stay up at night and do those kind of things.
And then more seriously, generating a JSON file that the profiler can understand was really simple.
Maybe because I work with a profiler a lot, but still I think most people could get it done and
get something that works relatively quickly. And also I don't have to host any web UI or anything
because I can just generate URLs like this with the URL to where I generate the JSON file. And
that's all I have to handle. I don't have to take care about anything in the UI. Then there's the
stuff that didn't work as well. The profiler was made to profile Firefox. Typically we were having
profiling sessions over a few seconds. I accidentally had profiles that were an entire day. So stuff
didn't work so well in terms of units, for example. So I did put some good requests to add
minutes and then hours. And then a few weeks later, days also. Changing the units, if you remember
the screenshot I gave of profiling the cursor blinking in the address bar, we were talking about
milli-watt-hour, micro-watt-hour. I wanted to see kilowatt-hours because numbers with many zeros
were not so fun. Performance also, showing a profile that contains data for an entire day. It
was not that bad, but it took maybe five seconds to display. I fixed it. And another thing that was
a lot more important when profiling the house and that is completely irrelevant when profiling
Firefox is knowing when something happened. In Firefox, typically we want to know how long
something took. Here I mostly wanted to know at which time of the day something happened when we
were starting to consume more power. So I also had to tweak that a little bit. It's also nicer when
using the Firefox use case, but it was a lot more important for profiling the house. Colors,
but it was just nicer. Everything was gray in terms of power in Firefox because there were a few
attracts. Now let's go into examples. Doing laundry. Washing machine dryer. So washing,
it consumes a lot of power twice. And this is most likely when heating the water. And then there's
what?
Okay. Whatever. I also wondered why it's doing it twice here. I think I saw it doing it
new once a few times. So it depends on the program. Actually, I would like to profile the values programs.
And if we zoom into this part that looks interesting, but we don't see because of a big thing here,
we see there are lots of patterns here that are probably good enough to figure out what the
machine was actually doing. And then the dryer, and it turns out it uses less power than the washing,
even though it takes longer. And this is probably because we took the most efficient dryer we could
find with a heat pump. And I also profiled my mother's dryer and it uses seven times more power than
mine. Typical day at the office, home office. And this is why I don't want this data to be in the
cloud. And I don't want my manager to have access to this data. We can say exactly at which second
I return to my desk throughout the entire day. And you can see that there are typical days like
this with small breaks in the middle. You can see the shape here is different. And then there are
days like this one. And the main difference here is when you see that it's high first and then
decreases, it means my battery was not full. So that means I probably worked from somewhere else than
my office. So here, here and here, I clearly worked somewhere else from my office. And then the last
one is on Sunday. So on Sunday, the only thing that remains power down is the modem, which is also
useful for Wi-Fi and the rest of the house. But maybe before working, I should have started with
breakfast. So this is micro-oven from the 90s, generated from my grandmother. And two things
we typically do in the morning is unfreezing bread and heating milk. And I was surprised by the
patterns there. The surprise is I was thinking that when in the infreasing mode, we would use
significantly less power. And that's actually correct. But the problem is it's
heating at the maximum power for a few seconds, then nothing for a little while. And every 30
seconds, it's heating for seven seconds, which means that if I'm hoping to use solar panels,
and it's in the morning, and they are not at their peak production, I'm basically buying all the power
from the grid, even though the average power is only 300 watts. And that's the kind of stuff we
see when power profiling with a high rate sampling, but I would not see if I was looking at that
every hour. And heating milk is what you would expect, almost a rectangle.
So now, time for a quiz to ensure you are still awake. In your opinion, what uses most power here?
Is it the massive chest freezer we've got that's full of milk? Is it the internet modem? Who thinks
the freezer? Raise your hand. Who thinks the modem?
So let's provide it to figure out. So, of course, very different shape. The modem is using the
segment of power almost the entire day with very tiny variations. And the freezer, there's a spike
at the beginning for a few seconds. And then it's stable for a few minutes, and then stops
entirely, and then starts again. Modem, 27 watts all day long. It also runs the virtual machine that
does all of us power profiling. So the answer is you are all right. They used exactly the segment
of power during the entire day. So back to the initial question about warming the milk
for the baby. So there's this milk pump, and then there's the bottle warmer. How much do each of us
consume? You can just see the number. I don't think I'm going to read them out loud. Something that we
quickly realized when looking at those profiles that was interesting is we see the timing, same as
figuring out when I'm working or when I'm not working. And I'm not sure if you had a baby
recently and had this experience, but you have lots of constraints about how long you can keep
things. So milk that has just been pumped and kept at room temperature you can use for four hours.
If it has gone in the fridge and you are heating it, you can use it for two hours.
So to be able to know if the bottle of milk in front of you is usable, when suddenly the baby
wakes up and you don't know when it just slipped last time because you were not in charge of that
time, usually it's a mess. And we can make use of this data, and we did. And that's actually what we
used the power metering data the most for is figuring out if the bottle of milk in front of us is
usable. And we figured this out. The reason why we figured this out is only because we could see
on the chart that actually it's very easy to detect the pattern. So it's time for a summer break. We
visited my parents and they recently had those nice solar panels installed on the roof of their
kitchen and it came with a gateway that's sending the data to the manufacturer or the gateway who's
collecting a lot of data. I'm not too happy about that but it was not my decision. So it's sending
one data point every 15 minutes which is good enough to figure out how much electricity was
imported or exported on that day. Use this to figure out what you're actually doing with your
electricity. And I noticed during one night of taking care of a baby that actually we can get one
data point every second if we query a local HTTP API. So I did. Put a Raspberry Pi in there.
Of course we can get profiles. So now let's see what they look like. That's what I saw at my parents'
house and one thing quickly caught my attention. So it's a free-phase system because of a large heat
pump I will go into it later. This thing looks strange. There's high power use here and it's
throughout the day. And the only thing that could be using as much power is this thing.
And it's supposed to be using power of peak hours because the price of electricity is not the same
in France at night or during the day. And after investigating a little bit we realized that there
was this switch here that was in the wrong position that was forcing the thing to be on all the time.
So it was pouring on whenever someone was using water. And we changed the switch and now it's
eating only around midnight and then a little bit around 7 a.m. and then it stops the rest of the day.
And that probably saved quite a bit of money. I said there's a large heat pump so now we are no
longer in the summer. I forgot to say something. The heat pump here has a large accumulator also.
And when we look at the power use pattern we see the heat pump that's pumping and using a lot of
power on all the free phases six times a day. And then there's the circulator here that's
going throughout the day. So we actually can understand how things work. And we can see also
how the power from the solar panels was used. Back at home some magic happened. I said we couldn't
have solar panels on our roof but we had a baby which means that we returned home and after returning
home there was a midwife who came to visit to check everything was right. And on the car that she
used to visit us there were ads for company putting solar panels on roofs that was owned by her husband
who's very proud of figuring out solutions to all the desperate cases where there's nothing possible
and who came gave us a code that was very reasonable on a couple months later. The baby solved all
problems that we were not able to solve for two years. So now we have real solar panels on the roof
but that's enough about this part of the story. Fast forward December and it's time for another baby
picture. She's grown up quite a bit. She's really into trees. Whenever she's crying and we don't know
why we show her a tree and she's super happy. So we had to get her a nice Christmas tree for our
first Christmas. And it's time for another quiz. In what you see in this picture what's using the most
power. So obviously there's the Christmas tree here. The Christmas tree turns itself on at sunset
and turns off at midnight. Then you might not have seen but we have the solar panels here
and they produce power during the day. They use power during the night for some reason.
So what's using the most power in your opinion. Who thinks the Christmas tree?
Who thinks the solar panels? Okay let's provide it.
So the Christmas tree uses 10 watts for a few hours here and the solar panels about five
during the end of the day and the beginning of the next day. And if we look at the numbers
Christmas tree 64 solar panels at night 67. That was a surprise to me
but yeah you couldn't be surprised twice by my quiz I guess.
But they did produce a lot more power so it's still worth having them.
And I think we still have a minute or two so I have a few more things I can share.
I have more power matters that are funnier and the interesting thing about this one is it can give
me data at a 50 hertz something rate which is the frequency of the oscillating AC power.
And I forgot this profile at home on a computer that's not connected to the internet but the
profile was fun because we can see what happens whenever the rotation direction changes. We can
see that there's a break in power used for a few milliseconds and then it uses more power when the
motor restarts. So all those details we can see and expose with fast sampling and power profiling
and it's pretty nice to see. And then USB power meters those are interesting if you want to look
at the energy used by any random USB thing or anything that charges through USB. And there are
quite a few in this picture all of those are reverse engineered to make compatible with
profiler and that's part of the topic for another talk that I will be giving tomorrow
but this is kind of how I worked with those. So reverse engineering a bit and then putting
a load here USB light that I knew what it would look like. The code is in here if you want to play
with it. So I will explain why this is useful for profiling Firefox and Android and even
Firefox and laptops tomorrow in the main track. Now let's see the things that were not working so
well or that I still need to look into. All the profiles I shared were looking good. I selected
them. Some don't look that good. So this is a profile of a boiler. I said we profile the boiler
so this is just it's a gas boiler so it's not most of the energy used but still during winter it
uses a lot of electricity to just circulate water so that the hot water it's producing is going
through the house. And then the Wi-Fi is not so good. It's especially terrible in our house
because there's a lot of concrete with metal in it almost everywhere. Despite putting multiple
repeaters it's still not so great. And someday I still have missing data like this and profiles that
are almost garbage. And it could lead to incorrect conclusions because the shape here is just clearly
wrong. So if we can, wired network is probably better. It's not really possible to put those wires
exactly everywhere like on smart sockets or things like that. I think the best solution if I have
time would be to change the firmware in those devices for an open source one and ensure that they
store the data until they receive an act from the server that the data has been received and
include timestamps in the data. So probably a project from next time I have many nights
without sleep.
I would really like to clean up this code so that all of us could play with it easily.
It's not very complicated but if we don't duplicate it, that's much better. So the code for power
profiling with USB meters I cleaned up enough because it was part of my work and I put it in a
easily accessible repository. The code to do profiles that are nice from on-phase gateways
I would like to do soon. And the rest, it's a bit of a mess because it's a mix of my code and
configuration data with the same files because like you know 10 minute hacking sessions.
And I would also like to blog some of our profiles of appliances and devices that I tested because
I think there's quite a few surprises we could have when looking at devices. Some don't really
behave like we would expect. And as a conclusion I would say sampling at a high rate is useful to
understand how things work just because we are often curious. I definitely am. It's also useful
to find and fix bugs like the water header thing at my parents that was wasting a lot of power
on costing money. And if we want to optimize consumption from the power that's generated
based photovoltaic panels, it's better to have an idea of how much we will consume. Like especially
unfreezing bread like I was sharing is probably not a good candidate for using energy from solar
panels. And that's all I wanted to share for today. Thanks for your attention.
Could you match the power used by your workstation with the solar panels in the end?
Oh I forgot to say but I could totally use the power from the solar panels for my home office
because it was clearly enough and I'm mostly working during days. And I could actually decide that
when we have a lot of power from the solar panels maybe it's time to compile for your folks that
will use a lot more power. But actually the one thing that uses the most power as we have seen
in my profiles from the home office is whenever I decided to use the computer without being plugged
and then plug it back in because then it charges and that's where the power used is the biggest.
The other thing that contributes a lot of power use of my office is screens. I have two external
screens and surprisingly the 27 inches screen and the 20 inches screen they have almost the same
power use. So if I use only one I could turn off the second one and they will also save significant
power. The profiling your stuff is often called NILM non-intrusive load monitoring so if you go
and look up there there are databases you can contribute to. The end phase be careful if you're
running on version three and you're using production.jose and it all goes away and it's all behind a
power paywall and horrible don't upgrade. And things like water so microwaves yes are just on
off so those are hard to do so you should run them when it's sunny. And washing machines right
so normally washing machine is on heating the water at the beginning and then that's it you
know there's mechanical effort which you could see on yours. Dishwashers are usually at least two
because you get the main wash and then a hot rinse. So washing machine with two is weird.
So I'm not sure there was a question in this or if it was just comments but about the versioning
of the young phase gateway. The young phase gateway we've got at home is not collecting data about our
power use. The on-phase gateway we've got at home is not collecting data about our power use so I put
my own power meter behind it and the reported data about how much power is used by the on-phase
system at night is dramatically different and my parents profile on in mine because in my parents
profile is the data reported by the on-phase gateway and it's counting only the power used
by the micro inverters that are on the panel and it's around one watt and mine is also counting
the power used by the gateway itself and now we are on five.
So time's up thank you so much.
And you can see the presentation tomorrow if you want more details about Firefox for approfiling.
Thank you so much.