-
Library Dependencies
liburing
-
Programs should have
CAP_SYS_NICE
capabilitysudo setcap 'cap_sys_nice=eip' fcp sudo setcap 'cap_sys_nice=eip' fcp2
mkdir build; cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
The interface is similar to GNU cp. For eg., to make a copy of dir1
called copy_dir1
./fcp -r dir1/ /path/to/copy_dir1/
Features / Flags:
Flag | Description | cp | fcp |
---|---|---|---|
-h | Prints help | ✓ | ✓ |
-r | copy recursively | ✓ | ✓ |
-b B | total buffer size in KiB (default: 128KiB) | ✓ | ✓ |
-n N | # of sub-buffers to use (default: 2) | ✓ | |
-k | (io_uring) use a separate kernel thread to poll SQ (default: false) | ✓ | |
-q Q | size of SQ (default: 16384) | ✓ |
All benchmark scripts and tests can be found inside the tests/ folder.
-
sanity_checks.sh: Runs some basic sanity checks by copying files/folders and verifying correctness via
diff
:./sanity_checks ../build/fcp
-
benchmark_single.sh: Benchmarks the time taken to copy a single file
sudo ./benchmark.sh <size-in-MB> <cp-executable> [opts]
-
benchmark_multi.sh: Benchmarks the time taken to copy a folder with multiple files
sudo ./benchmark.sh <size-in-MB> <num-files> <cp-executable> [opts]
-
To run a test: Choose a test config file from tests/graphs/test_configs/ directory.
python run_test.py -f <path_to_config_file> -r <result_directory_path> -t <target_directory_to_test> --bin <path_to_build_directory>
-
To run all tests: Go to tests/graphs/test_configs/ directory.
./runall.sh
To generate results:
- First run desired tests as described in step 4 or 5 above.
- Use the jupyter notebook files (
.ipynb
) from results_ssd_1k_cc/ directory to generate the results. Use the corresponding results (with matching name prefix) to generate the graphs.