parca-dev / parca

Continuous profiling for analysis of CPU and memory usage, down to the line number and throughout time. Saving infrastructure cost, improving performance, and increasing reliability.
https://parca.dev/
Apache License 2.0
4.14k stars 213 forks source link

drop metastore, store whold pprof file into disk #2369

Open zdyj3170101136 opened 1 year ago

zdyj3170101136 commented 1 year ago

When i want to store thousands of pod's pprof file into parca.

I find there are some problem about metastore, may be it should be replaced by filestore.

metastore

Metastore is a key-value store, the key is hash of (location or mapping). the pprof file is normablized and stored into metastore.

problem

1, the key is random, so get a pprof means get thousands of random key from metastore, this is not scalable. 2, k-v store can save a lot of space, cause we only need to store same location once. but because the key is random, so the metastore could not use hot-cold store to save space. 3, badgerdb is embeded db, could not scale-up.

filestore

store the whole pprof file into disk. the symbolization cycle would get unsymbolized pprof file and do symbolize in two time: 1, the file is created. 2, 5 * time.minute ago.(because the agent upload is async)

it is easily to scale-up machine which do symbolization.

brancz commented 1 year ago

Storing things in pprof is also very inefficient, I don't think this approach would scale either.

We're working on something in Polar Signals Cloud that we think will fix all the metastore problems. If it actually works out, and we figure out all the edge cases, then we'll bring it back to Parca.