Compressing callstacks: a bitpacked DAG powered by a keyless hashmap
superluminal.eu·6d·
⚙️Systems Programming
Preview
Report Post

One of the challenges we face in Superluminal is dealing with large data. When we capture performance data, the data is dominated by callstack information. On Windows, we sample at 8Khz, and capture a callstack for every active CPU. For a 16-core machine with an average stack depth of 40 frames, the raw data rate becomes:

16 (cores) * 40 (frames) * 8 (bytes per frame) * 8192 (Hz) = 40MiB/s

As a real example, we use a 2.64 GiB ETL file that was captured on Windows while running the Unity engine. It contains 21,096,952 callstacks totalling 4.2 GiB of raw data. The callstack data is larger than the total file size because the ETL stream is compressed.

Even in a moderately sized capture such as this, there is more callstack data than we are w…

Similar Posts

Loading similar posts...