<div>Hi Vans,</div><div><br></div><div>I first found "tc" and after bit of thinking what I would like to achieve is much more simpler.</div><div><br></div><div>Control in/out TCP traffic to a backend server through an Erlang proxy. </div><div><br></div><div>Thank you for the links.</div><div><br></div><div>/Frank</div><div><br></div><div><br><div class="gmail_quote"><div>Le dim. 1 janv. 2017 à 18:20, Vans S <<a href="mailto:vans_163@yahoo.com">vans_163@yahoo.com</a>> wrote :<br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">This is more difficult then it appears. The standard way is to use cgroups or window quotas (per user/process).<br class="gmail_msg"><br><br class="gmail_msg"><br>The other way is to throttle at the interface level,<br class="gmail_msg"><br><a href="https://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/" rel="noreferrer" class="gmail_msg" target="_blank">https://www.cyberciti.biz/faq/linux-traffic-shaping-using-tc-to-control-http-traffic/</a>.<br class="gmail_msg"><br><br class="gmail_msg"><br>Yet another way is to use virtualization and set quotas on the container/vm.<br class="gmail_msg"><br><br class="gmail_msg"><br>Yet another way is to mark the packets coming from your process so pf/iptables/tc/other can traffic shape it.<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>Probably the most straightforward way is to simply count every call to send/recv in Erlang itself and count the amount of bytes sent/recv then do math.<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>I would probably go for the cgroups or virtualization approach personally.<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>On Sunday, January 1, 2017 11:30 AM, Frank Muller <<a href="mailto:frank.muller.erl@gmail.com" class="gmail_msg" target="_blank">frank.muller.erl@gmail.com</a>> wrote:<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>Thank you for the link Jesper.<br class="gmail_msg"><br><br class="gmail_msg"><br>Actually, any TCP bandwidth limiting (upload, download) code will make it.<br class="gmail_msg"><br><br class="gmail_msg"><br>I would like to learn how to implement such features in practice.<br class="gmail_msg"><br><br class="gmail_msg"><br>/Frank<br class="gmail_msg"><br><br class="gmail_msg"><br><br class="gmail_msg"><br>Le dim. 1 janv. 2017 à 14:42, Jesper Louis Andersen <<a href="mailto:jesper.louis.andersen@gmail.com" class="gmail_msg" target="_blank">jesper.louis.andersen@gmail.com</a>> a écrit :<br class="gmail_msg"><br><br class="gmail_msg"><br>See <a href="https://github.com/jlouis/rlimit" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/jlouis/rlimit</a> but mind you, there is an issue as well: <a href="https://github.com/jlouis/rlimit/issues/2" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/jlouis/rlimit/issues/2</a> :)<br class="gmail_msg"><br>><br class="gmail_msg"><br>>On Sat, Dec 31, 2016 at 9:57 AM Frank Muller <<a href="mailto:frank.muller.erl@gmail.com" class="gmail_msg" target="_blank">frank.muller.erl@gmail.com</a>> wrote:<br class="gmail_msg"><br>><br class="gmail_msg"><br>>Hi guys,<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>I stumbled across trickle (<a href="https://github.com/mariusae/trickle" rel="noreferrer" class="gmail_msg" target="_blank">https://github.com/mariusae/trickle</a>), a user-land application bandwidth shaper.<br class="gmail_msg"><br>>>A very useful small piece of software as explained here:<br class="gmail_msg"><br>>><a href="http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trickle-in-linux/" rel="noreferrer" class="gmail_msg" target="_blank">http://www.tecmint.com/manage-and-limit-downloadupload-bandwidth-with-trickle-in-linux/</a><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>It relies on libevent (<a href="http://libevent.org/" rel="noreferrer" class="gmail_msg" target="_blank">http://libevent.org/</a>), and can be installed vi apt-get or yum.<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>I’m wondering if one can create a trickle equivalent in Erlang (+NIF or whatever)?<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>Feedbacks very appreciated (links to equivalent apps in Erlang, implementation ideas, etc).<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>Thank you and happy new year.<br class="gmail_msg"><br>>>/Frank<br class="gmail_msg"><br>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>_______________________________________________<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>>erlang-questions mailing list<br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><a href="mailto:erlang-questions@erlang.org" class="gmail_msg" target="_blank">erlang-questions@erlang.org</a><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" class="gmail_msg" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>>><br class="gmail_msg"><br>><br class="gmail_msg"><br>><br class="gmail_msg"><br><br class="gmail_msg"><br>_______________________________________________<br class="gmail_msg"><br>erlang-questions mailing list<br class="gmail_msg"><br><a href="mailto:erlang-questions@erlang.org" class="gmail_msg" target="_blank">erlang-questions@erlang.org</a><br class="gmail_msg"><br><a href="http://erlang.org/mailman/listinfo/erlang-questions" rel="noreferrer" class="gmail_msg" target="_blank">http://erlang.org/mailman/listinfo/erlang-questions</a><br class="gmail_msg"><br></blockquote></div></div>