Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add Support for Compressible Data Generation #45

Open
wants to merge 2 commits into
base: master
Choose a base branch
from

Conversation

kpmckay
Copy link
Contributor

@kpmckay kpmckay commented Sep 13, 2019

Summary
This pull requests adds a compress-percent option that allows ACT to send data with a specified target compression ratio for storage workloads. The compress-percent option works similar to the buffer_compress_percentage option in FIO. For example, setting compress-percent to 40 will configure ACT to send data that should compress to 40% of its original size. The default compress-percent value is 100, corresponding to fully random data (not compressible). Values greater than 100 are not permitted. Similar to FIO, the data is made compressible by adding runs of zeros to random data. The runs of zeros are added at 512 byte intervals in the buffer in order to prevent de-duplication or zeros truncation from skewing the compression ratio. Because run-length encoding techniques provide virtually all of the compression for the generated data pattern, similar compression ratios should be observed for most common algorithms (gzip, LZ4, Snappy, etc.).

Motivation
Some SSDs support in-line compression. In-line compression can reduce tail latency by lowering the amount of write-to-read interference within the SSD. By providing an option within ACT to send compressible data, one can measure the effects of compression on tail latency under different workload assumptions.

@rbotzer rbotzer requested a review from gooding470 September 27, 2019 20:55
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant