Fork me on GitHub
#onyx
<
2017-03-01
>
Travis01:03:29

@jasonbell, Curious on how your managing your jobs in Mesos ? Are you submitting them through marathon or some other means ?

lucasbradstreet01:03:43

@jasonbell happy to talk to you about your CPU load issue when you come back on

Travis01:03:10

@lucasbradstreet Is there docs on what is required to move to 0.10 ?

Travis01:03:44

ah, i new I saw it somewhere

lucasbradstreet01:03:00

Let me know if you hit any issues that aren’t described there.

Travis01:03:33

will do, doing some initial investigation to see what it would take for us.

Travis01:03:04

@lucasbradstreet Is there a chance of a local fs durable storage check pointing ?

lucasbradstreet01:03:42

You can set it to checkpoint in ZooKeeper if you aren't checkpointing a lot of data. I'm not very inclined to checkpoint to a local fs since it's not useful for multi node use and there's the ZooKeeper impl for testing

Travis01:03:42

gotcha, We have a use case were we are doing a single node ( kind of an internal process ). To reuse the process at much much less scale.

Travis01:03:17

Good idea or not is yet to be determined, lol

lucasbradstreet01:03:38

Mmm, I can see that it could be useful. I’d accept a PR. It wouldn’t be too hard to implement.

Travis01:03:53

cool, will take a look when i get time. Its definitely not a normal use case but trying to reuse our ingest that we have at scale to also use it in an appliance like setting for much smaller stuff.

lucasbradstreet01:03:06

Yeah, it’s nice to be able to scale up like that

jasonbell09:03:11

@camechis In regards to your mesos question, yes deploying through Marathon.

lucasbradstreet09:03:26

Good morning @jasonbell. I'm about to go to sleep but I have enough time for a few quick questions to narrow down your CPU load issue. Firstly, how many vpeers on each node are you using? How many cores does the machine have. How many tasks? And are you using any aggregates?

lucasbradstreet09:03:55

Also, was it was a lot faster / less load on 0.9.15?

lucasbradstreet09:03:31

If it was faster/less load on 0.9, one thing that jumps to mind is that your serialisation overhead might be higher because we don't currently allow short circuiting for messages between peers on the same mode

lucasbradstreet09:03:03

Since you're pushing large messages around that could easily be increasing overhead d

jasonbell09:03:13

@lucasbradstreet It was 8 tasks (in/out/functions) as in the input task was a Kafka topic with three partitions then there were three peers on the input.

jasonbell09:03:21

No aggregation, no windowing.

jasonbell09:03:02

The main thing to keep in mind is the deserialisation of the messages was to uncompress gzip files and then pass them on in the workflow for processing.

jasonbell09:03:38

So it was one docker peer with 12 vpeers and the throughput was okay during testing. Once the volume was ramped up we hit the memory/performance issues.

jasonbell09:03:12

Yesterday I went for one partition per peer so there are now three docker containers deployed, one per partition. That's calmed things down a lot.

jasonbell09:03:51

There's a few more things I'm going to alter this morning, taking my original heartbeat out as the Onyx 0.10 metric can now serve that (response 200 etc)

lucasbradstreet09:03:12

Interesting. Same number of nodes / cores? Just split up differently?

jasonbell09:03:22

But with the information you gave me on Aeron buffers and the calcuation rationale behind, that helped me an awful lot so thank you.

jasonbell09:03:34

Just split up differently

jasonbell09:03:17

To be honest from a node maintenance point of view I'm happier with that, at least marathon/mesos will redeploy the container if it dies while the other two keep going.

jasonbell09:03:30

I'll keep you posted of any interesting developments.

lucasbradstreet09:03:55

No worries on the buffer calculation rationale. It's our fault for not having it documented yet.

lucasbradstreet09:03:47

I'll do some testing at some point to make sure backpressuring kicks in nicely in the scenario you're describing. One thing you can do is increase the min and max idle times for the peers

lucasbradstreet09:03:05

That'll make the peers yield more when things are blocked (the code is written in a non blocking way, and we park the process for a bit when offers fail)

lucasbradstreet09:03:03

The defaults may be a bit aggressive for situations where number of peers != number of cores

jasonbell13:03:50

Just to confirm, in the run_peer.sh script $NPEERS is the number of virtual peers that are started up, not the actual peer per cpu count. That's the way I've already read it.

Travis13:03:13

Vpeers, I believe is correct

jasonbell13:03:19

thought so, but just had that niggling doubt in my mind so thought better to confirm than assume 🙂