Настройка окружения и работа с утилитами
Опирается на главы «Инструменты Linux» и «Внутреннее устройство Linux»;
straceиperfв книге только названы, поэтому разбираться с ними необходимо поman perf-record,man perf-reportи по схемам Брендана Грегга.
Условия задания
Настройка окружения
Эта часть книгой не покрывается: рабочее место настраивается каждым студентом самостоятельно по документации выбранных инструментов.
-
Эмулятор терминала.
- Установить и настроить современный эмулятор терминала
- В отчёте указать выбранный эмулятор и доводы, определившие выбор
-
Настройка PS1.
- Оформить приглашение командной строки, выводимое перед каждой командой, в формате
login@your-login-at-nsu: - Использовать три разных цвета для:
- Логина
- Символа @
- Последней части приглашения
- Оформить приглашение командной строки, выводимое перед каждой командой, в формате
-
Установка asciinema.
- Установить утилиту
- Освоить базовые функции, отвечающие за запись скринкастов
Практические задания
-
Работа с gtypist.
- Установить
gtypist - Записать скринкаст, показывающий успешное прохождение упражнения S3
- В кадре должны быть видны:
- Raw speed
- Adjusted speed
- Процент ошибок
- Установить
-
Command line murders.
- Записать скринкаст решения задачи
-
Мониторинг системы.
- Создать виртуальную машину с Ubuntu
- Подключиться по SSH
- Записать скринкаст выполнения команд, проверяющих:
- Число ядер и модель CPU
- Общий размер и свободная оперативная память
- Занятое/свободное место в системе
- Утилизация дисковой подсистемы (IOPS)
- Скорость и утилизация сетевого линка
-
Curl-однострочник.
- Написать однострочник, который раз в секунду обращается с помощью curl по адресу https://storage.mds.yandex.net/ping и выводит для каждого запроса в одну строку только: таймстемп запуска команды, код ответа, время установки tcp-соединения, время установки tls-соединения, time to first byte, и общее время выполнения запроса
- Записать скринкаст работы написанного однострочника
-
Работа с perf.
- Записать
perf recordи просмотретьperf report - В виртуальной машине аппаратные счётчики процессора обычно недоступны, и
perf record, запущенный без аргументов, завершится ошибкой на событииcycles. Достаточно использовать программное событие, поддерживаемое ядром, напримерperf record -e cpu-clock -g …. Если и оно отказывает, доступ к счётчикам ограничивается параметромkernel.perf_event_paranoid: необходимо посмотреть текущее значение черезsysctlи понизить его настолько, насколько требуется, понимая, какие возможности при этом разрешаются - (*) Дополнительное задание.
- Собрать zstd с debug-символами
- Запустить сжатие:
cat /dev/urandom | zstd -19 -f -T4 -v - -o out.zst - Снять perf record с процесса zstd
- Найти в исходниках самую нагруженную функцию
- Записать
Требования к сдаче
- Скринкасты в формате asciinema, по одному на каждый пункт практической части. На записи должен быть виден полученный результат, а не только набор команды. У
gtypistэто итоговые Raw speed, Adjusted speed и процент ошибок, у однострочника сcurl— несколько строк вывода со всеми шестью полями, у мониторинга — ответы на все пять вопросов. - Название выбранного эмулятора терминала и одна фраза, объясняющая выбор.
- Для задания со звёздочкой требуется ссылка на запись
perf report, сделанную с процесса zstd, и имя самой нагруженной функции с указанием, в каком файле исходников она найдена.
Формат отчёта свободный (допускается комбинировать текст, скриншоты и ссылки на опубликованные записи)