/srv/irclogs.ubuntu.com/2017/06/14/#juju-dev.txt

menn0babbageclunk: another easy one: https://github.com/juju/juju/pull/749900:45
babbageclunkmenn0: approved00:47
menn0babbageclunk: thanks. develop one on it's way.00:48
babbageclunkmenn0: I don't think you need that reviewed though.00:48
=== mup_ is now known as mup
menn0babbageclunk: true00:52
axwwallyworld: doing the sort/check in SetAPIHostPorts should be fine, we don't seem to care about the order in the worker, so shouldn't there either00:58
wallyworldaxw: excellent, thanks for checking01:44
babbageclunkmenn0: can you please review https://github.com/juju/juju/pull/7501?03:15
menn0will do03:15
babbageclunkthanks!03:15
* babbageclunk goes for a run, anyway03:16
babbageclunkjam: ping?05:11
jambabbageclunk: in standup will ping when done05:11
babbageclunkjam: cool cool05:11
babbageclunkmenn0: ping?05:12
menn0babbageclunk: otp05:12
* babbageclunk sulks05:12
jambabbageclunk: what's up05:40
jambabbageclunk: we have the same standup :)05:41
babbageclunkjam: yeah, sorry - forgot!05:42
babbageclunkjam: Here's my change to the status history pruning, if you want to take a look: https://github.com/juju/juju/pull/750105:43
jambabbageclunk: so my concern with the 'while true' stuff, is you probably aren't getting close to actually having 4GB of history05:44
jamand that's the point where we need to watch out for how it operates.05:44
jambabbageclunk: did you do any big scale testing to know that it performs decently ?05:44
babbageclunkjam: I tried it with 2,000,000 records in unit tests, but not any more than that.05:44
jamand/or analysis of how much memory we store, how long it takes to get the list of things to be deleted05:44
babbageclunkjam: with those it was getting through ~400k rows in each 15s chunk05:45
jambabbageclunk: where was this running?05:46
babbageclunkjam: but you're right, checking how long the initial query takes is something I'll do05:46
jambabbageclunk: yeah, one of the particular concerns is just the 'grab all the ids' never returning before getting killed05:47
babbageclunkon my nice fast laptop with ssd, so I'm not sure how it'll scale.05:47
jambabbageclunk: ah, I guess you are walking the iterator and deleting, right ?05:47
jamso it doesn't have to read all 2M before it starts removing stuff05:47
babbageclunkjam: *In theory* it should be streaming the query, but that's definitely something I should confirm for really sure.05:48
babbageclunkyup05:48
jambabbageclunk: I've seen collection.count() fail05:48
jamin some of the logs05:48
jamand *that* should be much cheaper05:48
babbageclunkjam: yeah, that bit's problematic anyway - the number we get back is only a rough estimate and we frequently exit the loop before deleting all of them (because the size drops below threshold).05:50
babbageclunkjam: maybe there's a more stats-y way to get a rough row count (since the scale is really the information we need)05:51
jambabbageclunk: so coll.Count() should just be reading the stats on the collection05:51
jamas long as we aren't doing query.Count()05:52
jambabbageclunk: and it may be that if something like Count() is failing, there just really isn't anything we can do05:52
babbageclunkjam: yeah, true05:52
jamcause we wouldn't be able to get useful work done05:52
jambabbageclunk: so *if* you're looking at this, is there any chance you could try a perf test of doing Bulk().Remove()*1000, vs coll.RemoveAll({_id: $in{1000}}) ?05:53
babbageclunkjam: sorry, I was a bit unclear - the count is probably exact but our calculation of how many rows need to be deleted is approximate.05:53
jambabbageclunk: no I understood that part, and I think its still worthwhile from a "ok, you've taken 10min, are you going to take another 30s, or another 3hrs"05:54
babbageclunkjam: Oh yes - I did that. The bulk call is a bit faster at a batch size of 1000.05:54
jambabbageclunk: k. I have a very strong feeling it is much slower on mongo 2.4 (cause it doesn't support actual pipelined operations, so mgo fakes it)05:54
jamwhich *may* impact us on Trusty, where I'm told we're still using 2.4, but I can live with that.05:55
babbageclunkjam: RemoveAll is faster with a batch size of 10000, but bulk doesn't support more than 100005:55
jambabbageclunk: do you have numbers?05:55
babbageclunkjam: It's easy for me to change back to using RemoveAll - it's all in one commit.05:55
jamas in 10% difference, 2x faster, ?05:55
babbageclunk25% faster05:55
jamRemoveAll(10k) is 25% faster than Bulk(1k)05:56
jam?05:56
babbageclunkyuo05:56
babbageclunkyup05:56
jambabbageclunk: and RemoveAll(1k) vs Bulk(1k) ?05:56
babbageclunkI was getting 400k / 15s block for bulk vs 490k / 15s for RemoveAll(10k)05:57
babbageclunkI can't remember the number for RemoveAll(1k) - there wasn't much difference between Bulk and RemoveAll05:57
* babbageclunk checks scrollback05:58
jambabbageclunk: surprisingly historicalStatusDoc also doesn't have any ,omitempty fields05:59
jambabbageclunk: can you create a bug against 2.3 about adding them?05:59
babbageclunkjam: ok. I'm only selecting ids in this case though, so hopefully that wouldn't change it.06:00
jamonly one I kind of care about is StatusData as it is very likely to be empty and thats just bytes on the docs we don't need.06:00
jambabbageclunk: not about anything you're doing06:00
babbageclunkok06:00
jambabbageclunk: its about "oh hey, this isn't correct"06:00
babbageclunksure :)06:00
babbageclunkIt's like when you lift a rock and see all the creepy crawlies06:00
jambabbageclunk: its a change that I'm not 100% comfortable just landing in a 2.2.* series, but also low hanging fruit for a 2.306:01
babbageclunkYeah, makes sense06:01
jambabbageclunk: every status history doc is at least 52 bytes long just from the keyword fields06:02
jamgiven we have Millions of them, we probably should also consider being more frugal06:02
jambabbageclunk: so just a general "we should re-evaluate the fields in statuses-history because we are being wasteful with size of a doc we have lots of"06:04
jambabbageclunk: my gut (and I'd like menn0 to have a say here), is to go with RemoveAll(10k), because there are fewer total moving parts, and it will do better on 2.4 anyway06:05
jambabbageclunk: the other thing to compare against is what is the total time when it was a single query?06:05
babbageclunkI guess we can't really shorten the stored field names at this point either.06:05
jamas in, RemoveAlL(, t < X) => 500k/15s average time06:05
jambabbageclunk: well that we can do with an upgrade step06:05
jam*could*06:06
wallyworldaxw: i'm confused. somethings use a *Macaroon. other times we pass around a [][]*Macaroon (in fact []macaroon.Slice). do you know if just storing a single macaroon for cmr auth will be sufficient?06:06
jambabbageclunk: or is RemoveAll(t < X) 1M/15s06:06
jambabbageclunk: do you have that number?06:06
jamI'm guessing it may still be worth it to give feedback and be making concrete progress06:06
babbageclunkNo, sorry, haven't tested that.06:06
jambabbageclunk: ok, I'd like you to do that comparison, just to have some information about whether we're making a big impact or not.06:07
babbageclunkWould be good to know how much the incremental processing is costing.06:07
babbageclunkOk, I'll compare to that.06:07
jambabbageclunk: my experience on Pruning is that Read is *way* cheaper that Remove06:07
jamthan06:07
jambabbageclunk: as in, PruneAll takes seconds to figure out what to do and minutes to remove them06:07
babbageclunkRight06:08
jambabbageclunk: but I'd like confirmation here06:08
jambabbageclunk: also, make sure that you're doing the prunes while the charms are firin06:08
jamfiring06:08
jamso that there are active inserts while we're removing06:08
babbageclunkYup06:08
babbageclunkjam: ok - I have to go help feed the kids before I get in trouble.06:09
babbageclunkjam: Thanks though - I'll compare those.06:10
jambabbageclunk: np, I approved the PR conditional on the testing06:10
babbageclunkjam: awesome06:10
axwwallyworld: sorry, was riding. uhm. IIRC, you pass around a collection if you'll need to discharge. I think in your case you only need to pass around one06:44
wallyworldyeah, that's all i was counting on doing06:45
menn0jam: did you want to discuss mgo/txn changes?08:58
jammenn0: indeed08:58
menn0jam: hangout?08:59
jammenn0: https://hangouts.google.com/hangouts/_/canonical.com/john-menno?authuser=109:00
menn0jam: sorry, having auth issues09:02
menn0bear with me09:02
jammenn0: np, I thought I was having the problems, hangouts doesn't like me all the time09:02
menn0jam: i'm in the hangout now09:03
jammenn0: I'm finally there, are you still connecting?09:14
menn0jam: i've been in it for a while09:14
jamaxw: reviewed your log buffering13:27
=== frankban|afk is now known as frankban
rick_hhml: ping23:57
hmlrich_h: hi23:59
hmlor rick_h even.  :-) hi23:59

Generated by irclog2html.py 2.7 by Marius Gedminas - find it at mg.pov.lt!