Summary:
Removing `http2::PriorityUpdate` parameters from parsing functions (`parseHeaders()`, `parseExHeaders()`, `parseHeadersImpl()`, `parseHeadersDecodeFrames()`, `parseHeadersCheckConcurrentStreams()`) in the H2 framer and codec.
Also renaming `parsePriorityCommon()` to `skipPriority()`, but this will be removed once we stop writing RFC 7540 priorities to the headers.
Reviewed By: hanidamlaj
Differential Revision: D72821246
fbshipit-source-id: 7292120aedeb6b6ed1be766c60ff2603f373315e
Summary:
add a flag `useProRateSoftIrq` to `CgroupResources`, and if set to true, calculate the pro-rate softIRQ cpu util and add it to cgroup cpu util.
The pro-rate softIRQ cpu util is calculated based on the cgroup sys cpu and host sys/softirq cpu, considering softirq is more proportional to sys cpu
```
cgroup softirq cpu = cgroup sys cpu * host softirq cpu / host sys cpu
```
---
## Why we want to add softirq util to cgroup util?
More context in [here](https://fb.workplace.com/groups/824443335270106/permalink/1336833844031050/) but TLDR softirq is running in kernel and is not counted as cgroup util. For services like revproxy/fwdproxy, we have high softirq util, which is not counted in cgroup util, causing cgroup util is much lower than the actual usage. **And sometimes host is overloaded while cgroup cpu is still fine.**
Before container team finalizes the solution for this issue. As we already have a lot jobs tracking cgroup stats (stacking), let's add a pro-rate softirq to cgroup cpu util as a short term mitigation for this issue.
----
For now I only make this change enabled with
- a JK `revproxy/knobs:use_pro_rate_softirq` (now set to true)
- for revproxy if `FLAGS_use_cgroup_resource` is set, which is only true for all revproxy on stacking (slb.latest/ two slb.prod_reigonal p1/p2)
let's bake it for a while before enabling it for fwdproxy.
Reviewed By: meleshuk
Differential Revision: D72987549
fbshipit-source-id: 947f3da1f0c7f12f6b5465f1602b6da351869eae
Summary:
This diff is to change the function in `ResourceData` from
```
void setCpuStats(double cpuUsageRatio,
std::vector<double>&& cpuCoreUsageRatios,
double cpuUtilPercentileConfigured,
double cpuRatioUtilPercentile,
double cpuSoftIrqUsageRatio,
std::vector<double>&& softIrqCpuCoreRatioUtils)
```
to
```
struct CpuStats {
double cpuUsageRatio;
std::vector<double> cpuCoreUsageRatios;
double cpuUtilPercentileConfigured;
double cpuRatioUtilPercentile;
double cpuSoftIrqUsageRatio;
std::vector<double> softIrqCpuCoreRatioUtils;
};
void setCpuStats(CpuStats&& cpuStats)
```
This would improve readability and maintainability. And moreover, with this the calculation of pro-rated softIRQ for container cpu in next diff would be much cleaner
Differential Revision: D72981429
fbshipit-source-id: 29b7279c61519464b6fe006bf96b01826732b33f
Summary:
Bumps [docker/metadata-action](https://github.com/docker/metadata-action) from b53be03109c4ef6f6cc7aa545b84b17a7fe51c1e to 902fa8ec7d6ecbf8d84d538b9b233a880e428804.
<details>
<summary>Commits</summary>
<ul>
<li><a href="902fa8ec7d"><code>902fa8e</code></a> Merge pull request <a href="https://redirect.github.com/docker/metadata-action/issues/504">https://github.com/facebook/proxygen/issues/504</a> from docker/dependabot/npm_and_yarn/semver-7.7.1</li>
<li><a href="c30b9c27e6"><code>c30b9c2</code></a> chore: update generated content</li>
<li><a href="0698804aab"><code>0698804</code></a> chore(deps): Bump semver from 7.6.3 to 7.7.1</li>
<li><a href="bb3eecaaf8"><code>bb3eeca</code></a> Merge pull request <a href="https://redirect.github.com/docker/metadata-action/issues/501">https://github.com/facebook/proxygen/issues/501</a> from docker/dependabot/npm_and_yarn/moment-timezone-0...</li>
<li><a href="94a839cf6a"><code>94a839c</code></a> chore: update generated content</li>
<li><a href="ecd51a0f6a"><code>ecd51a0</code></a> Merge pull request <a href="https://redirect.github.com/docker/metadata-action/issues/509">https://github.com/facebook/proxygen/issues/509</a> from docker/dependabot/npm_and_yarn/docker/actions-to...</li>
<li><a href="a85b1dbfe6"><code>a85b1db</code></a> chore(deps): Bump <code>@docker/actions-toolkit</code> from 0.55.0 to 0.56.0</li>
<li><a href="5a76a0efcf"><code>5a76a0e</code></a> chore(deps): Bump moment-timezone from 0.5.46 to 0.5.47</li>
<li><a href="1cc4a9856a"><code>1cc4a98</code></a> Merge pull request <a href="https://redirect.github.com/docker/metadata-action/issues/482">https://github.com/facebook/proxygen/issues/482</a> from docker/dependabot/npm_and_yarn/csv-parse-5.6.0</li>
<li><a href="d84de1e022"><code>d84de1e</code></a> chore: update generated content</li>
<li>Additional commits viewable in <a href="b53be03109...902fa8ec7d">compare view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Pull Request resolved: https://github.com/facebook/proxygen/pull/553
Reviewed By: kvtsoy
Differential Revision: D72984309
Pulled By: afrind
fbshipit-source-id: 29deeac4919fd5815dbf4163a1227e5258f2a552
Summary:
Bumps [docker/login-action](https://github.com/docker/login-action) from 7ca345011ac4304463197fac0e56eab1bc7e6af0 to 327cd5a69de6c009b9ce71bce8395f28e651bf99.
<details>
<summary>Commits</summary>
<ul>
<li><a href="327cd5a69d"><code>327cd5a</code></a> Merge pull request <a href="https://redirect.github.com/docker/login-action/issues/838">#838</a> from crazy-max/bake-v6</li>
<li><a href="e217ef3a2d"><code>e217ef3</code></a> update bake-action to v6</li>
<li>See full diff in <a href="7ca345011a...327cd5a69d">compare view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting `dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `dependabot rebase` will rebase this PR
- `dependabot recreate` will recreate this PR, overwriting any edits that have been made to it
- `dependabot merge` will merge this PR after your CI passes on it
- `dependabot squash and merge` will squash and merge this PR after your CI passes on it
- `dependabot cancel merge` will cancel a previously requested merge and block automerging
- `dependabot reopen` will reopen this PR if it is closed
- `dependabot close` will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
- `dependabot show <dependency name> ignore conditions` will show all of the ignore conditions of the specified dependency
- `dependabot ignore this major version` will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this minor version` will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
- `dependabot ignore this dependency` will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
</details>
Pull Request resolved: https://github.com/facebook/proxygen/pull/543
Reviewed By: kvtsoy
Differential Revision: D72984247
Pulled By: afrind
fbshipit-source-id: ac8e6b71bbf15993d1ceda39736995398f6d77e7
Summary: Continuing the theme, removing it from QuicInteger which ends up being in a lot of the write paths.
Reviewed By: kvtsoy
Differential Revision: D72757026
fbshipit-source-id: 99a6ab2caea8fb495b1cb466172611002968e527
Summary: Removing the version of `generatePriority()` that had a dependency on `HTTP2Priority`.
Reviewed By: afrind
Differential Revision: D72536128
fbshipit-source-id: 4552f319bdd2858dc3e6b78bd5eb155a77bf64a2
Summary: Removing the version of `onPriority()` that had a dependency on `HTTP2Priority`.
Reviewed By: hanidamlaj
Differential Revision: D72342970
fbshipit-source-id: ec88a629d2c083d3002a1e429f978bdcf89f231f
Summary:
Migrating mvfst priority API to be abstract, based on new classes is quic/priority. For now, it requires applications use `HTTPPriorityQueue::Priority`, to be compatible with the hardcoded `deprecated::PriorityQueue` implementation and apps cannot yet change the queue impl. Eventually the application will have full control of the queue.
There are minor functional changes in this diff:
1. Priority QLog types changed from int/bool to string
2. Any PAUSED stream has priority `u=7,i` if paused streams are disabled (previously explicitly settable to any priority)
Reviewed By: jbeshay
Differential Revision: D68696110
fbshipit-source-id: 5a4721b08248ac75d725f51b5cb3e5d5de206d86
Summary:
X-link: https://github.com/facebookincubator/zstrong/pull/1266
ZStrong is moving away from fbcode_builder to use vanilla CMake. Removing this manifest so getdeps can stop considering the repo.
Reviewed By: terrelln
Differential Revision: D72397364
fbshipit-source-id: 5cbbd6edebe46a29aeddd93d848ad5a45e8d0aad
Summary:
I missed this case
1. idle connection times out
2. send 1st GOAWAY
3. timeout fires, send 2nd GOAWAY, but not FIN
If the client ignores the GOAWAY and was waiting for FIN, we'd end up holding the connection forever
Reviewed By: jbeshay, meleshuk
Differential Revision: D72261633
fbshipit-source-id: 9b3fe4df9b20e7c8d5ee1e3313f41d083e64cc08
Summary:
Fix fb303 OSS builds on macOS that failing to find xxhash.h.
Problem was that thrift cpp lib now needs xxhash but it wasn't declared in the cmake rules, which shows up as a problem when system xxhash is not installed.
CustomCompressorRegistry.cpp was also missing from cmake build resulting in link errors once the xxhash.h discovery was fixed.
Reviewed By: markbt
Differential Revision: D72452460
fbshipit-source-id: 6bdb8e0e3961529f04f9d9d29ba0daeff2e7ff2a
Summary: This can happen if someone sets an trailer that is on the list of headers that is not allowed
Reviewed By: jalopezsilva, kvtsoy
Differential Revision: D71919527
fbshipit-source-id: ce3f2aab0b90d417e6691546cad392303f2ce630