3. Современный сервис
Сервис – система состоящая из N узлов.
Система может быть распределённая.
Узкие места могут быть как у узла, так и у системы в целов.
Узел:
• процессор;
• память;
• диск.
Система:
• сеть.
3
4. Роль системного администратора
• Планировать ёмкость системы и строить архитектуру сервиса и
инфраструктуру;
• производить деплой и обновление программ;
• поиск узких мест и оптимизация как приложения так и ОС;
• реагирование на возникающие инциденты (активное и реактивное).
4
5. Документация – главный инструмент
Документация:
• man <command>
• info / pinfo
• /usr/share/doc/
!
А если её нет?
• Код – хорошая документация (git, svn);
• инструменты отладки: ldd, strace, ltrace, gdb, objdump и т.п.
5
12. Типы инструментов
• Счётчики;
• трассировка;
• профилирование – серия снимков (snapshot) системы целиком или
процесса.
12
13. Счётчики
Бесплатные – не добавляют накладных расходов, как при сборе так
и при использовании.
Как правило, целочисленные беззнаковые (unsigned integers), которые
увеличиваются при наступлении события. К примеру, счётчики
количества принятых сетевых пакетов, сколько было произведено
дисковых операций и системных вызовов.
Общесистемные
К примеру vmstat, iostat, netstat, sar.
На основе счётчики из /proc, /sys.
На каждый процесс
ps, top …
Как правило читают из /proc.
13
14. Трассировка
Трассировка – сбор данных событий для дальнейшего анализа.
Трассировка, как правило не включена по умолчанию, так как добавляет
накладные расходы на процессор и может потребовать значительного
места для сохранения данных.
Логи могут быть названы инструментами трассировки в каком-то
приближении, включенными по умолчанию в большинстве приложений.
Общесистемные
tcpdump, blktrace, SystemTap, perf.
Собирают данные при помощи: libpcap, tracepoints, kprobes, ftrace…
На каждый процесс
strace, gdb.
14
16. CPU (1)
Нагрузка на процессор измеряется в процентах от времени, когда он
был занят выполнением работы за интервал.
Она также может быть измерена как время, когда процессор не
выполнял поток ядра называемый idle, а был занят выполнением
приложений, других потоков ядра или обслуживанием прерываний.
CPU делят на User-Time/Kernel-Time.
16
17. CPU (2)
• uptime – показывает среднюю нагрузку (load average) для понимания
характера нагрузки на процессор и систему (растёт/падает);
• vmstat – запустив утилиту с интервалов в 1 секунду, можно, к
примеру, увидеть сколько запаса по процессору осталось;
• top – показывает какой процесс и пользователь потребляет больше
всех процессорного времени.
• pidstat – показывает как именно используется процессор в разрезе
user и system time.
• sar -q – показывает величину очереди на выполнение (run-queue).
17
19. Память (2)
• vmstat – выводит общесистемную статистику использования
виртуальной и физической памяти;
• sar:
◦ -B – статистика paging;
◦ -H: – статистика huge pages;
◦ -r: – использование памяти.
• ps;
• top;
• free;
• valgrind.
19
20. Память (3)
Cчётчики:
• /proc/meminfo – общесистемные счётчики памяти;
• /proc/zoneinfo – статистика по зонам памяти (NUMA ноды).
20
21. Дисковое IO (1)
Дисковое I/O может приводить к значительному уменьшению времени
отклика приложения и теоритически важнейшая цель анализа
производительности системы.
Под высокой нагрузкой диски становятся узким местом, оставляя
процессор простаивать в ожидании окончания операций ввода-
вывода.
Нагрузка на дисковую подсистему может быть рассчитана как время,
когда диск был нагружен выполнением работы, за интервал.
Диск используется на 0%, т.е. простаивает, и на 100% – непрерывно
выполняет операции ввода-вывода и другие команды.
Диск в 100% использовании источник проблем с
производительностью.
Однако любой показатель использования диска может быть причиной
плохой производительности приложения хотя бы потому, что он
самый медленный элемент в системе.
21
22. Дисковое IO (2)
!
I/O wait – метрика каждого CPU, которая показывает время
проведённое в статусе idle в ожидании дисковой операции.
I/O wait делит время CPU idle на время, когда нечего было делать, и
время, когда процессор был заблокирован на дисковом I/O.
Высокие показатели I/O wait говорят о том, что диск может быть узким
местом, и недогруженным CPU.
Однако с IO wait нужно быть осторожным.
22