cfbolz changed the topic of #pypy to: #pypy PyPy, the flexible snake https://pypy.org | IRC logs: https://quodlibet.duckdns.org/irc/pypy/latest.log.html#irc-end and https://libera.irclog.whitequark.org/pypy | Matti: I made a bit of progress, the tests now only segfault towards the end
epony has joined #pypy
jcea has quit [Ping timeout: 240 seconds]
jcea has joined #pypy
jcea has quit [Ping timeout: 240 seconds]
Atque has quit [Ping timeout: 258 seconds]
belm0 has joined #pypy
Atque has joined #pypy
<belm0> cfbolz: with the change "make locals use an instance dict", is it still necessary to remove calls to `locals()`?
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
belm0 has quit [Quit: Client closed]
belm0 has joined #pypy
<belm0> I confirmed that removing locals() / frame.f_locals() from trio eliminated the corresponding "force quasi-immut" aborts.  But app CPU use only improved slightly, still on the order of 2x slower.  The new problem is "trace too long" aborts.  I expect it's due to the async + tracing JIT issue I mentioned.  And a simple async app that does one
<belm0> thing (like http server benchmark or the websocket client / server) wouldn't exhibit this problem.
belm0 has quit [Quit: Client closed]
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
lazka has joined #pypy
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
<cfbolz> belm0: trace too long is not a problem any more, really
<cfbolz> How long are you running your benchmarks btw?
belm0 has joined #pypy
<belm0> maybe 20-30 seconds, the log gets rather long
<belm0> I mean 20-30 seconds for capturing a log.  When measuring performance, I run until it seems to reach steady state, perhaps a minute or less.
<belm0> I haven't heard the counterargument about why async + tracing JIT is expected to work fine.
<belm0> (work fine -> perform  fine)
<fijal> belm0: ok, what's your argument?
<fijal> why it should be bad
<fijal> I can probably write a bunch of async code that will be infinitely faster in pypy than in cpython
epony has quit [Ping timeout: 252 seconds]
<belm0> sure, a case where the async app is doing only one thing, like serving websocket, and almost all the coroutines are running the same function
epony has joined #pypy
<fijal> and do you mean specifically in python or async in principle?
<fijal> if you already know what example I will come up with, why are we having discussion in the first place? do you want to understand how pypy works or do you already know it's shit and you are just complaining?
<fijal> I'm largely saying "it's more complex than you think"
<belm0> That's a very constrained application case for async.  An async app can have 1000's of concurrent tasks, all running different functions, and ideally (for a near-realtime app) no code runs longer than a few hundred microseconds before yielding.
<fijal> are you digging deeper in an example that I have not written and you know it?
<belm0> it's not theory-- it's my application (which is top-level control of a robot, running CPython 3.8 and Trio)
<fijal> ok
<fijal> can you write an async example that you want to profile that does not involve trio?
<belm0> do you mean you'd like to find a specimen of a Python, open source, async, highly-concurrent app with a heterogenous workload? (that's not Trio?)
<belm0> hopefully there is something out there, but I don't know offhand
<fijal> no
<fijal> I mean that as far as I'm aware and I might be wrong, it looks like trio will be hard to optimize
<fijal> and it'll be hard to optimize for reasons that are unrelated to async and related to how trio is written
<belm0> today I'll try pyston on our app and see what happens.  But from the latest blog post, it sounds like pyston-full (which promises like 30% speedups) is being retired.  There will only be pyston-lite, which I'm not sure is much faster than Python 3.11.
<fijal> there are some things in python async which make it hard, but they're unrelated to method jits or tracing jits and related to how python implemented that
<fijal> belm0: anyway, it really does not seem like you particularly care what I have to say, good luck with pyston! I hope it works for you
<belm0> It's not what I think.  I appreciate the help I've had from pypy devs and others on the channel.
<belm0> cfbolz: I didn't understand this.  Do you mean the high trace-too-long abort counts and huge aborted traces seen in the logs aren't actually affecting the app performance?
<belm0> > trace too long is not a problem any more, really
<fijal> they affect the time it takes to warm up, but the stable performance should not deteriorate much because of trace too long aborts
<fijal> or at least it's less of a problem than it used to be
<cfbolz> belm0: how huge is huge?
<belm0> I looked at one aborted trace that was about 6,000 lines in the log.  I shouldn't say it was huge, because I don't know if that's relatively large.
<cfbolz> belm0: 6000 is the trace limit
<cfbolz> So that's what you would get, yes
Atque has quit [Remote host closed the connection]
Atque has joined #pypy
belm0 has quit [Quit: Client closed]
otisolsen70 has joined #pypy
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
<cfbolz> an experiment to switch CPython to a register VM
epony has quit [Remote host closed the connection]
epony has joined #pypy
epony has quit [Max SendQ exceeded]
epony has joined #pypy
<ronan> I guess faster-cpython killed the let's-fork-CPython-to-make-it-faster cottage industry
<fijal> "Download counts can be misleading, and in our case it seems like most of the downloads are driven by a single project’s CI system, but we think the difference is still quite meaningful."
<fijal> what is pyston-light?
<fijal> I'm too lazy to look it up I guess
<ronan> pyston-lite is some of their JIT code repackaged as a psyco-like CPython extension
jcea has joined #pypy
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
epony has quit [Remote host closed the connection]
epony has joined #pypy
derpydoo has joined #pypy
epony has quit [Ping timeout: 252 seconds]
epony has joined #pypy
derpydoo has quit [Ping timeout: 276 seconds]
epony has quit [Remote host closed the connection]
<cfbolz> dum, dum dum, another one bites the dust
derpydoo has joined #pypy
derpydoo has quit [Ping timeout: 272 seconds]
Atque has left #pypy [#pypy]
derpydoo has joined #pypy
<fijal> cfbolz: no, common, they're the new psyco
lesshaste has joined #pypy
<lesshaste> hi
xcm has quit [Read error: Connection reset by peer]
xcm_ has joined #pypy
derpydooo has joined #pypy
derpydoo has quit [Ping timeout: 276 seconds]
derpydooo has quit [Quit: derpydooo]
ellemoeiselleva has joined #pypy
ellemoeiselleva has quit [Quit: Leaving]
jcea has quit [Ping timeout: 246 seconds]
lesshaste has quit [Read error: Connection reset by peer]
lesshaste has joined #pypy
otisolsen70 has quit [Quit: Leaving]
lesshaste has quit [Remote host closed the connection]
leshaste has joined #pypy