<div dir="ltr">Forgot to clarify, I setup both projects with cabal using GHC 7.10 with Stackage nightly from 5/6/15 (per the README's), running under Ubuntu 14.04.<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, May 7, 2015 at 5:12 PM, Ben Bangert <span dir="ltr"><<a href="mailto:ben@groovie.org" target="_blank">ben@groovie.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr"><div><div><div><div><div><div><div>I'm currently evaluating memory overhead for a variety of simple Websocket based echo server to get a gauge of minimal memory penalty per connection along with SSL overhead per connection.<br><br></div>I've created two websocket servers in Haskell:<br><a href="https://github.com/bbangert/ssl-ram-testing/tree/master/Haskell" target="_blank">https://github.com/bbangert/ssl-ram-testing/tree/master/Haskell</a><br><br></div>One using Yesod + jaspers Websockets lib, the other with Yesod + Mishael Snoyman's native websocket lib. I was curious what options I might be missing that would ensure a more efficient use of memory, at the moment the non-SSL seems to use about 48kb per connection, while using Haskell's TLS via warp-tls introduces a huge amount of overhead (along with odd handshake issues).<br><br></div>Here's what my results look like:<br>No SSL<br>Program started.<br>Tester started.<br>Tester finished connecting.<br>Waiting: 360  Last Memory Increase: 2           <br>WARNING: Program hasn't stopped increasing.<br>Started with: 2633728<br>Ended with: 50896896<br>kB per connection: 47.13<br><br><br>SSL<br>Program started.<br>Tester started.<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>yesod-customws-tls: HandshakeFailed (Error_Protocol ("bad record mac",True,BadRecordMac))<br>WARNING: Failed to connect all clients<br>Tester finished connecting.<br>Waiting: 360  Last Memory Increase: 4           <br>WARNING: Program hasn't stopped increasing.<br>Started with: 3170304<br>Ended with: 454221824<br>kB per connection: 444.03<br><br>SSL Overhead per Conn: 396.90<br><br></div>I wait up to 6 minutes for memory to level out, it never does with or without SSL. Is this expected behavior? If not, what options am I missing?<br><br></div>The ssl-ram-testing repo includes full directions on how to reproduce this and run this test.<br><br></div>Cheers,<br></div>Ben<br></div>
</blockquote></div><br></div>