mirror of
https://github.com/gravitational/teleport.git
synced 2026-11-01 21:52:02 +08:00
While loading a key from storage, Teleport client transverses the storage directory to read the secrets and reads each file one by one. This has huge impacts on `tsh kube credentials` because when calling `kubectl` in parallel, the disk operations become overloaded and the operation time increases exponentially. This PR removes the transverse when reading credentials for Kubernetes clusters and adds a quick read operation that reads the following files: - `$TSH_HOME/current_profile` - `$TSH_HOME/$profile.yaml` - `$TSH_HOME/keys/$PROXY/$USER-kube/$TELEPORT_CLUSTER/$KUBE_CLUSTER-x509.pem` - `$TSH_HOME/keys/$PROXY/$USER` | - | P=1 | P=10 | P=40 | P=80 | P=120 | | --- | --- | --- | --- | --- | --- | | old direct | 9.90s user 3.14s system 64% cpu 20.284 total | 11.08s user 3.60s system 496% cpu 2.955 total | 12.46s user 4.36s system 820% cpu 2.050 total | 12.81s user 4.76s system 811% cpu 2.164 total | 13.02s user 5.07s system 861% cpu 2.100 total| | old teleport | 18.45s user 7.80s system 51% cpu 51.085 total | 21.58s user 10.03s system 434% cpu 7.270 total | 22.33s user 10.52s system 178% cpu 18.402 total | 22.04s user 10.83s system 96% cpu 33.977 total | 22.57s user 11.45s system 55% cpu 1:01.34 total| | new direct | 9.51s user 2.90s system 146% cpu 8.460 total | 13.75s user 4.95s system 718% cpu 2.603 total | 12.21s user 4.43s system 832% cpu 1.999 total | 11.72s user 4.50s system 839% cpu 1.933 total | 12.06s user 4.62s system 830% cpu 2.009 total | | new teleport | 16.10s user 5.97s system 42% cpu 52.104 total | 21.62s user 9.01s system 381% cpu 8.023 total | 23.22s user 10.11s system 540% cpu 6.162 total | 21.64s user 9.81s system 603% cpu 5.208 total | 20.70s user 9.13s system 602% cpu 4.948 total | --- | - | P=1 | P=10 | P=40 | P=80 | P=120 | | --- | --- | --- | --- | --- | --- | | old no tsh kube credential | 8.61s user 2.99s system 31% cpu 36.336 total | 9.57s user 3.39s system 283% cpu 4.565 total | 10.22s user 4.03s system 553% cpu 2.574 total | 9.32s user 3.82s system 559% cpu 2.351 total | 11.49s user 4.85s system 624% cpu 2.617 total | new no tsh kube credential | 8.27s user 2.94s system 24% cpu 45.041 total | 10.85s user 4.31s system 195% cpu 7.767 total | 11.32s user 4.64s system 469% cpu 3.401 total | 10.83s user 4.51s system 553% cpu 2.773 total | 10.90s user 4.84s system 537% cpu 2.930 total | --- | instances | old total | old avg | **new total** | **total avg** | | --- | --- | --- | --- | --- | | 1 | 0.145 | 0.145 | 0.074 | 0.074 | | 10 | 0.430 | 0.043 | 0.146 | 0.0146 | | 20 | 0.740 | 0.037 | 0.284 | 0.0142 | | 30 | 1.108 | 0.037 | 0.417 | 0.0139 | | 40 | 1.483 | 0.037 | 0.580 | 0.0145 | | 60 | 13.604 | 0.228 | 0.825 | 0.0137 | | 80 | 30.236 | 0.378 | 1.143 | 0.0142 | | 106 | 46.681 | 0.440 | 1.413 | 0.0133 | Fixes #19313 Co-authored-by: Brian Joerger <bjoerger@goteleport.com>