<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><br class=""><div><blockquote type="cite" class=""><div class="">On Nov 23, 2018, at 5:26 PM, Dave Taht <<a href="mailto:dave@taht.net" class="">dave@taht.net</a>> wrote:</div><br class="Apple-interchange-newline"><div class=""><div class="">Pete Heist <<a href="mailto:pete@heistp.net" class="">pete@heistp.net</a>> writes:<br class=""><br class=""><blockquote type="cite" class="">Would it be right to say that the biggest opportunity for reducing<br class="">consumption is to avoid shaping, i.e. by adding BQL-like functionality<br class="">to all classes of device drivers<br class=""></blockquote><br class="">Shaping outbound with BQL's support for a dynamic interrupt would be<br class="">*free*. A few ethernet chips already have that. Basically you set a<br class="">register saying "you are really a 200Mbit interface, return a completion<br class="">interrupt after the equivalent of that amount of time has passed”.<br class=""></div></div></blockquote><div><br class=""></div><div>Ok, for Intel I see something called “Interrupt Rate Limiting” on the XL710 which sets the number of microseconds between interrupts (section 4.2 in <a href="https://www.intel.com/content/dam/www/public/us/en/documents/reference-guides/xl710-x710-performance-tuning-linux-guide.pdf" class="">https://www.intel.com/content/dam/www/public/us/en/documents/reference-guides/xl710-x710-performance-tuning-linux-guide.pdf</a>). I don’t think that’s exactly it though.</div><div><br class=""></div><div>I also wanted to suggest that something “BQL-like” be added to WiFi (I already saw discussion of that in make-wifi-fast), ADSL (I guess that’s mostly proprietary stuff though?) or other techs where it’s needed, so that we stop shaping whenever possible, which as Toke mentioned in his defense is really a workaround anyway. I feel guilty now shaping.</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">I can neither remember what chips can do this already, or the name of<br class="">the bql feature that does it, this morning.<br class=""><br class="">But it's a register you twiddle and a simple divider circuit.<br class=""></div></div></blockquote><div><br class=""></div><div>It sounds like there won’t always be fine-grained control over the rate.</div><br class=""><blockquote type="cite" class=""><div class=""><div class="">But outbound is not the problem for us from a heat generation standpoint…</div></div></blockquote><div><br class=""></div><div>Actually, why is inbound shaping that much harder on the CPU than outbound?</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">and/or by deploying congestion control globally that avoids the need for it?<br class=""></blockquote><br class="">I think it would be interesting to compare energy per byte successfully<br class="">delivered across various technologies. Driving fiber lines is pretty<br class="">high energy, though, and I think (without a back of envelope handy),<br class="">that that would be far more expensive than shaping currently is.<br class=""><br class="">still, adding 6 C to everybody's home router to shape inbound under<br class="">heavy load is pretty costly both in energy and reduced service life.<br class=""></div></div></blockquote><div><br class=""></div><div>I’m intrigued, and care about this topic. A few watts on millions of devices might at least make some difference. Analyzing where we stand in terms of energy per byte for different techs, and also what shaping does to this, might be a place to start.</div><br class=""><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">Other ideas: move queue management into hardware<br class=""></blockquote><br class="">I have increasingly high hopes for P4 and other forms of hardware to<br class="">finally do shaping and queue management right.<br class=""><br class=""><a href="https://github.com/ralfkundel/p4-codel/issues/2" class="">https://github.com/ralfkundel/p4-codel/issues/2</a><br class=""><br class="">Back in the day, I was a huge fan of async logic, which I first<br class="">encountered via caltech's cpu and later the amulet.<br class=""><br class="">https://en.wikipedia.org/wiki/Asynchronous_circuit#Asynchronous_CPU<br class=""><br class="">This reduces power consumption enormously.<br class=""></div></div></blockquote><div><br class=""></div><div>There are things that make so much sense as to seem that they must eventually happen, and this is one of those things.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div class=""><blockquote type="cite" class="">power network<br class="">equipment with renewables, or just use the Internet less. :)<br class=""></blockquote><br class="">I am glad to see more of the former happening. A recent data center<br class="">design in singapore basically needed it's own nuclear power plant.<br class=""></div></div></blockquote><div><br class=""></div><div>At least it doesn’t emit CO2. :) I’m in the process of trying to make a low-cost solar/battery setup for my home equipment. It seems that a system that works ~100% of the time can be much more expensive than one that works ~95% of the time, especially in central Europe’s winters where cloudy streaks can last weeks, so I’m probably accepting grid as a backup.</div><div><br class=""></div><blockquote type="cite" class=""><div class=""><div class="">In my case I've always wanted the computing to take place under the<br class="">users fingers, I do not like the centralization trend we are in today at<br class="">all. I like that apple seems to be leading the way to be putting all<br class="">these cool new AI tools in your own hands.<br class=""><br class="">As for the latter... I'm using browsers less now (emacs rocks), and<br class="">seem to be getting more done.<br class=""></div></div></blockquote><div><br class=""></div><div>I’m with you, only ‘:s/emacs/vim/g’, but we won’t start that. :)</div></div><br class=""></body></html>