Page MenuHomePhabricator

PerformanceTag
ActivePublic

Watchers

  • This project does not have any watchers.
  • View All

Recent Activity

Apr 15 2020

epriestley closed T13507: Compress Conduit client requests as Resolved.

One possible improvement remains here: in streaming mode, HTTPSFuture will not "Accept-Encoding: gzip" and can not inflate responses. Today, this only applies to arc download.

Apr 15 2020, 6:58 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21125: Compress file downloads if the client sends "Accept-Encoding: gzip" and we guess the file might compress alright.
Apr 15 2020, 6:35 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21122: Disable automatic decoding of "Content-Encoding" responses during "Accept-Encoding" setup test.
Apr 15 2020, 12:28 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21121: Allow HTTPFuture callers to disable processing of "Content-Encoding" response headers.
Apr 15 2020, 12:16 PM · Performance, Conduit

Apr 14 2020

epriestley added a comment to T13507: Compress Conduit client requests.

There's also one minor related concern in PHI1638 that I want to take care of here, since it's adjacent.

Apr 14 2020, 11:52 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21120: In Conduit responses, assert that Phabricator supports a "gzip" capability.
Apr 14 2020, 11:47 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21119: If the Conduit server asserts it has the "gzip" capability, compress requests.
Apr 14 2020, 11:45 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21118: If the Conduit client supports gzip, make calls with "Accept-Encoding: gzip".
Apr 14 2020, 11:21 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21117: In "phutil_loggable_string()", encode every byte above 0x7F.
Apr 14 2020, 9:52 PM · Performance, Conduit
epriestley added a comment to T13507: Compress Conduit client requests.

In fairness, "SetInputFilter DEFLATE" is documented as uniquely opinionated, if you catch this box and read between the lines a little bit:

Apr 14 2020, 9:45 PM · Performance, Conduit
epriestley added a comment to T13507: Compress Conduit client requests.

A grand aventure in PHI1679 led to identifying the Apache "SetInputFilter DEFLATE" directive as a problem with implementing compression.

Apr 14 2020, 9:40 PM · Performance, Conduit
epriestley added a revision to T13507: Compress Conduit client requests: D21116: Add a setup warning to detect "SetInputFilter DEFLATE" and other "Content-Encoding" request mangling.
Apr 14 2020, 9:25 PM · Performance, Conduit

Apr 11 2020

epriestley closed T11968: Decide the fate of FutureGraph as Resolved.

"FutureGraph" is dead. Long live "HardpointEngine".

Apr 11 2020, 2:41 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley closed T11968: Decide the fate of FutureGraph, a subtask of T11954: Improve performance of Arcanist/Conduit/Diffusion, primarily through better caching, as Resolved.
Apr 11 2020, 2:41 PM · Performance, Diffusion, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21083: Remove "RefQuery" and all "HardpointLoader" code.
Apr 11 2020, 1:44 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21082: Reroute all RefQuery callers to HardpointEngine.
Apr 11 2020, 1:40 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Apr 10 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21080: Bring "pro" browse queries from modern hardpoint code.
Apr 10 2020, 2:51 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21079: Bring a "pro" WorkingCopyState ref to "master".
Apr 10 2020, 1:06 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

Generators can't "return" until PHP 7:

Apr 10 2020, 11:43 AM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21078: Introduce "arc inspect" and some of the new ref/hardpoint classes.
Apr 10 2020, 11:39 AM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Apr 9 2020

epriestley added a revision to T13507: Compress Conduit client requests: D21077: Remove the (hopefully) obsolete "post_max_size" check during startup.
Apr 9 2020, 8:27 PM · Performance, Conduit
epriestley added a comment to T13507: Compress Conduit client requests.

PHP has a setting called post_max_size. If a POST request is larger than this size, PHP does not populate $_POST or $_FILES.

Apr 9 2020, 8:22 PM · Performance, Conduit

