Projeto realizado na UC de Tecnologias de Sistemas Operativos.
- Projeto - implementação do filesystem de deduplicação.
- Passthrough - implementação do filesystem passthrough usada para comparação.
- Scripts - scripts
.shde benchmark. - Resultados - CSV com os resultados dos benchmarks.
- Scripts Python - scripts Python para geração de gráficos.
- Gráficos - resultados gerados pelos scripts Python, organizados por cenário.
- Relatório - relatório principal do projeto.
- Enunciado - enunciado original da UC.
Para compilar os testes do engine e do recipe:
cd projeto
makePara compilar o projeto:
cd projeto
make fusePara executar os testes automáticos do projeto.
cd projeto
make testPara compilar o passthrough:
cd passthrough
gcc -Wall passthrough.c `pkg-config fuse3 --cflags --libs` -o passthrough_fsDepois de compilar o projeto principal, o filesystem pode ser executado com:
cd projeto
sudo ./dedup_fs --store=/backend /mnt/dedupfs -o allow_other -fcd projeto
make testDepois de compilar o passthrough, o mesmo pode ser executado com:
cd passthrough
sudo ./passthrough_fs /mnt/fs -omodules="subdir,subdir=/backend" -o allow_other -fOs scripts .sh estão em scripts/.
- scripts/dedup_test_terminal.sh - corre um benchmark no terminal e mostra os resultados.
- scripts/dedup_test_csv.sh - corre um benchmark e guarda uma linha CSV num ficheiro passado como argumento.
- scripts/dedup_test_csv_nTimes.sh - repete o benchmark anterior N vezes guardando os resutaos num ficheiro CSV passado como argumento.
- scripts/testes_diagnostico/ - scripts de diagnóstico e validação de montagem.
Exemplos:
sudo bash scripts/dedup_test_terminal.sh /mnt/dedupfs 50 /backend 268435456
sudo bash scripts/dedup_test_csv.sh /mnt/dedupfs 50 scripts/results/dedup.csv /backend 268435456
sudo bash scripts/dedup_test_csv_nTimes.sh /mnt/dedupfs 50 scripts/results/dedup.csv 20 /backend 268435456Os scripts Python estão em scripts/python/.
- scripts/python/plot_scenario.py - gera os gráficos para uma taxa de duplicação específica.
- scripts/python/plots.py - lógica principal de leitura dos CSV e geração dos gráficos.
- scripts/python/outputs/ - pasta onde estão guardados os gráficos por cenário de duplicação.
Dependências:
cd scripts/python
python3 -m pip install matplotlib pandasExecução:
cd scripts/python
python3 plot_scenario.py 50Project developed for the Operating Systems Technologies course.
- Project - deduplication filesystem implementation.
- Passthrough - passthrough filesystem implementation used for comparison.
- Scripts - benchmark
.shscripts. - Results - CSV files with benchmark results.
- Python Scripts - Python scripts for chart generation.
- Charts - outputs generated by the Python scripts, organised by scenario.
- Report - main project report.
- Assignment - original course assignment.
To build the engine and recipe tests:
cd projeto
makeTo build the project:
cd projeto
make fuseTo run the automated project tests:
cd projeto
make testTo build the passthrough:
cd passthrough
gcc -Wall passthrough.c `pkg-config fuse3 --cflags --libs` -o passthrough_fsAfter building the main project, the filesystem can be mounted with:
cd projeto
sudo ./dedup_fs --store=/backend /mnt/dedupfs -o allow_other -fcd projeto
make testAfter building the passthrough, it can be mounted with:
cd passthrough
sudo ./passthrough_fs /mnt/fs -omodules="subdir,subdir=/backend" -o allow_other -fThe .sh scripts are located in scripts/.
- scripts/dedup_test_terminal.sh - runs a benchmark in the terminal and prints the results.
- scripts/dedup_test_csv.sh - runs a benchmark and appends a CSV line to a given file.
- scripts/dedup_test_csv_nTimes.sh - repeats the previous benchmark N times, saving results to a given CSV file.
- scripts/testes_diagnostico/ - diagnostic and mount validation scripts.
Examples:
sudo bash scripts/dedup_test_terminal.sh /mnt/dedupfs 50 /backend 268435456
sudo bash scripts/dedup_test_csv.sh /mnt/dedupfs 50 scripts/results/dedup.csv /backend 268435456
sudo bash scripts/dedup_test_csv_nTimes.sh /mnt/dedupfs 50 scripts/results/dedup.csv 20 /backend 268435456The Python scripts are located in scripts/python/.
- scripts/python/plot_scenario.py - generates charts for a specific duplication rate.
- scripts/python/plots.py - main logic for reading CSVs and generating charts.
- scripts/python/outputs/ - folder where charts are saved, organised by duplication scenario.
Dependencies:
cd scripts/python
python3 -m pip install matplotlib pandasUsage:
cd scripts/python
python3 plot_scenario.py 50