{"id":19662207,"url":"https://github.com/efeslab/frontsuite","last_synced_at":"2025-08-22T11:38:02.477Z","repository":{"id":127885679,"uuid":"407327327","full_name":"efeslab/frontsuite","owner":"efeslab","description":null,"archived":false,"fork":false,"pushed_at":"2022-10-19T01:33:15.000Z","size":73,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":9,"default_branch":"main","last_synced_at":"2025-01-10T01:51:38.406Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/efeslab.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-09-16T22:05:39.000Z","updated_at":"2022-10-19T01:33:18.000Z","dependencies_parsed_at":null,"dependency_job_id":"ca47f29b-ae65-4c59-b70a-16dffd7251ed","html_url":"https://github.com/efeslab/frontsuite","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efeslab%2Ffrontsuite","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efeslab%2Ffrontsuite/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efeslab%2Ffrontsuite/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/efeslab%2Ffrontsuite/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/efeslab","download_url":"https://codeload.github.com/efeslab/frontsuite/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":240970497,"owners_count":19886578,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-11T16:09:55.989Z","updated_at":"2025-02-27T03:18:53.005Z","avatar_url":"https://github.com/efeslab.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# A suite of frontend-bound data center applications and their traces\n\nWe provide a virtualbox image where data center applications used for i-spy and ripple evaluation are pre-installed and set up to run. Please download the VMDK file from [here](https://drive.google.com/file/d/1pP85BDT7wm4--o6NUMMwBqBej6CFKBso/view?usp=sharing). For instructions on how to import VMDK files, see this [blog](https://medium.com/riow/how-to-open-a-vmdk-file-in-virtualbox-e1f711deacc4). The username/password for the virtual machine are `osboxes.org`. Data center application traces used for ispy and ripple can be downloaded from [here](https://drive.google.com/file/d/1tN8Jw1TcZ9CrDzDWK0HFUD-nVLhZDW9e/view?usp=sharing). These traces can be simulated using the [Intel PT frontend of zsim](https://github.com/stanford-mast/zsim/tree/memtrace).\n\n**Update: We also released traces of four more apps [here](https://drive.google.com/file/d/1RJYNbMR4G3m40ZiaflJ2Ox_DFB8vsgWv/view?usp=sharing)**\n\n# Setting up workloads on host/guest environment\n\nThis guide assumes that you are using ubuntu Linux distribution.\n\nThree HHVM applications (Drupal, Mediawiki, Wordpress): https://github.com/facebookarchive/oss-performance\n\nOnce you have installed HHVM (we use HHVM 5 built with gcc, the default ubuntu software manager one did not work for us, we had to follow this guide, https://docs.hhvm.com/hhvm/installation/building-from-source#ubuntu-15.04-vivid) and oss-performance suite along with their prerequisites, you can run the benchmarks using the following commands:\n\n```\nexport HHVM=/path/to/hhvm\npushd .\ncd /path/to/oss-performance\nfor i in drupal7 wordpress mediawiki;\ndo\n  $HHVM perf.php --$i --hhvm=$(echo $HHVM)\ndone\n```\n\nAlternatively, you can use the virtualbox image where HHVM workloads are pre-installed and set up to run. The oss-performance benchmarks are in a folder of the same name that you can cd into right from `~`. You'll have to run the one line shell command from time_wait.md before you get started running benchmarks (if you don't it will tell you to do so). Also, the first run of a benchmark on a given startup will want to login to mysql to set things up- the credentials are `root` and `root`. So, to run the wordpress benchmark, for example, you would boot up the machine, cd into `oss-performance`, `cat time_wait.md` to figure out the one-liner shell command to run, then run `hhvm perf.php --wordpress --hhvm=$(which hhvm)`.\n\nThree DaCapo applications (Cassandra, Kafka, Tomcat): http://dacapobench.org\n\nOnce you have installed jvm (we used GraalVM, installation guide, https://www.graalvm.org/docs/getting-started-with-graalvm/linux/) and dacapo (We download download the file from https://sourceforge.net/projects/dacapobench/files/evaluation/dacapo-evaluation-git%2B309e1fa-java8.jar/download), you can run the benchmarks using the following commands:\n\n```\nfor i in cassandra kafka tomcat;\ndo\n  java -jar /path/to/dacapo-evaluation-git+309e1fa-java8.jar $i -n 10\ndone\n```\n\nTwo Renaissance applications (Finagle-Chirper and Finagle-HTTP): https://renaissance.dev\nOnce you have installed jvm (again, we use GraalVM) and renaissance (we download the file from https://github.com/renaissance-benchmarks/renaissance/releases/download/v0.10.0/renaissance-gpl-0.10.0.jar), you can run the benchmarks using the following commands:\n\n```\nfor i in chirper http;\ndo\n  java -jar /path/to/renaissance.jar finagle-$i -r 10\ndone\n```\n\n# Setting up verilator (originally provided by Scott Beamer)\n\n1) Get the rocket-chip repo\n```\ngit clone https://github.com/freechipsproject/rocket-chip.git\n```\n2) Move to the same commit I was at:\n```\ncd rocket-chip\ngit checkout aca2f0c3b9fb81f42e4d1\n```\n3) Instantiate the appropriate version of riscv-fesvr\n```\ngit submodule update --init riscv-tools\ncd riscv-tools\ngit submodule update --init riscv-tools riscv-fesvr\n```\n4) Create a RISCV directory (to hold relevant software)\n```\nmkdir riscv\nexport RISCV=path to riscv\n```\n5) Build \u0026 install riscv-fesvr\n```\ncd rocket-chip/riscv-tools/riscv-fesvr\nmkdir build\ncd build\n../configure --prefix=$RISCV --target=riscv64-unknown-elf\nmake install\n```\n6) Download and expand the tarball from Google Drive (https://drive.google.com/file/d/1WnrYhhYTGUMpndvoNpnzJOjgxdTOBHyL/view?usp=sharing) into rocket-chip (overwriting emulator)\n\nHopefully make will be able to reuse things, or at least choose to not invoke Chisel to regenerate the verilog files. I would try the binaries right away, and progressively try deleting more things (and rebuilding them for your system) until it works. The instructions below are for the single-core simulator because it is the fastest, but once you have a working methodology, change DefaultConfig to DefaultConfigN8 or DefaultConfigN16 to get more cores.\n\n7) Try executing the single-core simulator that is there:\n```\ncd emulator\n./emulator-freechips.rocketchip.system-DefaultConfig +cycle-count ./dhrystone-head.riscv\n```\n8) (If the above doesn't work), try to encourage make to re-link it all, and try #7 again\n```\nrm emulator-freechips.rocketchip.system-DefaultConfig\nmake CONFIG=DefaultConfig\n```\n9) (If the above doesn't work), try rebuilding all .o files, and try #8 again\n```\nrm generated-src/freechips.rocketchip.system.DefaultConfig/*.o\n```\n10) (If the above doesn't work), try rebuilding verilator (and re-running verilator) by executing #8 again\n```\nrm -rf verilator\nrm -rf generated-src/freechips.rocketchip.system.DefaultConfig\n```\nWhen you start compiling large binaries, you can turn on parallel builds with -j:\n```\nmake MAKEFLAGS=\"$MAKEFLAGS -j4\" CONFIG=DefaultConfigN8\n```\nIf you do need to run the Scala to generate new designs, make sure to install version 8 of the JVM. If when emitting a large design you run out of memory, you can ask for more:\n```\nmake JVM_MEMORY=8G MAKEFLAGS=\"$MAKEFLAGS -j4\" CONFIG=DefaultConfigN8\n```\n\n# Publications\n\n```\n@inproceedings{khan2020ispy,\n  author = {Khan, Tanvir Ahmed and Sriraman, Akshitha and Devietti, Joseph and Pokam, Gilles and Litz, Heiner and Kasikci, Baris},\n  title = {I-SPY: Context-Driven Conditional Instruction Prefetching with Coalescing},\n  booktitle = {Proceedings of the 53rd IEEE/ACM International Symposium on Microarchitecture (MICRO)},\n  series = {MICRO 2020},\n  year = {2020},\n  publisher = {IEEE},\n  url = {https://doi.org/10.1109/MICRO50266.2020.00024},\n  doi = {10.1109/MICRO50266.2020.00024},\n}\n\n@inproceedings{khan2021ripple,\n  author = {Khan, Tanvir Ahmed and Zhang, Dexin and Sriraman, Akshitha and Devietti, Joseph and Pokam, Gilles and Litz, Heiner and Kasikci, Baris},\n  title = {Ripple: Profile-Guided Instruction Cache Replacement for Data Center Applications},\n  booktitle = {Proceedings of the 48th International Symposium on Computer Architecture (ISCA)},\n  series = {ISCA 2021},\n  year = {2021},\n  month = jun,\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefeslab%2Ffrontsuite","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fefeslab%2Ffrontsuite","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fefeslab%2Ffrontsuite/lists"}