feat: upgrade of deserialization of RVF.#3722
feat: upgrade of deserialization of RVF.#3722ShadowCurse merged 3 commits intofirecracker-microvm:mainfrom
Conversation
24a043f to
e96342d
Compare
Great news! Should we update baseline values as well? |
|
@zulinx86 Because perf tests pass I assume the delta is big enough for this improvement. I don't really think changing baselines here is necessary. |
Hmm, 65% looks huge enough to me. For future reference, I'd appreciate if you could post the benchmark result before and after the change here. |
roypat
left a comment
There was a problem hiding this comment.
Mh, is this on the hot path? I'm not very familiar with y'all's work the past few months, but I thought that the json deserialization wasn't supposed to be on the hot path and instead some optimized binary forward was used? :o
I don't have full context behind that, but the baseline values are ~45 us on x86 and ~7.5us on aarch64. Test templates are here:
IIUC, we don't support binary compiled CPU template in firecracker v1.4. If users need more performance, we can support binary ones in successive versions. @mattschlebusch Do you have more context about this? |
So this whole PR was created, because I thought adding |
e96342d to
346919b
Compare
ab168ce to
496586d
Compare
f96baa2 to
65242cc
Compare
fbfea71 to
35b8f3b
Compare
35b8f3b to
e5fea74
Compare
Rewrote deserialization method for `RegisterValueFilter`. Significantly improved performance (~75%). Added ability to use `_` in string representation. Signed-off-by: Egor Lazarchuk <yegorlz@amazon.co.uk>
Minor change to use `Numeric` trait to constrain `V` parameter in `RegisterValueFilter` instead of separate traits Signed-off-by: Egor Lazarchuk <yegorlz@amazon.co.uk>
Performance tests were blown away by such blazingly fast deserialization. Signed-off-by: Egor Lazarchuk <yegorlz@amazon.co.uk>
e5fea74 to
d7688cc
Compare
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR #3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
Removes `ModifierMapvalue` since `Numeric` was introduced in PR firecracker-microvm#3722 and has similar functionalities. Signed-off-by: Takahiro Itazuri <itazur@amazon.com>
RegisterValueFilter._in string representation.running:
cargo bench --bench cpu_templatesdeserialize_cpu_template time: [5.5389 µs 5.5402 µs 5.5419 µs] change: [-77.543% -77.536% -77.530%] (p = 0.00 < 0.05) Performance has improved. Found 11 outliers among 200 measurements (5.50%) 2 (1.00%) low mild 4 (2.00%) high mild 5 (2.50%) high severeLicense Acceptance
By submitting this pull request, I confirm that my contribution is made under
the terms of the Apache 2.0 license. For more information on following
Developer Certificate of Origin and signing off your commits, please check
CONTRIBUTING.md.PR Checklist
CHANGELOG.md.TODOs link to an issue.rust-vmm.