Fork me on GitHub
#onyx
<
2016-12-13
>
yonatanel10:12:59

Which test-helper function tells the required number of peers? The link in the guide is broken

stephenmhopper14:12:41

@lucasbradstreet After spending some more time thinking about why I was hitting GC issues while trying to pump 41 million integers through Onyx using a lazy sequence, it occurred to me that although I was evaluating the sequence lazily, the whole thing was likely still available in memory in its entirety even after elements had been consumed. Is this accurate? If so, what's the best way around this?

gardnervickers14:12:18

@stephenmhopper: I'm pretty sure that the onyx seq plugin uses doseq which won't hold onto the seq head.

stephenmhopper14:12:04

So now I'm back to scratching my head

gardnervickers14:12:12

What do you have your batch size set to?

stephenmhopper14:12:42

Batch size is currently at 1000. Is that too big?

gardnervickers14:12:04

Should have asked how large the segments are first

yonatanel14:12:22

integer size?

stephenmhopper14:12:28

Each segment is something like {:n 100}

stephenmhopper14:12:36

So, they're small

yonatanel14:12:06

@stephenmhopper I'm curious because I've just read the production instructions, are you using G1GC?

stephenmhopper14:12:19

@yonatanel I'm using whatever the default is. I'm just doing local development in a REPL with the with-test-env setup, so I hadn't considered looking at the prod settings yet

yonatanel14:12:09

Can you share the code to reproduce this?

stephenmhopper14:12:20

I'll rerun with G1GC and see if I can reproduce the issue

gardnervickers14:12:11

Super small segment sizes are worst-case for not only messaging but for the GC. If you're trying to get a feel for performance, it's difficult to do so using the test environment because it differs so much from a multi-node setup.

stephenmhopper14:12:12

@gardnervickers Yeah, I figured that was the case which is why I'm not too worried about this whole thing. I mean, it managed to crank through 21 million messages locally in an acceptable time frame

gardnervickers14:12:55

That said I'm sure it can be tweaked to do what you want, it just might take some extra investigation considering the JVM on your local machine offers no extra resource margins.

gardnervickers14:12:43

The user guide offers some great tips here, especially in the Performance Tuning section http://www.onyxplatform.org/docs/user-guide/0.9.10-beta2/#performance-tuning

martinklepsch16:12:29

Hey 🙂 I'm working through learn-onyx — really well done stuff 👍 —and I'm a bit stuck at 4-2. 1) The text says I should use :lifecycle/before-task-start but in that lifecycle I don't have any visibility on the segments going through the system. Is it intended that I somehow inject the atom in a place where I can access it in the task fn? 2) all the core async lifecycles are missing, I just copied them for now because I think I need them but really I have no clue. If they're needed it seems slightly outside of the scope of the excercise?

michaeldrogalis17:12:56

@martinklepsch Hello! Point number 1 - yes, injecting the atom is the solution. You’re right with point 2, they are needed, and it probably is slightly out of scope. The intention is to have the learner add all the lifecycles themselves, but perhaps it’s a misdirection.

michaeldrogalis17:12:18

Just in case you need a look at the solutions, the answers are on the answers branch, too 🙂

martinklepsch17:12:33

ah right, forgot about the answers branch, ha!

michaeldrogalis17:12:34

@martinklepsch If you read the README at all you’re already beyond most people 🙂 Alex Miller was right when he said, if you want someone to read something, write it down multiple times.

lucasbradstreet17:12:27

Even exception messages aren’t usually enough 🙂

stephenmhopper18:12:01

Question regarding :flow/predicate. From the docs it looks like I can do things like this: :flow/predicate [:and :my.ns/female? :my.ns/athlete?]. Can I do something like this too?: :flow/predicate [:not :my.ns/female?]

stephenmhopper18:12:16

Cool. Thank you.