RUSSIAN

Производительность систем

Book information

Publisher
Питер
Year
2023
ISBN
9785446118182
Language
russian
Format
PDF
Filesize
17 MB (17952537 bytes)
Series
Для профессионалов
Edition
1
Pages
992\992
Time added
2023-05-24 13:39:47

Description

Книга посвящена концепциям, стратегиям, инструментам и настройке операционных систем и приложений на примере систем на базе Linux. Понимание этих инструментов и методов критически важно при разработке современного ПО. Применение стратегий, изложенных в обновленном и переработанном издании, позволит перформанс-инженерам улучшить взаимодействие с конечными пользователями и снизить затраты, особенно для облачных сред. Брендан Грегг — эксперт в области производительности систем и автор нескольких бестселлеров лаконично, но емко излагает наиболее важные сведения о работе операционных систем, оборудования и приложений, которые позволят специалистам быстро добиться результатов, даже если раньше они никогда не занимались анализом производительности. Далее автор дает детальные объяснения по применению современных инструментов и методов, включая расширенный BPF, и показывает, как добиться максимальной эффективности ваших систем в облачных, веб- и крупных корпоративных средах. Предисловие Об этом издании Об этой книге Благодарности Об авторе ОТ ИЗДАТЕЛЬСТВА Глава 1. Введение 1.1. Производительность системы 1.2. Роли 1.3. Действия 1.4. Перспективы 1.5. Сложности оценки производительности 1.5.1. Субъективность 1.5.2. Сложность 1.5.3. Множественные причины 1.5.4. Множественные проблемы с производительностью 1.6. Задержка 1.7. Наблюдаемость 1.7.1. Счетчики, статистики и метрики 1.7.2. Профилирование 1.7.3. Трассировка 1.8. Эксперименты 1.9. Облачные вычисления 1.10. Методологии 1.10.1. Анализ производительности Linux за 60 секунд 1.11. Практические примеры 1.11.1. Медленные диски 1.11.2. Изменение в программном обеспечении 1.11.3. Дополнительное чтение 1.12. Ссылки Глава 2. Методологии 2.1. Терминология 2.2. Модели 2.2.1. Тестируемая система 2.2.2. Система массового обслуживания 2.3. Основные понятия 2.3.1. Задержка 2.3.2. Шкалы времени 2.3.3. Компромиссы 2.3.4. Настройка производительности 2.3.5. Целесообразность 2.3.6. Когда лучше остановить анализ 2.3.7. Рекомендации действительны на данный момент времени 2.3.8. Нагрузка и архитектура 2.3.9. Масштабируемость 2.3.10. Метрики 2.3.11. Потребление 2.3.12. Насыщенность 2.3.13. Профилирование 2.3.14. Кэширование 2.3.15. Известные неизвестные 2.4. Точки зрения 2.4.1. Анализ ресурсов 2.4.2. Анализ рабочей нагрузки 2.5. Методология 2.5.1. Антиметодология «уличный фонарь» 2.5.2. Антиметодология «случайное изменение» 2.5.3. Антиметодология «виноват кто-то другой» 2.5.4. Специальный чек-лист 2.5.5. Формулировка проблемы 2.5.6. Научный метод 2.5.7. Цикл диагностики 2.5.8. Метод инструментов 2.5.9. Метод USE 2.5.10. Метод RED 2.5.11. Определение характеристик рабочей нагрузки 2.5.12. Анализ с увеличением детализации 2.5.13. Анализ задержек 2.5.14. Метод R 2.5.15. Трассировка событий 2.5.16. Базовые статистики 2.5.17. Статическая настройка производительности 2.5.18. Настройка кэширования 2.5.19. Микробенчмаркинг производительности 2.5.20. Мантры производительности 2.6. Моделирование 2.6.1. Корпоративные и облачные среды 2.6.2. Визуальная идентификация 2.6.3. Закон Амдала 2.6.4. Универсальный закон масштабируемости 2.6.5. Теория массового обслуживания 2.7. Планирование емкости 2.7.1. Пределы ресурсов 2.7.2. Факторный анализ 2.7.3. Решения масштабирования 2.8. Статистики 2.8.1. Количественная оценка прироста производительности 2.8.2. Усреднение 2.8.3. Стандартное отклонение, процентили, медиана 2.8.4. Коэффициент вариации 2.8.5. Мультимодальные распределения 2.8.6. Выбросы 2.9. Мониторинг 2.9.1. Временные закономерности 2.9.2. Инструменты мониторинга 2.9.3. Сводная статистика, накопленная с момента загрузки 2.10. Визуализация 2.10.1. Линейная диаграмма 2.10.2. Диаграммы рассеяния 2.10.3. Тепловые карты 2.10.4. Временная шкала 2.10.5. График поверхности 2.10.6. Инструменты визуализации 2.11. Упражнения 2.12. Ссылки Глава 3. Операционные системы 3.1. Терминология 3.2. Основы 3.2.1. Ядро 3.2.2. Ядро и пользовательские режимы 3.2.3. Системные вызовы 3.2.4. Прерывания 3.2.5. Часы и бездействие 3.2.6. Процессы 3.2.7. Стеки 3.2.8. Виртуальная память 3.2.9. Планировщики 3.2.10. Файловая система 3.2.11. Кэширование 3.2.12. Сеть 3.2.13. Драйверы устройств 3.2.14. Многопроцессорность 3.2.15. Вытеснение 3.2.16. Управление ресурсами 3.2.17. Наблюдаемость 3.3. Ядра 3.3.1. Unix 3.3.2. BSD 3.3.3. Solaris 3.4. Linux 3.4.1. Новые разработки в ядре Linux 3.4.2. systemd 3.4.3. KPTI (Meltdown) 3.4.4. Расширенный BPF 3.5. Другие темы 3.5.1. Ядра PGO 3.5.2. Одноцелевые ядра 3.5.3. Микроядра и гибридные ядра 3.5.4. Распределенные операционные системы 3.6. Сравнение ядер 3.7. Упражнения 3.8. Ссылки 3.8.1. Дополнительное чтение Глава 4. Инструменты наблюдения 4.1. Покрытие инструментами 4.1.1. Инструменты статического анализа производительности 4.1.2. Инструменты анализа кризисных ситуаций 4.2. Типы инструментов 4.2.1. Фиксированные счетчики 4.2.2. Профилирование 4.2.3. Трассировка 4.2.4. Мониторинг 4.3. Источники информации 4.3.1. /proc 4.3.2. /sys 4.3.3. Учет задержек 4.3.4. netlink 4.3.5. Точки трассировки 4.3.6. kprobes 4.3.7. uprobes 4.3.8. USDT 4.3.9. Аппаратные счетчики (PMC) 4.3.10. Другие источники информации для наблюдения 4.4. sar 4.4.1. Область покрытия sar(1) 4.4.2. Мониторинг с sar(1) 4.4.3. Вывод оперативной информации с помощью sar(1) 4.4.4. Документация с описанием sar(1) 4.5. Инструменты трассировки 4.6. Наблюдение за наблюдаемостью 4.7. Упражнения 4.8. Ссылки Глава 5. Приложения 5.1. Основы приложений 5.1.1. Цель 5.1.2. Оптимизация общего случая 5.1.3. Наблюдаемость 5.1.4. Нотация «О-большое» 5.2. Методы повышения производительности приложений 5.2.1. Выбор размеров блоков ввода/вывода 5.2.2. Кэширование 5.2.3. Буферизация 5.2.4. Опрос 5.2.5. Конкурентность и параллелизм 5.2.6. Неблокирующий ввод/вывод 5.2.7. Привязка к процессору 5.2.8. Мантры производительности 5.3. Языки программирования 5.3.1. Компилируемые языки 5.3.2. Интерпретируемые языки 5.3.3. Виртуальные машины 5.3.4. Сборка мусора 5.4. Методология 5.4.1. Профилирование процессора 5.4.2. Анализ времени ожидания вне процессора 5.4.3. Анализ системных вызовов 5.4.4. Метод USE 5.4.5. Анализ состояния потока 5.4.6. Анализ блокировок 5.4.7. Настройка статической производительности 5.4.8. Распределенная трассировка 5.5. Инструменты наблюдения 5.5.1. perf 5.5.2. profile 5.5.3. offcputime 5.5.4. strace 5.5.5. execsnoop 5.5.6. syscount 5.5.7. bpftrace 5.6. Проблемы 5.6.1. Отсутствие символов 5.6.2. Отсутствие стеков 5.7. Упражнения 5.8. Ссылки Глава 6. Процессоры 6.1. Терминология 6.2. Модели 6.2.1. Архитектура процессора 6.2.2. Кэш-память процессора 6.2.3. Очереди на выполнение 6.3. Понятия 6.3.1. Тактовая частота 6.3.2. Инструкции 6.3.3. Вычислительный конвейер 6.3.4. Ширина инструкций 6.3.5. Размеры инструкций 6.3.6. SMT 6.3.7. IPC, CPI 6.3.8. Потребление 6.3.9. Время в режиме пользователя/ядра 6.3.10. Насыщенность 6.3.11. Вытеснение 6.3.12. Инверсия приоритета 6.3.13. Несколько процессов, несколько потоков 6.3.14. Размер слова 6.3.15. Оптимизации компилятора 6.4. Архитектура 6.4.1. Аппаратное обеспечение 6.4.2. Программное обеспечение 6.5. Методология 6.5.1. Метод инструментов 6.5.2. Метод USE 6.5.3. Определение характеристик рабочей нагрузки 6.5.4. Профилирование 6.5.5. Анализ тактов 6.5.6. Мониторинг производительности 6.5.7. Статическая настройка производительности 6.5.8. Настройка приоритетов 6.5.9. Управление ресурсами 6.5.10. Привязка к процессору 6.5.11. Микробенчмаркинг 6.6. Инструменты наблюдения 6.6.1. uptime 6.6.2. vmstat 6.6.3. mpstat 6.6.4. sar 6.6.5. ps 6.6.6. top 6.6.7. pidstat 6.6.8. time, ptime 6.6.9. turbostat 6.6.10. showboost 6.6.11. pmcarch 6.6.12. tlbstat 6.6.13. perf 6.6.14. profile 6.6.15. cpudist 6.6.16. runqlat 6.6.17. runqlen 6.6.18. softirqs 6.6.19. hardirqs 6.6.20. bpftrace 6.6.21. Другие инструменты 6.7. Методы визуализации 6.7.1. Тепловая карта потребления 6.7.2. Тепловая карта с субсекундным смещением 6.7.3. Флейм-графики 6.7.4. FlameScope 6.8. Эксперименты 6.8.1. Ad hoc 6.8.2. SysBench 6.9. Настройка 6.9.1. Параметры компилятора 6.9.2. Приоритет и класс планирования 6.9.3. Параметры планировщика 6.9.4. Режимы масштабирования частоты 6.9.5. Состояния энергопотребления 6.9.6. Привязка к процессору 6.9.7. Исключительные процессорные наборы 6.9.8. Управление ресурсами 6.9.9. Параметры безопасной загрузки 6.9.10. Параметры процессора (настройка BIOS) 6.10. Упражнения 6.11. Ссылки Глава 7. Память 7.1. Терминология 7.2. Основные понятия 7.2.1. Виртуальная память 7.2.2. Подкачка страниц 7.2.3. Подкачка страниц по требованию 7.2.4. Чрезмерное выделение памяти 7.2.5. Подкачка процессов 7.2.6. Использование кэша файловой системы 7.2.7. Потребление и насыщение 7.2.8. Распределители 7.2.9. Разделяемая память 7.2.10. Размер рабочего набора 7.2.11. Размер слова 7.3. Архитектура 7.3.1. Аппаратное обеспечение 7.3.2. Программное обеспечение 7.3.3. Адресное пространство процесса 7.4. Методология 7.4.1. Метод инструментов 7.4.2. Метод USE 7.4.3. Определение характеристик потребления памяти 7.4.4. Анализ тактов 7.4.5. Мониторинг производительности 7.4.6. Выявление утечек 7.4.7. Статическая настройка производительности 7.4.8. Управление ресурсами 7.4.9. Микробенчмаркинг 7.4.10. Уменьшение потребления памяти 7.5. Инструменты наблюдения 7.5.1. vmstat 7.5.2. PSI 7.5.3. swapon 7.5.4. sar 7.5.5. slabtop 7.5.6. numastat 7.5.7. ps 7.5.8. top 7.5.9. pmap 7.5.10. perf 7.5.11. drsnoop 7.5.12. wss 7.5.13. bpftrace 7.5.14. Другие инструменты 7.6. Настройка 7.6.1. Настраиваемые параметры 7.6.2. Несколько размеров страниц 7.6.3. Распределители 7.6.4. Привязка NUMA 7.6.5. Управление ресурсами 7.7. Упражнения 7.8. Ссылки Глава 8. Файловые системы 8.1. Терминология 8.2. Модели 8.2.1. Интерфейсы файловых систем 8.2.2. Кэш файловой системы 8.2.3. Кэш второго уровня 8.3. Основные понятия 8.3.1. Задержки в файловой системе 8.3.2. Кэширование 8.3.3. Произвольный и последовательный ввод/вывод 8.3.4. Предварительная выборка 8.3.5. Упреждающее чтение 8.3.6. Кэширование с отложенной записью 8.3.7. Синхронная запись 8.3.8. Прямой и низкоуровневый ввод/вывод 8.3.9. Неблокирующий ввод/вывод 8.3.10. Файлы, отображаемые в память 8.3.11. Метаданные 8.3.12. Логический и физический ввод/вывод 8.3.13. Неравноценность операций 8.3.14. Специальные файловые системы 8.3.15. Доступ к отметкам времени 8.3.16. Емкость 8.4. Архитектура 8.4.1. Стек ввода-вывода файловой системы 8.4.2. VFS 8.4.3. Кэши файловой системы 8.4.4. Особенности файловых систем 8.4.5. Типы файловых систем 8.4.6. Тома и пулы 8.5. Методология 8.5.1. Анализ дисков 8.5.2. Анализ задержек 8.5.3. Определение характеристик рабочей нагрузки 8.5.4. Мониторинг производительности 8.5.5. Статическая настройка производительности 8.5.6. Настройка кэша 8.5.7. Разделение рабочей нагрузки 8.5.8. Микробенчмаркинг 8.6. Инструменты наблюдения 8.6.1. mount 8.6.2. free 8.6.3. top 8.6.4. vmstat 8.6.5. sar 8.6.6. slabtop 8.6.7. strace 8.6.8. fatrace 8.6.9. LatencyTOP 8.6.10. opensnoop 8.6.11. filetop 8.6.12. cachestat 8.6.13. ext4dist (xfs, zfs, btrfs, nfs) 8.6.14. ext4slower (xfs, zfs, btrfs, nfs) 8.6.15. bpftrace 8.6.17. Другие инструменты 8.6.18. Визуализация 8.7. Эксперименты 8.7.1. Ad hoc 8.7.2. Инструменты микробенчмаркинга 8.7.3. Очистка кэша 8.8. Настройка 8.8.1. Функции 8.8.2. ext4 8.8.3. ZFS 8.9. Упражнения 8.10. Ссылки Глава 9. Диски 9.1. Терминология 9.2. Модели 9.2.1. Простой диск 9.2.2. Кэширующие диски 9.2.3. Контроллер 9.3. Основные понятия 9.3.1. Измерение времени 9.3.2. Масштаб времени 9.3.3. Кэширование 9.3.4. Произвольный и последовательный ввод/вывод 9.3.5. Соотношение операций чтения и записи 9.3.6. Размер ввода/вывода 9.3.7. Несопоставимость количества операций в секунду 9.3.8. Дисковые команды, не связанные с передачей данных 9.3.9. Потребление 9.3.10. Насыщенность 9.3.11. Ожидание ввода/вывода 9.3.12. Синхронный и асинхронный ввод/вывод 9.3.13. Дисковый ввод/вывод и ввод/вывод в приложении 9.4. Архитектура 9.4.1. Типы дисков 9.4.2. Интерфейсы 9.4.3. Типы хранилищ 9.4.4. Стек дискового ввода/вывода в операционной системе 9.5. Методология 9.5.1. Метод инструментов 9.5.2. Метод USE 9.5.3. Мониторинг производительности 9.5.4. Определение характеристик рабочей нагрузки 9.5.5. Анализ задержек 9.5.6. Статическая настройка производительности 9.5.7. Настройка кэширования 9.5.8. Управление ресурсами 9.5.9. Микробенчмаркинг 9.5.10. Масштабирование 9.6. Инструменты наблюдения 9.6.1. iostat 9.6.2. sar 9.6.3. PSI 9.6.4. pidstat 9.6.5. perf 9.6.6. biolatency 9.6.7. biosnoop 9.6.8. iotop, biotop 9.6.9. biostacks 9.6.10. blktrace 9.6.11. bpftrace 9.6.12. MegaCli 9.6.13. smartctl 9.6.14. Журналирование SCSI 9.6.15. Другие инструменты 9.7. Визуализация 9.7.1. Линейные диаграммы 9.7.2. Диаграммы рассеяния задержек 9.7.3. Тепловые карты задержек 9.7.4. Тепловые карты смещений 9.7.5. Тепловые карты потребления 9.8. Эксперименты 9.8.1. Ad hoc 9.8.2. Пользовательские генераторы нагрузки 9.8.3. Инструменты микробенчмаркинга 9.8.4. Пример произвольного чтения 9.8.5. ioping 9.8.6. fio 9.8.7. blkreplay 9.9. Настройка 9.9.1. Параметры операционной системы 9.9.2. Настраиваемые параметры дисковых устройств 9.9.3. Настраиваемые параметры контроллера диска 9.10. Упражнения 9.11. Ссылки Глава 10. Сеть 10.1. Терминология 10.2. Модели 10.2.1. Сетевой интерфейс 10.2.2. Контроллер 10.2.3. Стек протоколов 10.3. Основные понятия 10.3.1. Сети и маршрутизация 10.3.2. Протоколы 10.3.3. Инкапсуляция 10.3.4. Размер пакета 10.3.5. Задержка 10.3.6. Буферизация 10.3.7. Очередь запросов на подключение 10.3.8. Согласование интерфейса 10.3.9. Предотвращение перегрузки 10.3.10. Потребление 10.3.11. Локальные подключения 10.4. Архитектура 10.4.1. Протоколы 10.4.2. Оборудование 10.4.3. Программное обеспечение 10.5. Методология 10.5.1. Метод инструментов 10.5.2. Метод USE 10.5.3. Определение характеристик рабочей нагрузки 10.5.4. Анализ задержек 10.5.5. Мониторинг производительности 10.5.6. Перехват пакетов 10.5.7. Анализ TCP 10.5.8. Статическая настройка производительности 10.5.9. Управление ресурсами 10.5.10. Микробенчмаркинг 10.6. Инструменты наблюдения 10.6.1. ss 10.6.2. ip 10.6.3. ifconfig 10.6.4. nstat 10.6.5 netstat 10.6.6. sar 10.6.7. nicstat 10.6.8. ethtool 10.6.9. tcplife 10.6.10. tcptop 10.6.11. tcpretrans 10.6.12. bpftrace 10.6.13. tcpdump 10.6.14. Wireshark 10.6.15. Другие инструменты 10.7. Эксперименты 10.7.1. ping 10.7.2. traceroute 10.7.3. pathchar 10.7.4. iperf 10.7.5. netperf 10.7.6. tc 10.7.7. Другие инструменты 10.8. Настройка 10.8.1. Общесистемные 10.8.2. Параметры сокетов 10.8.3. Конфигурация 10.9. Упражнения 10.10. Ссылки Глава 11. Облачные вычисления 11.1. Основы 11.1.1. Типы экземпляров 11.1.2. Масштабируемая архитектура 11.1.3. Планирование мощности 11.1.4. Хранилище 11.1.5. Мультиарендность 11.1.6. Оркестровка (Kubernetes) 11.2. Виртуализация оборудования 11.2.1. Реализация 11.2.2. Оверхед 11.2.3. Управление ресурсами 11.2.4. Наблюдаемость 11.3. Виртуализация операционной системы 11.3.1. Реализация 11.3.2. Оверхед 11.3.3. Управление ресурсами 11.3.4. Наблюдаемость 11.4. Легковесная виртуализация 11.4.1. Реализация 11.4.2. Оверхед 11.4.3. Управление ресурсами 11.4.4. Наблюдаемость 11.5. Другие типы виртуализации 11.6. Сравнение 11.7. Упражнения 11.8. Ссылки Глава 12. Бенчмаркинг 12.1. Основы 12.1.1. Причины 12.1.2. Эффективный бенчмаркинг 12.1.3. Проблемы бенчмаркинга 12.2. Типы бенчмаркинга 12.2.1. Микробенчмаркинг 12.2.2. Моделирование 12.2.3. Воспроизведение 12.2.4. Отраслевые стандарты 12.3. Методология 12.3.1 Пассивный бенчмаркинг 12.3.2. Активный бенчмаркинг 12.3.3. Профилирование процессора 12.3.4. Метод USE 12.3.5. Определение характеристик рабочей нагрузки 12.3.6. Собственный бенчмаркинг 12.3.7. Пиковая нагрузка 12.3.8. Проверка правильности 12.3.9. Статистический анализ 12.3.10. Чек-лист бенчмаркинга 12.4. Вопросы о бенчмаркинге 12.5. Упражнения 12.6. Ссылки Глава 13. perf 13.1. Обзор подкоманд 13.2. Однострочные сценарии 13.3. События perf 13.4. Аппаратные события 13.4.1. Дискретная выборка 13.5. Программные события 13.6. События точек трассировки 13.7. События зондов 13.7.1. kprobes 13.7.2. uprobes 13.7.3. USDT 13.8. perf stat 13.8.1. Параметры 13.8.2. Интервальные статистики 13.8.3. Баланс между процессорами 13.8.4. Фильтрация событий 13.8.5. Теневые статистики 13.9. perf record 13.9.1. Параметры 13.9.2. Профилирование процессора 13.9.3. Обход стека 13.10. perf report 13.10.1. TUI 13.10.2. STDIO 13.11. perf script 13.11.1. Флейм-графики 13.11.2. Сценарии обработки трассировок 13.12. perf trace 13.12.1. Версии ядра 13.13. Другие команды 13.14. Документация perf 13.15. Ссылки Глава 14. Ftrace 14.1. Обзор возможностей 14.2. tracefs (/sys) 14.2.1. Содержимое tracefs 14.3. Профилировщик функций 14.4. Трассировщик function 14.4.1. Использование файла trace 14.4.2. Использование файла trace_pipe 14.4.3. Параметры 14.5. Точки трассировки 14.5.1. Фильтрация 14.5.2. Триггеры 14.6. Зонды kprobes 14.6.1. Трассировка событий 14.6.2. Аргументы 14.6.3. Возвращаемые значения 14.6.4. Фильтры и триггеры 14.6.5. Профилировщик kprobe 14.7. Зонды uprobes 14.7.1. Трассировка событий 14.7.2. Аргументы и возвращаемые значения 14.7.3. Фильтры и триггеры 14.7.4. Профилировщик uprobe 14.8. Трассировщик function_graph 14.8.1. Трассировка графа 14.8.2. Параметры 14.9. Трассировщик hwlat 14.10. Триггеры hist 14.10.1. Гистограмма с единственным ключом 14.10.2. Поля 14.10.3. Модификаторы 14.10.4. Фильтры PID 14.10.5. Гистограмма с несколькими ключами 14.10.6 Трассировки стека в роли ключей 14.10.7. Синтетические события 14.11. trace-cmd 14.11.1. Обзор подкоманд 14.11.2. Однострочные сценарии для trace-cmd 14.11.3. Сравнение trace-cmd и perf(1) 14.11.4. trace-cmd function_graph 14.11.5. KernelShark 14.11.6. Документация для trace-cmd 14.12. perf ftrace 14.13. perf-tools 14.13.1. Покрытие инструментами 14.13.2. Специализированные инструменты 14.13.3. Многоцелевые инструменты 14.13.4. Однострочные сценарии для perf-tools 14.13.5. Пример 14.13.6. Сравнение perf-tools и BCC/BPF 14.13.7. Документация 14.14. Документация для Ftrace 14.15. Ссылки Глава 15. BPF 15.1. BCC 15.1.1. Установка 15.1.2. Покрытие инструментами 15.1.3. Специализированные инструменты 15.1.4. Многоцелевые инструменты 15.1.5. Однострочные сценарии 15.1.6. Пример многоцелевого инструмента 15.1.7. Сравнение BCC и bpftrace 15.1.8. Документация 15.2. bpftrace 15.2.1. Установка 15.2.2. Инструменты 15.2.3. Однострочные сценарии 15.2.4. Программирование 15.2.5. Справочник 15.2.6. Документация 15.3. Ссылки Глава 16. Пример из практики 16.1. Необъяснимый выигрыш 16.1.1. Постановка задачи 16.1.2. Стратегия анализа 16.1.3. Статистики 16.1.4. Конфигурация 16.1.5. Счетчики PMC 16.1.6. Программные события 16.1.7. Трассировка 16.1.8. Заключение 16.2. Дополнительная информация 16.3. Ссылки Приложение A. Метод USE: Linux Приложение B. Краткий справочник по sar Приложение C. Однострочные сценарии для bpftrace Приложение D. Решения некоторых упражнений Приложение E. Производительность систем, кто есть кто Глоссарий

Similar books