Apr 8 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21075: Rename "getWorkingCopy()" to "getWorkingCopyIdentity()" in Arcanist.
Apr 8 2020, 7:37 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21074: Trivially update "arc branch/feature" and "arc browse" for Toolsets.
Apr 8 2020, 7:29 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T13507: Compress Conduit client requests: D21073: Compress requests from the Conduit client to Phabricator.
Apr 8 2020, 4:21 PM · Performance, Conduit
epriestley claimed T13507: Compress Conduit client requests.
Apr 8 2020, 3:58 PM · Performance, Conduit
epriestley triaged T13507: Compress Conduit client requests as Normal priority.
Apr 8 2020, 3:58 PM · Performance, Conduit
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21072: Remove onboard future bulk-resolution from ConduitEngine.
Apr 8 2020, 3:55 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21071: Add new "Hardpoint" classes to support request parallelization.
Apr 8 2020, 3:47 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21070: Update the "WorkingCopy" API and create a fallback "Filesystem" working copy.
Apr 8 2020, 3:35 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

XHPAST currently can't build an AST for $result = yield ..., even though this is a valid construct. This is probably a straightforward fix.

Apr 8 2020, 1:27 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Apr 5 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21058: Move Phage to FuturePool.
Apr 5 2020, 12:50 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Apr 3 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21054: Update some Phabricator behaviors for changes to Futures.
Apr 3 2020, 7:03 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21053: Introduce "FuturePool" to make it easier to manage an ongoing pool of futures.
Apr 3 2020, 6:56 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

XHPAST currently can't build an AST for $result = yield ..., even though this is a valid construct. This is probably a straightforward fix.

Apr 3 2020, 2:38 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Apr 1 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21046: Fix two issues with Future key selection inside FutureIterator.
Apr 1 2020, 5:33 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Feb 28 2020

epriestley added a comment to T11968: Decide the fate of FutureGraph.

I have some code which runs and looks plausible (i.e., not covered in piles of callback garbage), at least:

Feb 28 2020, 4:58 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Feb 27 2020

epriestley added a comment to T11968: Decide the fate of FutureGraph.

Here's an actual example of loadHardpoints($objects, $hardpoint):

Feb 27 2020, 5:21 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

In the specific case of the Hardpoints, we currently often have code which loads objects but doesn't do anything with them. For example, most Query classes use didFilterResults() to fill things-that-sure-look-like-hardpoints, but few do anything with the results.

Feb 27 2020, 3:30 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21038: Integrate "ServiceProfiler" into the base "Future".
Feb 27 2020, 2:53 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21036: Make "FutureIterator" queue management more formal.
Feb 27 2020, 2:13 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21035: Make "exception" on Future a private property.
Feb 27 2020, 12:17 AM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Feb 26 2020

epriestley added a revision to T11968: Decide the fate of FutureGraph: D21034: Make the "result" property on Future private.
Feb 26 2020, 8:30 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21033: Resolve all futures inside FutureIterator.
Feb 26 2020, 7:34 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21032: Remove the "preg_quote()" lint rule and update the "__CLASS__" lint rule.
Feb 26 2020, 4:59 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a revision to T11968: Decide the fate of FutureGraph: D21031: Remove the "timeout" parameter from "Future->resolve()".
Feb 26 2020, 4:39 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

The core idea in D5104 + D5105 is that $future->resolve() and id(new FutureIterator(array($future)))->next() (like, roughly) execute meaningfully different code paths.

Feb 26 2020, 4:29 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

Somewhere in experimental or wilds, I introduced ArcanistConduitEngine. This has some weird fake future stuff going on, so this is probably now ripe.

Feb 26 2020, 4:14 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist

Feb 13 2020

epriestley added a comment to T11968: Decide the fate of FutureGraph.

Probably require PHP 5.4 regardless.

Feb 13 2020, 1:29 PM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist
epriestley added a comment to T11968: Decide the fate of FutureGraph.

A problem in moving forward here is that we ultimately do very little complex data access in Phabricator, and what complex data access we do perform can often be faked. We likely have more use cases in Arcanist and provisioning code: API calls are slower, workflows are more parallel/interactive, and we can't just fake it all with AJAX.

Feb 13 2020, 3:59 AM · Diffusion, Performance, Conduit, Infrastructure, Restricted Project, Arcanist