cfbolz changed the topic of #pypy to: PyPy, the flexible snake (IRC logs: https://botbot.me/freenode/pypy/ ) | use cffi for calling C | "the modern world where network packets and compiler optimizations are effectively hostile"
rokujyouhitoma has joined #pypy
tbodt has quit [Ping timeout: 268 seconds]
rokujyouhitoma has quit [Ping timeout: 255 seconds]
tbodt has joined #pypy
dan- has quit [Ping timeout: 240 seconds]
oberstet2 has joined #pypy
oberstet has quit [Ping timeout: 240 seconds]
asmeurer has joined #pypy
dan- has joined #pypy
dan- has joined #pypy
dan- has quit [Changing host]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
mat^2 has quit [Quit: Leaving]
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
marr has quit [Ping timeout: 268 seconds]
yuyichao has quit [Ping timeout: 246 seconds]
tbodt has quit [Read error: Connection reset by peer]
yuyichao has joined #pypy
tbodt has joined #pypy
tbodt has quit [Client Quit]
tbodt has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 268 seconds]
lritter_ has joined #pypy
lritter has quit [Ping timeout: 260 seconds]
ArneBab has joined #pypy
tbodt has quit [Read error: Connection reset by peer]
tbodt has joined #pypy
ArneBab_ has quit [Ping timeout: 248 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 260 seconds]
yuvipanda has joined #pypy
rokujyouhitoma has joined #pypy
<yuvipanda> heya! I've been working on scaling JupyterHub (https://github.com/jupyterhub/jupyterhub) from about 1k users to at least 5-10k active users.
<yuvipanda> it's a tornado application! I spent some time profiling and fixing low hanging fruit, and it feels like now I can try out pypi :)
<yuvipanda> err pypy
<yuvipanda> Profiling with pyflame showed we were spending significant time in a loop that was doing auth cookie validation, plus it's a general tornado app - and I saw some great benchmark numbers :)
<yuvipanda> I'll keep channel posted on how it goes! I'm using the 'sparky portable binaries', and running the 3.5 compatible version
rokujyouhitoma has quit [Ping timeout: 255 seconds]
<yuvipanda> preliminary results are exciting :) we know we've some race conditions we haven't chased down yet, but pypy seems fast enough that these races are being hit less often :)
_whitelogger has joined #pypy
<njs> yuvipanda: hey yuvi :-)
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
<yuvipanda> hey njs!
<yuvipanda> njs: If this is the njs who I think it is I sent you an email a while ago ;)
<yuvipanda> njs: didn't realize you were involved in pypy!
<njs> yuvipanda: uh... yeah, I was just thinking that
<njs> yuvipanda: well, I kibbitz and complain about things
<yuvipanda> :D
<yuvipanda> njs: so there's probably going to be an EdX data8 course with about 10k or more students, and so I've to scale JupyterHub up an order of magnitude or more :D
<yuvipanda> njs: so I've been in full on profiling mode to optimize the single hub case, and also doing work on sharding it out
<njs> yuvipanda: woo / uhoh
<yuvipanda> njs: yeah, and it starts in end of september soo....
<njs> yuvipanda: but you use kubernetes so it automatically scales right
<yuvipanda> njs: :P
forgottenone has joined #pypy
<yuvipanda> njs: yeah, we haven't had problems there yet. but the hub process loop is too busy - the singleuser servers can't connect to it to authenticate
<yuvipanda> since it's too busy spawning new stuff
<yuvipanda> njs: profiling also showed that our authentication related code is a CPU hotspot, which is never good in a tornado app
<yuvipanda> njs: I think https://github.com/jupyterhub/jupyterhub/blob/master/jupyterhub/utils.py#L175 needs to be replaced with something that calls into C
<njs> yuvipanda: uh
<njs> yuvipanda: that should be replaced by real crypto code
<yuvipanda> njs: yeah, I agree. bcrypt seems the ticket - I hadn't seen it before
<yuvipanda> seen it -> that code
<yuvipanda> njs: do you think you can leave a comment there? :D
<njs> yuvipanda: commented
<yuvipanda> ty, njs! I'm trying to use passlib to send a PR just now
<njs> yuvipanda: note that pypy is much happier with extension modules implemented using cffi than anything else
<njs> (dragging this slightly back towards the channel topic :-))
<yuvipanda> njs: right, so I could use the aragon cffi implementation
<yuvipanda> njs: I was surprised that pycurl just worked on pypy!
<yuvipanda> (even though I'm not using it in this particular implementation)
<yuvipanda> njs: I'm very new to pypy, so am still a bit unclear on your comment about moving it to a thread - will that help at all?
<yuvipanda> or rather, I am unsure right now on how the GIL works in PyPy
<yuvipanda> just the same, different in some ways, etc.. should read up
<yuvipanda> (not counting STM)
<njs> yuvipanda: recent pypy has gotten *much* better at handling arbitrary CPython extension modules (thanks to mattip and others); even numpy mostly Just Works now (though scipy etc. don't quite). But classic C extension modules have a lot of overhead the cffi eliminatees.
<njs> yuvipanda: basically pypy's GIL is just like cpython's
<yuvipanda> right. so if the implementation I have drops the GIL then threading is gonna gimme a boost, otherwise it's not going to
<njs> (the exact implementation is a little different, but you don't care about that. mostly it just means it avoids some weird scheduling issues that cpython can sometimes get into.)
<yuvipanda> right
<njs> I believe cffi always drops the GIL while calling into C
<yuvipanda> njs: btw, I also ran into https://github.com/kubernetes-client/python-base/issues/23 - very strange bug that I didn't run into with cpython
<yuvipanda> am not sure if it's related to pypy or the library.
<yuvipanda> njs: ooooh, cool!
<yuvipanda> njs: do you know why the py3.5 compatible implementation is considered beta? I couldn't find specifics on the site
<njs> yuvipanda: ...that kubernetes-client issue is very odd. Maybe something going wrong in X.509 parsing? the pypy 3.5 ssl module in particular is a lot of complicated new code that hasn't been tested much
<njs> (I guess this also answers your last question :-))
<yuvipanda> njs: haha :D yes, that's possible. it only shows up under heavy load tho - most of the requests succeed
<njs> it's definitely not a kubernetes-client issue. It looks like that corrupted string is being returned by the pypy ssl module's getpeercert() code
<yuvipanda> njs: right.
<yuvipanda> ooh, pypy is on bitbucket!
<njs> yuvipanda: you might want to try using urllib3.contrib.pyopenssl.inject_into_urllib3() to switch urllib3 to using pyopenssl instead of the default ssl and see if that helps
<yuvipanda> ugh, the login system won't let me log in :|
<yuvipanda> to bitbucket, that is. I think it is confused about my email based login and my google auth based login and won't let me in on either
<yuvipanda> njs: ah, ok! I'll try that.
<njs> hmm, you're using threads too... maybe there's some accidental global variable problem happening in the X.509 parser
<yuvipanda> yeah, that's possible. I've multiple threads that are using ssl all the time
<yuvipanda> njs: oh yeah, the second biggest CPU hotspot was ssl (with cpython). will pypy automatically help with that or should I explicitly switch it to pyopenssl?
<njs> yuvipanda: probably there is nothing to be done about ssl, it's all happening in openssl no matter what
<yuvipanda> njs: right.
<njs> yuvipanda: well, I guess you could do things like terminate the ssl in your frontend proxy or something
<yuvipanda> hmm
<yuvipanda> I could sidecar a localhost ssl terminating proxy
<njs> okay this is pretty suspicious
<njs> "X509v3_get_ext() retrieves extension loc from x. The returned extension is an internal pointer which must not be freed up by the application."
<yuvipanda> njs: do you think you can help me file a bug on pypy for this corruption? I can't get into bitbucket still :(
<njs> yuvipanda: what's your bitbucket username?
<yuvipanda> njs: yuvipanda
rokujyouhitoma has joined #pypy
<yuvipanda> thanks, njs! I've closed the bug in kubernetes-client
rokujyouhitoma has quit [Ping timeout: 248 seconds]
<njs> oh hah wtf is this
<yuvipanda> yay I found a PyPy bug! \o/
<yuvipanda> well, ran into one at leas t:)
<njs> yuvipanda: anyway yeah, IME the pypy 3.5 beta is really good: https://twitter.com/vorpalsmith/status/861703774720581632 .... but yeah you may run into this kind of thing :-)
<njs> basically it's beta because they just wrote like 3 releases worth of python features in a few months and you get to be the first person running them in production :-)
<yuvipanda> njs: I discovered that we used to use passlib but switched it to the custom implementation 3y ago becuase it was a big dependency. I guess that no longer is true because of wheels
<yuvipanda> njs: yeah, that's understandable and even acceptable :)
<yuvipanda> njs: haha, right :D
<yuvipanda> njs: looks like replacing the custom implementation with passlib is going to be a bit of work since we've to be backwards compatible...
<yuvipanda> njs: I'm guessing just switching it to run on a thread is already going to be useful since I assume hashlib will drop GIL... not sure if pypy's hashlib is in python or not
<njs> yuvipanda: I think their hashlib is using the same cffi openssl wrapper as their ssl module
* yuvipanda nods
rokujyouhitoma has joined #pypy
ronan has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
lritter_ has quit [Quit: Leaving]
<yuvipanda> am trying to use vmprof
<yuvipanda> and am running into:
<yuvipanda> could not load libunwind at runtime. error: libunwind.so: cannot open shared object file: No such file or directory
<yuvipanda> this is on latest pypy release ([PyPy 5.8.0-beta0 with GCC 6.3.0])
<yuvipanda> and with pip install vmprof inside a virtualenv created with pypy
<yuvipanda> ah, seems to be a red herring - I am getting the web URL
<yuvipanda> the webservice is awesome
gclawes has quit [Read error: Connection reset by peer]
<LarstiQ> yuvipanda: that's with the portable binaries right? What platform?
gclawes has joined #pypy
<yuvipanda> LarstiQ: linux (amd64)
<yuvipanda> Ubuntu 17.04
<yuvipanda> LarstiQ: and yep, with the portable binaries
<LarstiQ> hmm, not sure what the exact problem is then, maybe something for squeaky to look into
* yuvipanda nods
<LarstiQ> yuvipanda: iirc libunwind is for profiling into C frames, if you don't need that, no problem
* yuvipanda nods
<yuvipanda> yeah I don't care in this instance
arigato has joined #pypy
<kenaan> arigo py3.5 a92ebe04ee55 /lib_pypy/_cffi_ssl/_stdssl/certificate.py: Issue #2615 Don't use a static buffer. Corruption in a multithreaded environment!
<LarstiQ> good morning arigato :)
<arigato> hi
<yuvipanda> arigato: thanks for fixing the bug! I am probably going to be running load tests all week, so if you've a new binary I can try :)
<yuvipanda> I'm not set up to build pypy unfortunately, and my bitbucket login is in some weird state
<LarstiQ> yuvipanda: you can kick off a build on the buildbot, or wait for a nightly
<yuvipanda> ok! I'll wait for the nightly!
<yuvipanda> thank you for the quick fix!
raynold has joined #pypy
<arigato> yuvipanda: you don't actually need a new binary
<arigato> just updating the file "certificate.py" would be enough
<LarstiQ> ah right, lib_pypy
<yuvipanda> ah, I see. right
<yuvipanda> yeah, I think I can do that.
<yuvipanda> let me rebuild the image
<yuvipanda> got it! I'll run the test shortly
_main_ has joined #pypy
_main_ has quit [Read error: Connection reset by peer]
_main_ has joined #pypy
__main__ has quit [Read error: Connection reset by peer]
<yuvipanda> hmm I'm running into something else that I think is pypy related but not sure
_main_ has quit [Read error: Connection reset by peer]
<yuvipanda> or vmprof related. let me remove vmprof and see what happens
__main__ has joined #pypy
yuyichao has quit [Read error: Connection reset by peer]
<fijal> yuvipanda: maybe gc related?
<yuvipanda> fijal: it's possible! I'm very new to PyPy :)
<yuvipanda> I've never run into that sqlalchemy error before, and googling isn't very useful
<fijal> but I don't know
<yuvipanda> fijal: it went away if I took out vmprof
<fijal> uh
<fijal> ok
<fijal> that is very strange
<yuvipanda> yeah
<yuvipanda> and I wanna profile this code :|
<fijal> yeah....
rokujyouhitoma has joined #pypy
<fijal> how is the performance looking?
<yuvipanda> fijal: I haven't run a full run yet.
<yuvipanda> fijal: I ran into the ssl error only when I was simulating about 3k users
<yuvipanda> I just hit a 100 user run, and vmprof crapped out :(
<yuvipanda> so I'm turning it back on to see if it's 100% that
<fijal> there might be a race conditions
<yuvipanda> it's possible, am not sure why vmprof should trigger 'em tho
<yuvipanda> something became slow enough?
<yuvipanda> jupyterhub is quite racy :|
<fijal> vmprof does make things less predictable
<fijal> as in, the spread of potential options grows
<fijal> (as does pypy FYI)
<yuvipanda> right
<yuvipanda> fijal: this is worse, I turned vmprof back on and no errors this time
rokujyouhitoma has quit [Ping timeout: 240 seconds]
ronan has quit [Read error: Connection reset by peer]
<yuvipanda> huh, it just dumped output into stdout rather than upload it to vmprof.com
<yuvipanda> I guess it was over 100MB
ronan has joined #pypy
<fijal> we don't really have a good story for how to do real-time analysis
<fijal> we decided it's not worth the effort to do for people, since all the people who need it have money
<yuvipanda> haha
<yuvipanda> right
<yuvipanda> I was using pyflame before
<yuvipanda> but am guessing it won't support pypy :)
<fijal> it uses cprofile
<yuvipanda> I'm just going to dump it to a file and load it manually
<fijal> so while it works, it's full of lies
<fijal> also on cpython, but it's fuller of lies on pypy
<yuvipanda> fijal: pyflame? nope, it just uses ptrace and a bunch of magic
<yuvipanda> isn't a deterministic profiler, statistical one
<fijal> ah ok
<fijal> I thought it uses cprofile
<fijal> then yeah, would get you more or less what vmprof does
<fijal> or should do ;-)
<yuvipanda> fijal: nope. It uses ptrace and munges with python.h headers to figure out where the stack frames for threads are and uses that
<yuvipanda> pretty tied to cpython
<yuvipanda> but pretty good!
<fijal> right, but this is what vmprof does
<yuvipanda> right
<fijal> so you can use the API in pypy to do the same
<yuvipanda> right
<fijal> yuvipanda: we have to pick our fights and "can make money from" is one of the factors
* yuvipanda nods
<yuvipanda> I understand!
<yuvipanda> pyflame is from uber, so I bet they didn't even notice :)
<fijal> heh, exactly
<fijal> note that none of those companies would notice if they paid us to do those things either ;-)
<fijal> but those contracts are hard to get
<yuvipanda> yeah
<yuvipanda> right
<fijal> primary sponsor of vmprof has been jetbrains
<fijal> and they have their own way to analyze data
<yuvipanda> right
<yuvipanda> pycharm I guess
<fijal> yeah
<yuvipanda> fijal: vmprof dumps data to output only at process end time, right?
<fijal> yeah
<yuvipanda> ok
<fijal> there is no deep reason why :)
<fijal> I know people did hacks with vmprof.enable/vmprof.disable
<yuvipanda> yeah, it makes things a bit awkward with my current container setup
<yuvipanda> since I've to retain the container after it dies somewhow
<yuvipanda> *somehow
<yuvipanda> or mount a volume into it :D
<fijal> right, so what you can do you can do vmprof.enable on an event and then vmprof.disable
<fijal> and then do postprocessing and send it somewhere
<yuvipanda> right
<yuvipanda> I'm just going to hack my container setup instead tho ;)
asmeurer has quit [Quit: asmeurer]
<yuvipanda> fijal: huh, no, it seems to be streaming output if I use --output
<yuvipanda> which is great!
<yuvipanda> fijal: do you know if there's a way to upload a file to vmprof.com?
<yuvipanda> vmprof.upload!
<yuvipanda> cool! so most of our compute is blocking on some hash calculations that should be moved off thread, and on... logging
<yuvipanda> (assuming I'm reading this correctly)
<fijal> logging forces frames
yuyichao has joined #pypy
<yuvipanda> fijal: hmm, it's actually possibly worse - maybe our logging is calling into our... ORM?!
<yuvipanda> fijal: I see a call to get_current_user() in log
<yuvipanda> anyway, this is very useful! tyvm for the service!
<yuvipanda> fijal: I see that it says about 30% is JIT'd. is that a good %? bad %?
<fijal> how old is your pypy?
<yuvipanda> fijal: I got the most recent version that's portable binary
<fijal> how long did you run it for?
<yuvipanda> [PyPy 5.8.0-beta0 with GCC 6.3.0]
<yuvipanda> fijal: not very long! It was only a 100 user simulation, which is about 30s
<yuvipanda> I'm going to run a 1k user one now
<fijal> yeah the longer you run it the more it would jit
<fijal> (and the faster it would run)
<fijal> update seems like openssl call, so unclear you can make it faster
<fijal> (but I might be wrong)
<fijal> is this pypy3?
<fijal> yuvipanda:
<yuvipanda> fijal: right. I could possibly offload SSL processing to a sidecar container for that
<yuvipanda> fijal: yup!
<yuvipanda> Python 3.5.3 (a37ecfe5f142bc971a86d17305cc5d1d70abec64, Jun 08 2017, 19:43:54)
<yuvipanda> [PyPy 5.8.0-beta0 with GCC 6.3.0]
<yuvipanda> is full output of pypy version
<yuvipanda> we even found a bug in the ssl implementation :) https://bitbucket.org/pypy/pypy/issues/2615/this-looks-like-a-thread-safety-bug - I'm running a patched version with the file changed in it
<fijal> yeah it's ssl processing
<yuvipanda> yeah, so I might offload that to a go proxy next.
<fijal> we have utf8 speedups in mind too
<yuvipanda> nice!
<fijal> yuvipanda: let me know how the benchmarks go
<fijal> try to disable logging
<yuvipanda> fijal: shall do!
<yuvipanda> fijal: yeah, am running into unrelated issues rn, so trying to figure that out :)
<yuvipanda> ok, running a 1000 user test no
<yuvipanda> fijal: vmprof only samples the 'main thread' or is it 'currently running thread'?
<yuvipanda> unfortunately this one might go over 100MB
<fijal> currently running thread
<fijal> I can lift the limits tbh
<fijal> but not on a laptop now needs to wait couple h
vkirilichev has joined #pypy
antocuni has joined #pypy
<yuvipanda> fijal: that'd be great :)
<fijal> yuvipanda: let's see if I can do this from the gym computer
<fijal> plan_rich: ping, maybe you can do this
<yuvipanda> yeah, this one is 141M :)
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
<fijal> yuvipanda: I'll wait till I have a laptop so I can fix if I break things
<yuvipanda> fijal: yeah, understood! thank you :)
ronan has quit [Quit: Ex-Chat]
<yuvipanda> fijal: do you know approximately when that might be? am in the US West Coast and might go to bed soon :)
ronan has joined #pypy
<yuvipanda> no worries if it's too late :) am making another trace that I can stop before the limit
<fijal> Let me have a quick look
runciter has quit [Quit: ZNC 1.6.4 - http://znc.in]
marr has joined #pypy
<yuvipanda> fijal: I got a 99M profile! http://vmprof.com/#/82b60d7d-4bcb-4347-944b-7c59d97cbb7b
<yuvipanda> much better JIT numbers
<fijal> try now the bigger one
runciter has joined #pypy
<fijal> are you capturing the performance too?
<yuvipanda> fijal: yeah! I'm emitting those as JSON event streams from my stress tester
<yuvipanda> a bunch of folks are working on making this more realistic - using a poisson process to load it rather than my current '100 users start every minute, go!'
<fijal> so better/worse than cpy?
<yuvipanda> fijal: better!
<yuvipanda> very definitely
<yuvipanda> I don't know how much better yet exactly.
<fijal> so orm is the biggest issue
<fijal> we kinda struggle with orms
<yuvipanda> I see
<yuvipanda> fijal: for what reason?
<yuvipanda> this is just talking to an in-memory sqlite db btw
<yuvipanda> I haven't switched it out to pg yet
<fijal> because the way they're written makes it hard to optimize
<yuvipanda> (am running another 1000 users through the same process to see how that's like)
<yuvipanda> fijal: ah, right. Just the usual magic making JIT life harder story?
<fijal> you should really generate code instead of going through dynamic dispatch
<fijal> Yeah, also unpredictable etc
<yuvipanda> right
<fijal> you want assembler copy per call site
<yuvipanda> I can't change sqlalchemy tho unfortunately
<fijal> ya i understand
<fijal> jupyterhub is likely not flush with cash, but we can make you the online version of mprof
<fijal> vmprof
<fijal> that is continuous gathering
<yuvipanda> in production?
<yuvipanda> fijal: hmm I'm getting a 'connection aborted by peer' if I try to upload a > 100M file btw
<yuvipanda> doesn't even wait, happens immediately
<antocuni> yuvipanda: that's a false alarm
<antocuni> if you ignore it, it just works :(
<yuvipanda> antocuni: yeah, seems to!
<yuvipanda> arigato: btw, I can't repro the SSL exception now with your patched file
<arigato> good
antocuni has quit [Ping timeout: 248 seconds]
ronan has quit [Ping timeout: 255 seconds]
rokujyouhitoma has joined #pypy
<yuvipanda> alright, thanks all! I've a >500MB profile file I'll figure out what to do with tomorrow :) this has given us concrete steps to move forward :)
rokujyouhitoma has quit [Ping timeout: 255 seconds]
ronan has joined #pypy
arigato has quit [Quit: Leaving]
nimaje1 has joined #pypy
nimaje1 is now known as nimaje
nimaje is now known as Guest30794
forgottenone has quit [Quit: Konversation terminated!]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
<fijal> yuvipanda: :-)
forgottenone has joined #pypy
vkirilichev has quit [Remote host closed the connection]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 240 seconds]
vkirilichev has joined #pypy
vkirilichev has quit [Remote host closed the connection]
vkirilichev has joined #pypy
rmariano has joined #pypy
vkirilichev has quit [Remote host closed the connection]
antocuni has joined #pypy
marky1991 has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
antocuni has quit [Ping timeout: 268 seconds]
vkirilichev has joined #pypy
marky1991 has quit [Ping timeout: 276 seconds]
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 268 seconds]
vkirilichev has quit [Remote host closed the connection]
vkirilichev has joined #pypy
pilne has joined #pypy
raynold has quit [Quit: Connection closed for inactivity]
<plan_rich> double the limit? 200MB?
vkirilichev has quit [Remote host closed the connection]
<fijal> plan_rich: I put it to 1G for now
<plan_rich> ok :)
<plan_rich> oh, nginx has already 1002 MB limit (~2MB for header, 1000MB for the rest)
moei has joined #pypy
realtime has joined #pypy
<fijal> yeah changed it
thief has joined #pypy
rokujyouhitoma has joined #pypy
realtime has quit [Ping timeout: 268 seconds]
rokujyouhitoma has quit [Ping timeout: 260 seconds]
realtime has joined #pypy
realtime has quit [Remote host closed the connection]
thief has quit [Ping timeout: 255 seconds]
mattip has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
<plan_rich> vmprof global variable signal_handler_value has one bit (LSB) that indicates one should ignore signals and all other bits are counters how many threads entered the signal handler
<plan_rich> it can frequently occur on pypy that e.g. pypy_codemap_invalidate_set or some other functions called from the jit enable the signaling again after some one else has called vmprof_ignore_signals(1)
<plan_rich> can I turn the signal_handler_value into a counter that counts how often vmprof_ignore_signals is called?
asmeurer__ has joined #pypy
* plan_rich turns that into a counter for now
<plan_rich> well, no. I need another solution for that...
kipras`away is now known as kipras
asmeurer__ has quit [Quit: asmeurer__]
<mjacob> ronny: you implemented most of build bot test summary, right?
<fijal> I think armin did?
<mjacob> maybe? well, both of them should know which parts they implemented or not ;)
<ronny> mjacob: im not really involved - i tried to fix things a while back to make sense of pytest upgrades, but those efforts got undone
<mjacob> ronny: ah, i see
arigato has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 248 seconds]
<mjacob> the test fails if the output contains "ERROR" (which is sensible i guess)
<mjacob> now the question is what to do with the missing sha3_256 etc. hash implementations
<mjacob> implement them now or remove them from the list of "always supported" hash functions to get rid of the warnings / errors
tbodt has joined #pypy
arigato has quit [Ping timeout: 240 seconds]
vkirilichev has joined #pypy
rokujyouhitoma has joined #pypy
arigato has joined #pypy
rokujyouhitoma has quit [Ping timeout: 246 seconds]
yuyichao has quit [Read error: Connection reset by peer]
yuyichao has joined #pypy
arigato has quit [Ping timeout: 240 seconds]
TheAdversary has quit [Ping timeout: 248 seconds]
TheAdversary has joined #pypy
vkirilichev has quit [Remote host closed the connection]
TheAdversary has quit [Excess Flood]
TheAdversary has joined #pypy
rokujyouhitoma has joined #pypy
realtime has joined #pypy
rokujyouhitoma has quit [Ping timeout: 268 seconds]
arigato has joined #pypy
oberstet2 has quit [Ping timeout: 260 seconds]
tormoz has joined #pypy
insolfrac has joined #pypy
rokujyouhitoma has joined #pypy
ronan has quit [Ping timeout: 255 seconds]
rokujyouhitoma has quit [Ping timeout: 240 seconds]
ronan has joined #pypy
<mattip> just submitted another pull request to provide numpy UPDATEIFCOPY resolution without relying on refcount semantics
<mattip> this is the second try, maybe by the third I will get it right
<ronan> mattip: nice!
<ronan> mattip: I've been fighting leakchecking all day without much success
<mattip> ronan: bah. Do you know if this is untranslated only?
<ronan> well, it's just really just about tests
<ronan> there are some objects that legitimately stay alive, but I don't see a way to recognize them all
insolfrac has quit [Remote host closed the connection]
<ronan> specifically, things that get allocated when you call PyType_Ready on an extension type
<mattip> that should be relatively few objects, unless someone writes a class generator, correct?
<ronan> yes
<mattip> what worries me more is somehow np.ndarray(range(10000)) leaves lots of memory uncollected, and I cannot seem to write a test
<mattip> but all my attempts to convert array.c to reproduce it have failed so far. I thougth maybe leakchecker could help,
<mattip> it seems to be not the right direction
<ronan> well, maybe you could turn it into a cpyext test
<ronan> compiling all of numpy would be annoying, but is probably doable
<ronan> mattip: another idea: have you tried running your test under massif?
<mattip> numpy and pyinteractive, I got it working once https://gist.github.com/mattip/32fcd53ca8b44cefe25cb452a40f16d3
* mattip looking for massif
<ronan> mattip: it's an extension of valgrind, with a nice GUI for visualising allocated memory by origin
<ronan> the GUI is called massif-visualizer
<mattip> cool, thanks, probably would work better with a debug libpypy, at least with -g
<ronan> indeed
<pjenvey> yes
<ronan> debug numpy might be enough
<ronan> (we used it a lot at the last Leysin sprint)
forgottenone has quit [Ping timeout: 258 seconds]
tbodt has quit [Quit: My Mac has gone to sleep. ZZZzzz…]
rokujyouhitoma has joined #pypy
<ronan> mattip: I've looked at massif profiles a bit, and I don't see a leak, just a high steady state
rokujyouhitoma has quit [Ping timeout: 240 seconds]
<mattip> agreeed, it is simple to test it out but not very helpful so far
<mattip> with a debug pypy all the allocations seem 'reasonable', just never collected, even with many gc.collect() calls
* mattip trying with 0d18cd6d4afc, just for kicks
arigato has quit [Quit: Leaving]
asmeurer__ has joined #pypy
rmariano has quit [Ping timeout: 248 seconds]
marvin_ has quit [Remote host closed the connection]
marvin has joined #pypy
marvin is now known as Guest40313
<mattip> need to hack mtrand.c since it uses tp_dict
<mattip> maybe tomorrow
mattip has left #pypy ["bye"]
<yuvipanda> fijal: btw, I keep getting 'connection reset by peer' when trying to upload my 579M profile file
ronan has quit [Ping timeout: 255 seconds]
rokujyouhitoma has joined #pypy
asmeurer__ has quit [Quit: asmeurer__]
rokujyouhitoma has quit [Ping timeout: 240 seconds]
asmeurer has joined #pypy
<yuvipanda> the error I get is ConnectionResetError: [Errno 104] Connection reset by peer
asmeurer has quit [Quit: asmeurer]
asmeurer__ has joined #pypy
tbodt has joined #pypy
rokujyouhitoma has joined #pypy
rokujyouhitoma has quit [Ping timeout: 255 seconds]
gbutnaru has quit [Ping timeout: 276 seconds]
asmeurer_____ has joined #pypy
asmeurer__ has quit [Ping timeout: 268 seconds]
gbutnaru has joined #pypy