-
Notifications
You must be signed in to change notification settings - Fork 76
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Added a Haskell server [in progress] #14
Conversation
Direct linking is a compiler feature that is particularly useful for AOT-compiled server programs. It removes some of the dynamicity of Clojure (late dereferencing via vars) in favor of direct static calls in the compiled code. This generally results in JVM bytecode that is more amenable to JIT optimization by the JVM.
amended cabal file
The Haskell server peaked at 1.28 gb of memory used based on the eyeball-htop method suggested. |
The response time spread seems minimal, have you tuned GC in any way to achieve this result? Weird not seeing pauses affect your 95th percentile. |
@farnoy I did nuh-zink. What you see (in the diff) is what you get. Just the |
hi @bitemyapp, you might want to split the fix for clojure and the fix for cpp into separate PR's so hashrocket can more easily judge this one on its merit |
Doesn't Control.Concurrent.Broadcast drop messages (i.e. it's not really a channel)? I think unagi-chan would be better here. |
`broadcast` goes to all clients, `broadcastResult` only back to the sender.
It does indeed drop messages. After adding received message counting to websocket-bench(zyla@b4c7104) and a minor fix in the haskell server (zyla@0c329a6), the results are:
Here |
haskell: Follow websocket-bench protocol
@tinco it's not included, just a rebase with one too many steps back. |
Kicking around the unagi-chan variant @sgraf812 PR'd, definitely don't merge this for now, original version I wrote was not correct! |
parse into Value once, not twice leave what Graf did in
@bitemyapp It's a shame you removed original PR comment - future readers will be lost. |
@tumdum well, people were getting nasty about it on Reddit, so I figured I'd amend it to shift focus to the retraction and what we were doing to fix it. I wasn't going to leave a (visually prominent) screenshot of erroneous results up because are apt to see the screenshot and ignore the text. Currently I'm getting weird interactions between the client and server and trying to figure out what's going on. |
Not sure if this is still in progress or how it relates to the other Haskell PR, but the |
There hasn't been any activity on this PR for a while, and we have a Haskell server merged now. So I'm going to close this PR. Feel free to reopen if there are any further developments. |
@jackc 👍 |
I ran the client and server on me own machine, think it would unbound it a bit if they were separated like in your setup.
I got, uh, pretty good results.This benchmark with Tsung is roughly what I expected in terms of results modulo hardware differences, which is why I wasn't that surprised when I saw the initial results.
Retracted numbers as I cannot reproduce with the unagi-chan variant.
So far it looks like a websockets implementation issue, but I'm not yet certain why this surfaced with unagi-chan and not
Broadcast
. Still digging in.