[00:27:51] Krinkle had an idea of using perf, but I don't think it is possible without a kernel patch [00:28:39] I assumed the userspace perf tool was woken when there is a perf event, so that it can collect backtraces, but actually it is not [00:28:48] I've used xhprof/tree/experimental locally, it works fine as far as I can tell, for the purposes of debugging requests. [00:28:52] just as xhprof today. [00:29:25] and used by phacility as well. There is even a Phabricator plugin to view its data, similar to xhgui. [00:29:42] e.g. https://secure.phabricator.com/xhprof/profile/PHID-FILE-5kokchv7zlxjai43noht/ [00:30:16] but assuming ballpark performance is similar to hhvm xhprof, not usable for prod/sampling profiler. [00:31:02] tideways is a rewrite of xhprof, but it removed the sampling feature, but even when it had it, it was the same as xhprof_sample, which is still like 3x slowdown. [00:31:36] but for debug mode, using tideways instead of packaging xhprof/experimental would be fine. Haven't tried, but perf isn't an issue there. [00:32:00] the idea I have at the moment is to make a new thing similar to the lua profiler [00:34:03] Getting a patch in xhprof is very difficult indeed. https://secure.phabricator.com/D18726 [00:34:18] not the best example though [00:34:20] anyway [00:34:38] TimStarling: interesting :) - Wha about the idea you and Stas were talking about earlier though, or is that the same? [00:35:19] previously I was thinking about contributing to xhprof in order to make it be like the lua profiler [00:35:31] now I am thinking about making a whole new thing [00:35:44] * Krinkle remembers vaguely something about C/OS timer hooks and accept queues [00:35:49] since xhprof looks like it is not a net benefit [00:36:27] a simple PHP extension that just works, and does sampling profiles. I think that could become our most used OSS project to date (besides MW). [00:45:30] how about a zend_interrupt_function hook which collects stack traces, and a userspace "flush" callback which is called at request shutdown or when some criteria are met like 10s elapsed [00:46:08] like xenon except the data is pushed to the userspace, you don't have to use register_shutdown_function() [00:53:34] any suggestions for the name? [02:00:47] TimStarling: Well, we have the name arc-lamp (which relates to xenon) but I've currently started using that for our stack-ingestion and flame graph creation pipeline. Could be expanded to encompass this, though. e.g. part of the lamp in some way. [02:01:32] TimStarling: I spent some time last week creating another new perf-related name: fresnel, which I'm using for the front-end profiler in MW/ResourceLoader (relating to the theme of Lighthouse, used by GoogleChrome). [02:02:04] I'm sure there plenty of interesting names that haven't been taken yet in software relating to fire, light, and beacons of light. :P [02:03:47] maybe carbon, so we have carbon arc lamps and xenon arc lamps :) [02:04:02] "Carbon - A simple PHP API extension for DateTime." [02:04:05] nvm [02:05:10] element names are quite heavily used [02:05:31] Yeah, I got lucky with Fresnel. I was surprised it wasn't used anywhere yet. [02:08:42] HHVM is amusing me currently. We moved to it for speed (among other things) [02:08:48] Now it's a perf bottleneck for many things [02:09:17] I wasn't able to reproduce my earlier benchmarks showing PHP 7 being faster than HHVM [02:09:29] now for me PHP 7 is a bit slower, not sure why yet [02:12:01] excimer [02:13:25] I was reading last week about amazing work on aneutronic fusion by Heinrich Hora and others [02:13:41] * Krinkle reads about exciplex laser [02:13:46] the idea is to use a petawatt/picosecond laser pulse to accelerate a solid state density plasma block [02:14:12] KrF excimer lasers are able to produce such pulses [02:17:58] I like it. [02:18:04] The lifetime of an excimer is very short, on the order of nanoseconds. [02:18:10] That's a tall order. [03:03:23] we could also provide a JavaScript-style setTimeout() utility function [03:04:22] the handler could even throw exceptions to abort long-running functions, the exception would be propagated into whatever is interrupted [06:33:31] Krinkle: if you want to use an element name, I'd go with technetium [06:34:18] it's mainly used in medicine, where they inject it into the body and use the radiation to trace things like blood flow, which is not a bad metaphor for a profiler [06:34:38] and it's obscure enough that no project seems to be named after it [06:43:24] it's excimer already [06:44:08] https://phabricator.wikimedia.org/T205059 [15:35:37] 14:52:49 1) LBFactoryTest::testValidCovers [15:35:37] 14:52:49 PHPUnit\Framework\InvalidCoversTargetException: Trying to @cover or @use not existing method "LBFactory::getLocalDomainID". [15:38:36] namespace maybe? @covers tags need to be absolute [15:40:45] * @covers LBFactory::getLocalDomainID() [15:40:45] * @covers LBFactory::resolveDomainID() [15:40:48] Should they have ()? [15:40:52] * @covers MWLBFactory::getLBFactoryClass [15:41:25] That file is quite inconsistent [15:45:03] * Reedy tidies it up [15:45:33] () is optional and I think most places don't have it [16:27:10] cheers legoktm [16:27:13] https://gerrit.wikimedia.org/r/#/c/mediawiki/core/+/461840/6/tests/phpunit/includes/db/LBFactoryTest.php looks to have fixed it [16:28:45] Nice, I think we'll see a coverage increase too [16:54:44] I have never been at peace with "functionName()" vs "functionName". They both feel misleading in their own ways. [17:11:01] Reedy: 16:37:51 | includes/libs/rdbms/lbfactory/LBFactory.php | 05.41 | 57.01 | [17:11:04] Niceeee [18:11:51] Sweeet [18:12:16] legoktm: Merge the patch? ;D