https://github.com/aliireza/ddio-bench

Reexamining Direct Cache Access to Optimize I/O Intensive Applications for Multi-hundred-gigabit Networks

https://github.com/aliireza/ddio-bench

Science Score: 10.0%

This score indicates how likely this project is to be science-related based on various indicators:

  • CITATION.cff file
  • codemeta.json file
  • .zenodo.json file
  • DOI references
  • Academic publication links
  • Committers with academic emails
    1 of 2 committers (50.0%) from academic institutions
  • Institutional organization owner
  • JOSS paper metadata
  • Scientific vocabulary similarity
    Low similarity (13.6%) to scientific vocabulary

Keywords

benchmark dca ddio
Last synced: 5 months ago · JSON representation

Repository

Reexamining Direct Cache Access to Optimize I/O Intensive Applications for Multi-hundred-gigabit Networks

Basic Info
Statistics
  • Stars: 92
  • Watchers: 2
  • Forks: 19
  • Open Issues: 1
  • Releases: 0
Topics
benchmark dca ddio
Created almost 6 years ago · Last pushed over 4 years ago
Metadata Files
Readme Changelog License

README.md

ddio-bench: Understanding Intel Data Direct I/O Technology

This repository contains information/source code to perform the experiments done in DDIO paper published at ATC'20.

Experiments

This repositoy mainly focuses on the experiments performed in Section 4 and 5 of DDIO paper.

The experiments are located at experiments/. Every folder has a Makefile and README.md that can be used to run the experiment.

For more information, please check README.

Note that you have to setup your testbed based on our guidelines before running any experiment.

Tuning DDIO

You can use DDIOTune element in Fastclick to enable/disable/tune DDIO. If you want to tune DDIO in a different context, you can use the following guidelines.

  • Tuning: Our experiments show that changing the values of IIO LLC WAYS register, located at 0xC8B, could improve the performance of DDIO. The default value of this register in our testbed is 0x600, which has 2 set bits. You can read the current value and write new values to this register via msr-tools, as follows:

bash sudo apt-get install msr-tools sudo modprobe msr sudo rdmsr 0xc8b sudo wrmsr 0xc8b 0x7f0

  • Disabling/Enabling DDIO: DDIO is enabled by default on Intel Xeon processors. DDIO can be disabled globally (i.e., by setting the Disable_All_Allocating_Flows bit in iiomiscctrl register) or per-root PCIe port (i.e., setting bit NoSnoopOpWrEn and unsetting bit Use_Allocating_Flow_Wr in perfctrlsts_0 register). You can find more information about these registers in the second volume of your processor's datasheet. For instance, you can check Haswell and Cascade Lake datasheets.

change-ddio.c is a simple C program to change the state of DDIO for a PCIe port. To use change-ddio, run the following commands:

bash sudo apt-get install libpci-dev gcc change-ddio.c -o change-ddio -lpci sudo ./change-ddio

You need to define the proper value for nic_bus and ddio_state in the code. For example, if you have a NIC that is mounted on 03:00.0, you should change nic_bus to 0x03. ddio_state=0 will disable the DDIO for the PCIe root responsible for that specific NIC.

You can find the PCIe BDF (Bus Device Function) of your NIC via lspci, e.g., try lspci -vvv | grep Mellanox if you have a Mellanox card.

You can also check the implementation of DDIOTune element in Fastclick.

Dynamic Burst Size Reduction

We have investigated the impact of dynamically reducing the number of RX descriptors in case of congestion in the TX path. Our implementation can be found at DMAdynamic branch of Fastclick.

If you want to try it, you have to compile Fastclick with --enable_dynamic_rxburst flag.

Citing our paper

If you use ddio-bench in any context, please cite our paper:

bibtex @inproceedings {farshin-ddio, author = {Farshin, Alireza and Roozbeh, Amir and {Maguire Jr.}, Gerald Q. and Kosti\'{c}, Dejan}, title = {{Reexamining Direct Cache Access to Optimize I/O Intensive Applications for Multi-hundred-gigabit Networks}}, booktitle = {2020 {USENIX} Annual Technical Conference ({USENIX} {ATC} 20)}, year = {2020}, isbn = {978-1-939133-14-4}, pages = {673--689}, url = {https://www.usenix.org/conference/atc20/presentation/farshin}, publisher = {{USENIX} Association}, month = jul, }

Getting Help

If you have any questions regarding our code or the paper, you can contact Alireza Farshin (farshin at kth.se) and/or Amir Roozbeh (amirrsk at kth.se).

Owner

  • Name: Alireza Farshin
  • Login: aliireza
  • Kind: user
  • Location: Stockholm, Sweden
  • Company: KTH

Networked Systems Researcher | Doctoral Student

GitHub Events

Total
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 2
  • Fork event: 4
Last Year
  • Issues event: 1
  • Watch event: 14
  • Issue comment event: 2
  • Fork event: 4

Committers

Last synced: 9 months ago

All Time
  • Total Commits: 50
  • Total Committers: 2
  • Avg Commits per committer: 25.0
  • Development Distribution Score (DDS): 0.02
Past Year
  • Commits: 0
  • Committers: 0
  • Avg Commits per committer: 0.0
  • Development Distribution Score (DDS): 0.0
Top Committers
Name Email Commits
Alireza Farshin f****n@k****e 49
Adrien Mahieux a****x@g****m 1
Committer Domains (Top 20 + Academic)
kth.se: 1

Issues and Pull Requests

Last synced: 9 months ago

All Time
  • Total issues: 2
  • Total pull requests: 1
  • Average time to close issues: about 3 hours
  • Average time to close pull requests: 21 minutes
  • Total issue authors: 2
  • Total pull request authors: 1
  • Average comments per issue: 1.0
  • Average comments per pull request: 2.0
  • Merged pull requests: 1
  • Bot issues: 0
  • Bot pull requests: 0
Past Year
  • Issues: 1
  • Pull requests: 0
  • Average time to close issues: about 3 hours
  • Average time to close pull requests: N/A
  • Issue authors: 1
  • Pull request authors: 0
  • Average comments per issue: 2.0
  • Average comments per pull request: 0
  • Merged pull requests: 0
  • Bot issues: 0
  • Bot pull requests: 0
Top Authors
Issue Authors
  • sunce4t (1)
  • aliireza (1)
Pull Request Authors
  • Saruspete (1)
Top Labels
Issue Labels
enhancement (1)
Pull Request Labels