Skip to content

Implement LFU as default cache along with memory pool #125

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

Merged
merged 1 commit into from
Apr 20, 2023

Conversation

qwe661234
Copy link
Collaborator

We have implemented an adaptive replacement cache to reduce memory usage. However, the complexity of the replacement policy of ARC can lead to a decrease in overall performance. As a result, we implemented the LFU cache, which performed better, but we still retained the ARC for future use. Additionally, we imported the memory pool we developed to limit the memory usage of both caches.

The statistics below illustrate the performance of the LFU cache and ARC while running the CoreMark benchmark, indicating that the LFU cache outperforms ARC.

Test CoreMark(Iterations/Sec)
ARC 1123.776
LFU Cache 1155.174

@jserv jserv changed the title Refactor ARC into LFU and integrate mpool Implement LFU as default cache along with memory pool Apr 20, 2023
Copy link
Contributor

@jserv jserv left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add corresponding build tests in GitHub Actions.

@qwe661234 qwe661234 force-pushed the wip/LFUcache branch 2 times, most recently from 7902397 to adff200 Compare April 20, 2023 07:19
We have implemented an adaptive replacement cache to reduce memory usage.
However, the complexity of the replacement policy of ARC can lead to a
decrease in overall performance. As a result, we implemented the LFU cache,
which performed better, but we still retained the ARC for future use.
Additionally, we imported the memory pool we developed to limit the memory
usage of both caches.

The statistics below illustrate the performance of the LFU cache and ARC
while running the CoreMark benchmark, indicating that the LFU cache outperforms ARC.

| Test |  CoreMark(Iterations/Sec)  |
|------+----------------------------|
| ARC  |         1123.776           |
| LFU  |         1155.174           |
@jserv jserv merged commit bdc5348 into sysprog21:master Apr 20, 2023
@jserv
Copy link
Contributor

jserv commented Apr 20, 2023

Thank @qwe661234 for contributing. Let's move forward to JIT compilation.

@qwe661234 qwe661234 deleted the wip/LFUcache branch April 20, 2023 10:27
2011eric pushed a commit to 2011eric/rv32emu that referenced this pull request Jul 22, 2023
An adaptive replacement cache (ARC) was implemented to reduce memory usage.
However, the complexity of the replacement policy of ARC can lead to a
decrease in overall performance. Therefore, a least frequently used (LFU) cache
was also implemented, which outperformed ARC in testing. However, the ARC was
retained for future use.

In addition, a memory pool was imported to limit the memory usage of both caches.

Performance statistics for the LFU cache and ARC running the CoreMark benchmark
indicate that the LFU cache outperforms ARC.

| Test |  CoreMark(Iterations/Sec)  |
|------+----------------------------|
| ARC  |         1123.776           |
| LFU  |         1155.174           |
vestata pushed a commit to vestata/rv32emu that referenced this pull request Jan 24, 2025
An adaptive replacement cache (ARC) was implemented to reduce memory usage.
However, the complexity of the replacement policy of ARC can lead to a
decrease in overall performance. Therefore, a least frequently used (LFU) cache
was also implemented, which outperformed ARC in testing. However, the ARC was
retained for future use.

In addition, a memory pool was imported to limit the memory usage of both caches.

Performance statistics for the LFU cache and ARC running the CoreMark benchmark
indicate that the LFU cache outperforms ARC.

| Test |  CoreMark(Iterations/Sec)  |
|------+----------------------------|
| ARC  |         1123.776           |
| LFU  |         1155.174           |
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.

2 participants