Настройка окружения и работа с утилитами

Опирается на главы «Инструменты Linux» и «Внутреннее устройство Linux»; strace и perf в книге только названы, поэтому разбираться с ними необходимо по man perf-record, man perf-report и по схемам Брендана Грегга.

Условия задания

Настройка окружения

Эта часть книгой не покрывается: рабочее место настраивается каждым студентом самостоятельно по документации выбранных инструментов.

  1. Эмулятор терминала.

    • Установить и настроить современный эмулятор терминала
    • В отчёте указать выбранный эмулятор и доводы, определившие выбор
  2. Настройка PS1.

    • Оформить приглашение командной строки, выводимое перед каждой командой, в формате login@your-login-at-nsu:
    • Использовать три разных цвета для:
      • Логина
      • Символа @
      • Последней части приглашения
  3. Установка asciinema.

    • Установить утилиту
    • Освоить базовые функции, отвечающие за запись скринкастов

Практические задания

  1. Работа с gtypist.

    • Установить gtypist
    • Записать скринкаст, показывающий успешное прохождение упражнения S3
    • В кадре должны быть видны:
      • Raw speed
      • Adjusted speed
      • Процент ошибок
  2. Command line murders.

    • Записать скринкаст решения задачи
  3. Мониторинг системы.

    • Создать виртуальную машину с Ubuntu
    • Подключиться по SSH
    • Записать скринкаст выполнения команд, проверяющих:
      • Число ядер и модель CPU
      • Общий размер и свободная оперативная память
      • Занятое/свободное место в системе
      • Утилизация дисковой подсистемы (IOPS)
      • Скорость и утилизация сетевого линка
  4. Curl-однострочник.

    • Написать однострочник, который раз в секунду обращается с помощью curl по адресу https://storage.mds.yandex.net/ping и выводит для каждого запроса в одну строку только: таймстемп запуска команды, код ответа, время установки tcp-соединения, время установки tls-соединения, time to first byte, и общее время выполнения запроса
    • Записать скринкаст работы написанного однострочника
  5. Работа с 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, и имя самой нагруженной функции с указанием, в каком файле исходников она найдена.

Формат отчёта свободный (допускается комбинировать текст, скриншоты и ссылки на опубликованные записи)

Ссылка на репозиторий