Загрузка данных


4.3. Перехватываем cat
export SYSCALL_SPY_LOG="$PWD/cat.log"
LD_PRELOAD="$PWD/libsyscall_spy.so" cat /etc/hostname


Просматриваем:
cat cat.log


4.4. Перехватываем grep
export SYSCALL_SPY_LOG="$PWD/grep.log"
LD_PRELOAD="$PWD/libsyscall_spy.so" grep -n root /etc/passwd


Просматриваем:
cat grep.log


4.5. Получаем количество вызовов
Выполни:
grep -c 'open(' ls.log
grep -c 'openat(' ls.log
grep -c 'read(' ls.log
grep -c 'write(' ls.log
grep -c 'close(' ls.log


Для остальных:
grep -c 'openat(' cat.log
grep -c 'read(' cat.log
grep -c 'write(' cat.log
grep -c 'close(' cat.log


grep -c 'openat(' grep.log
grep -c 'read(' grep.log
grep -c 'write(' grep.log
grep -c 'close(' grep.log


4.6. Копируем результаты в Windows
cp ls.log cat.log grep.log /media/sf_share/


В Windows они будут лежать в:

C:\share\ls.log

C:\share\cat.log

C:\share\grep.log

5. Выполняем задание №2: Benchmark
5.1. Компиляция
cd ~/lab5
gcc -O2 -Wall -Wextra -o benchmark benchmark.c


5.2. Запуск
./benchmark


Получишь четыре результата:
- dummy
- getpid
- open+close
- gettimeofday
Они будут содержать время на одну операцию и количество циклов CPU.
5.3. Сохраняем результаты
./benchmark > benchmark_result.txt


Но тут есть нюанс: программа выводит результат через printf, поэтому он окажется в файле.

Посмотреть:
cat benchmark_result.txt


Скопировать в Windows:
cp benchmark_result.txt /media/sf_share/


5.4. Используем perf
perf stat -e cycles,instructions,context-switches,page-faults ./benchmark


Если работает, получишь:
- cycles;
- instructions;
- context-switches;
- page-faults.
Сохрани результат:
perf stat -e cycles,instructions,context-switches,page-faults ./benchmark 2> perf_result.txt


Копируем:
cp perf_result.txt /media/sf_share/


Если perf не работает из-за ограничений виртуальной машины, попробуй:
sudo perf stat ./benchmark



6. Эксперимент с кешем
Если преподаватель требует сравнить результаты до и после очистки кеша:

Сначала:
./benchmark


Потом:
sudo sh -c 'echo 3 > /proc/sys/vm/drop_caches'


И снова:
./benchmark


Важное замечание: drop_caches очищает системные кеши. Это не очистка кеша процессора и не магическая кнопка ускорения компьютера. Делай эксперимент в виртуальной машине, а не на основной системе.

7. Какие скриншоты сделать для отчёта
Вот конкретный список, чтобы не сидеть потом и не гадать, чего преподавателю не хватает.
№	Что должно быть на скриншоте
1	Компиляция libsyscall_spy.so
2	Запуск ls с LD_PRELOAD и журнал ls.log
3	Запуск cat и журнал cat.log
4	Запуск grep и журнал grep.log
5	Результаты подсчёта вызовов
6	Запуск benchmark с четырьмя измерениями
7	Результат perf stat
8	Сравнение benchmark до и после сброса кешей, если выполнялось

Как делать
В Ubuntu:
1. Открой терминал.
2. Выполни нужную команду.
3. Нажми Win + Shift + S.
4. Выдели область терминала.
5. Сохрани изображение в C:\share.
6. Вставь его в Word.
Лучше делать скриншоты в разрешении, где команды и цифры читаются. Фото монитора на телефон, конечно, тоже существует как технология, но не надо.