Perf - системный мониторинг
Модератор: Olej
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Но он стоит того и независимо от чего либо...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Код: Выделить всё
olej@R420:~$ apt contains perf | grep "\/perf"$
cinnamon-common: /usr/share/cinnamon/js/perf
linux-headers-5.15.0-75-generic: /usr/src/linux-headers-5.15.0-75-generic/tools/perf
linux-headers-5.15.0-75: /usr/src/linux-headers-5.15.0-75/arch/powerpc/perf
linux-headers-5.15.0-75: /usr/src/linux-headers-5.15.0-75/drivers/perf
linux-headers-5.15.0-75: /usr/src/linux-headers-5.15.0-75/include/linux/perf
linux-headers-5.15.0-75: /usr/src/linux-headers-5.15.0-75/tools/lib/perf
linux-headers-5.15.0-75: /usr/src/linux-headers-5.15.0-75/tools/perf
linux-headers-5.15.0-76-generic: /usr/src/linux-headers-5.15.0-76-generic/tools/perf
linux-headers-5.15.0-76: /usr/src/linux-headers-5.15.0-76/arch/powerpc/perf
linux-headers-5.15.0-76: /usr/src/linux-headers-5.15.0-76/drivers/perf
linux-headers-5.15.0-76: /usr/src/linux-headers-5.15.0-76/include/linux/perf
linux-headers-5.15.0-76: /usr/src/linux-headers-5.15.0-76/tools/lib/perf
linux-headers-5.15.0-76: /usr/src/linux-headers-5.15.0-76/tools/perf
linux-tools-5.15.0-76-generic: /usr/lib/linux-tools/5.15.0-76-generic/perf
linux-tools-5.15.0-76: /usr/lib/linux-tools-5.15.0-76/perf
linux-tools-common: /usr/bin/perf
Код: Выделить всё
olej@R420:~$ aptitude show linux-tools-common
Пакет: linux-tools-common
Версия: 5.15.0-76.83
Новый: да
Состояние: установлен
Установлен автоматически: нет
Мультиархитектура: сторонняя
Приоритет: необязательный
Раздел: kernel
Сопровождающий: Ubuntu Kernel Team <kernel-team@lists.ubuntu.com>
Архитектура: all
Размер в распакованном виде: 850 k
Зависит: lsb-release
Описание: Linux kernel version specific tools for version 5.15.0
This package provides the architecture independent parts for kernel version locked tools (such as perf and x86_energy_perf_policy) for version 5.15.0.
Код: Выделить всё
olej@R420:~$ sudo apt install linux-tools-5.15.0-76 linux-tools-5.15.0-76-generic
Чтение списков пакетов… Готово
Построение дерева зависимостей… Готово
Чтение информации о состоянии… Готово
Следующие НОВЫЕ пакеты будут установлены:
linux-tools-5.15.0-76 linux-tools-5.15.0-76-generic
Обновлено 0 пакетов, установлено 2 новых пакетов, для удаления отмечено 0 пакетов, и 2 пакетов не обновлено.
Необходимо скачать 7.940 kB архивов.
После данной операции объём занятого дискового пространства возрастёт на 27,3 MB.
Пол:1 http://ubuntu.volia.net/ubuntu-archive jammy-updates/main amd64 linux-tools-5.15.0-76 amd64 5.15.0-76.83 [7.938 kB]
Пол:2 http://ubuntu.volia.net/ubuntu-archive jammy-updates/main amd64 linux-tools-5.15.0-76-generic amd64 5.15.0-76.83 [1.792 B]
Получено 7.940 kB за 6с (1.335 kB/s)
Выбор ранее не выбранного пакета linux-tools-5.15.0-76.
(Чтение базы данных … на данный момент установлен 553951 файл и каталог.)
Подготовка к распаковке …/linux-tools-5.15.0-76_5.15.0-76.83_amd64.deb …
Распаковывается linux-tools-5.15.0-76 (5.15.0-76.83) …
Выбор ранее не выбранного пакета linux-tools-5.15.0-76-generic.
Подготовка к распаковке …/linux-tools-5.15.0-76-generic_5.15.0-76.83_amd64.deb …
Распаковывается linux-tools-5.15.0-76-generic (5.15.0-76.83) …
Настраивается пакет linux-tools-5.15.0-76 (5.15.0-76.83) …
Настраивается пакет linux-tools-5.15.0-76-generic (5.15.0-76.83) …
Код: Выделить всё
olej@R420:~$ perf -v
perf version 5.15.99
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
admin11 мая 2021
Perf — это один из инструментов Linux, который вы можете использовать для получения подробной информации о проверке работоспособности и текущего положения в вашей системе. Perf — один из наиболее часто используемых и надежных инструментов системного мониторинга для сбора информации о ядре Linux, процессоре и оборудовании. Кроме того, он также может выполнять динамическую трассировку, проверять состояние оборудования и предоставлять отчеты о тестах производительности на машине Linux.
Затем выполните следующую команду aptitude, приведенную ниже, чтобы установить общие инструменты Linux на свой компьютер. Следующая команда требует привилегий root; убедитесь, что вы являетесь пользователем root. Когда установка завершится, вы можете найти пакеты Perf в каталоге /usr/bin/perf.Код: Выделить всё
sudo apt install linux-tools-common
Поскольку Perf — это общий пакет Linux, убедитесь, что Perf совместим с вашим ядром Linux. Чтобы проверить ядро вашей системы, выполните следующую команду. Взамен вы получите версию своего ядра.Теперь запишите версию своего ядра и напишите команду терминала, показанную ниже, для установки общих инструментов Linux, подходящих для вашего ядра.Код: Выделить всё
uname -r
Код: Выделить всё
sudo apt-get install linux-tools-5.8.0-50
Код: Выделить всё
olej@R420:~$ perf -v
perf version 5.15.99
Код: Выделить всё
olej@R420:~$ sudo perf stat ls -ld /etc/
[sudo] пароль для olej:
drwxr-xr-x 193 root root 12288 июл 12 23:54 /etc/
Performance counter stats for 'ls -ld /etc/':
1,70 msec task-clock # 0,640 CPUs utilized
2 context-switches # 1,179 K/sec
0 cpu-migrations # 0,000 /sec
110 page-faults # 64,859 K/sec
3.430.888 cycles # 2,023 GHz
2.510.452 stalled-cycles-frontend # 73,17% frontend cycles idle
1.972.721 instructions # 0,57 insn per cycle
# 1,27 stalled cycles per insn
384.229 branches # 226,552 M/sec
16.865 branch-misses # 4,39% of all branches
0,002651840 seconds time elapsed
0,002458000 seconds user
0,000000000 seconds sys
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Как установить и настроить Perf в дистрибутивах Linux
admin11 мая 2021
Вы не можете найти много инструментов, чтобы узнать общее состояние системы; найти приложение, которое может генерировать подробную информацию о состоянии системы в реальном времени, сложно. Perf — это один из инструментов Linux, который вы можете использовать для получения подробной информации о проверке работоспособности и текущего положения в вашей системе.
В Linux инструмент Perf может анализировать ядро, приложения, системные библиотеки, события программного обеспечения с помощью команд и подкоманд. Его также можно использовать как PMU (блок мониторинга производительности) в Linux. Инструмент Perf написан на языке программирования C и построен под лицензией GNU GL.
Код: Выделить всё
olej@R420:~$ perf --version
perf version 5.15.99
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
July 21, 2022
На своём домашнем компьютере вполне могу себе позволить, чтобы без root:Allow Regular Users to Use perf
Код: Выделить всё
olej@R420:~$ sudo su -
[sudo] пароль для olej:
Код: Выделить всё
root@R420:~# echo 0 > /proc/sys/kernel/perf_event_paranoid
root@R420:~# cat /proc/sys/kernel/perf_event_paranoid
0
Код: Выделить всё
olej@R420:~$ grep -v ^# /etc/sysctl.conf | grep -v ^$
vm.swappiness=5
Код: Выделить всё
root@R420:~# echo "kernel.perf_event_paranoid = 0" >> /etc/sysctl.conf
Код: Выделить всё
olej@R420:~$ grep -v ^# /etc/sysctl.conf | grep -v ^$
vm.swappiness=5
kernel.perf_event_paranoid = 0
Код: Выделить всё
olej@R420:~$ perf stat ls -ld /etc/
drwxr-xr-x 192 root root 12288 авг 10 11:29 /etc/
Performance counter stats for 'ls -ld /etc/':
1,87 msec task-clock # 0,572 CPUs utilized
4 context-switches # 2,143 K/sec
1 cpu-migrations # 535,646 /sec
103 page-faults # 55,172 K/sec
5.183.579 cycles # 2,777 GHz
4.229.204 stalled-cycles-frontend # 81,59% frontend cycles idle
2.019.878 instructions # 0,39 insn per cycle
# 2,09 stalled cycles per insn
395.428 branches # 211,809 M/sec
20.344 branch-misses # 5,14% of all branches
0,003263621 seconds time elapsed
0,000000000 seconds user
0,002993000 seconds sys
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Но этого мало
Как установить и настроить Perf в дистрибутивах Linux
Вот так записываются в файл события Perf:11 мая 2021
Код: Выделить всё
olej@R420:~$ perf record df -h
WARNING: Kernel address maps (/proc/{kallsyms,modules}) are restricted,
check /proc/sys/kernel/kptr_restrict and /proc/sys/kernel/perf_event_paranoid.
Samples in kernel functions may not be resolved if a suitable vmlinux
file is not found in the buildid cache or in the vmlinux path.
Samples in kernel modules won't be resolved at all.
If some relocation was applied (e.g. kexec) symbols may be misresolved
even with a suitable vmlinux or kallsyms file.
Couldn't record kernel reference relocation symbol
Symbol resolution may be skewed if relocation was used (e.g. kexec).
Check /proc/kallsyms permission or run as root.
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
tmpfs 9,5G 2,1M 9,5G 1% /run
/dev/sda5 109G 47G 57G 46% /
tmpfs 48G 8,0K 48G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/sda1 511M 3,3M 508M 1% /boot/efi
/dev/sdc3 576G 400G 148G 74% /mnt/sdc3
/dev/sdc2 910G 29G 836G 4% /mnt/sdc2
/dev/nvme0n1p1 229G 81G 136G 38% /home
/dev/sdb2 229G 107G 111G 50% /home/olej/Загрузки
tmpfs 9,5G 1,7M 9,5G 1% /run/user/1000
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0,002 MB perf.data (16 samples) ]
Код: Выделить всё
olej@R420:~$ ls -l perf.data
-rw------- 1 olej olej 22492 авг 10 16:04 perf.data
Код: Выделить всё
olej@R420:~$ file perf.data
perf.data: data
Код: Выделить всё
olej@R420:~$ perf report -i perf.data
Samples: 16 of event 'cycles', Event count (approx.): 5023705
Overhead Command Shared Object Symbol
15,25% df [unknown] [k] 0xffffffff83ea5997
15,18% df ld-linux-x86-64.so.2 [.] _dl_relocate_object
15,17% df libc.so.6 [.] __vfscanf_internal
15,08% df libc.so.6 [.] __gconv_transform_utf8_internal
15,00% df [unknown] [k] 0xffffffff83b8e4a9
13,85% df ld-linux-x86-64.so.2 [.] handle_intel.constprop.0
8,07% df [unknown] [k] 0xffffffff838a25a5
1,94% perf-ex [unknown] [k] 0xffffffff83aa21e0
0,39% perf-ex [unknown] [k] 0xffffffff838a2829
0,07% perf-ex [unknown] [k] 0xffffffff83faf96e
0,01% perf-ex [unknown] [k] 0xffffffff8381258c
0,00% perf-ex [unknown] [k] 0xffffffff83895ee4
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/eBPF$ cat /proc/sys/kernel/kptr_restrict
1
Код: Выделить всё
olej@R420:~/2023/own.BOOKs/eBPF$ cat /proc/sys/kernel/perf_event_paranoid
0
Код: Выделить всё
root@R420:~# echo 0 > /proc/sys/kernel/kptr_restrict
root@R420:~# cat /proc/sys/kernel/kptr_restrict
0
Код: Выделить всё
olej@R420:~$ perf record df -h
Файл.система Размер Использовано Дост Использовано% Cмонтировано в
tmpfs 9,5G 2,1M 9,5G 1% /run
/dev/sda5 109G 47G 57G 46% /
tmpfs 48G 8,0K 48G 1% /dev/shm
tmpfs 5,0M 4,0K 5,0M 1% /run/lock
/dev/sda1 511M 3,3M 508M 1% /boot/efi
/dev/sdc3 576G 400G 148G 74% /mnt/sdc3
/dev/sdc2 910G 29G 836G 4% /mnt/sdc2
/dev/nvme0n1p1 229G 81G 136G 38% /home
/dev/sdb2 229G 107G 111G 50% /home/olej/Загрузки
tmpfs 9,5G 1,7M 9,5G 1% /run/user/1000
[ perf record: Woken up 1 times to write data ]
[ perf record: Captured and wrote 0,013 MB perf.data (16 samples) ]
Код: Выделить всё
olej@R420:~$ ls -l perf.data
-rw------- 1 olej olej 34440 авг 10 16:11 perf.data
Код: Выделить всё
olej@R420:~$ perf report -i perf.data
Samples: 16 of event 'cycles', Event count (approx.): 4788745
Overhead Command Shared Object Symbol
15,10% df [kernel.kallsyms] [k] syscall_return_via_sysret
15,08% df [kernel.kallsyms] [k] fuse_show_options
15,05% df [kernel.kallsyms] [k] clear_page_erms
15,00% df ld-linux-x86-64.so.2 [.] do_lookup_x
14,78% df ld-linux-x86-64.so.2 [.] _dl_relocate_object
13,55% df [kernel.kallsyms] [k] error_entry
8,51% df [kernel.kallsyms] [k] __vma_adjust
2,41% df [kernel.kallsyms] [k] perf_output_begin
0,43% perf-ex [kernel.kallsyms] [k] set_pte_vaddr_p4d
0,07% perf-ex [kernel.kallsyms] [k] acpi_os_read_memory
0,01% perf-ex [kernel.kallsyms] [k] native_sched_clock
0,00% perf-ex [kernel.kallsyms] [k] native_write_msr
И его детализация тоже
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Код: Выделить всё
olej@R420:~$ perf bench --help
...
SUBSYSTEM
sched
Scheduler and IPC mechanisms.
syscall
System call performance (throughput).
mem
Memory access performance.
numa
NUMA scheduling and MM benchmarks.
futex
Futex stressing benchmarks.
epoll
Eventpoll (epoll) stressing benchmarks.
internals
Benchmark internal perf functionality.
all
All benchmark subsystems.
...
Код: Выделить всё
olej@R420:~$ perf bench mem --help
# List of available benchmarks for collection 'mem':
memcpy: Benchmark for memcpy() functions
memset: Benchmark for memset() functions
find_bit: Benchmark for find_bit() functions
all: Run all memory access benchmarks
Код: Выделить всё
olej@R420:~$ perf bench mem all
# Running mem/memcpy benchmark...
# function 'default' (Default memcpy() provided by glibc)
# Copying 1MB bytes ...
3.100198 GB/sec
# function 'x86-64-unrolled' (unrolled memcpy() in arch/x86/lib/memcpy_64.S)
# Copying 1MB bytes ...
10.279605 GB/sec
# function 'x86-64-movsq' (movsq-based memcpy() in arch/x86/lib/memcpy_64.S)
# Copying 1MB bytes ...
8.959289 GB/sec
# function 'x86-64-movsb' (movsb-based memcpy() in arch/x86/lib/memcpy_64.S)
# Copying 1MB bytes ...
13.377568 GB/sec
# Running mem/memset benchmark...
# function 'default' (Default memset() provided by glibc)
# Copying 1MB bytes ...
21.701389 GB/sec
# function 'x86-64-unrolled' (unrolled memset() in arch/x86/lib/memset_64.S)
# Copying 1MB bytes ...
11.625744 GB/sec
# function 'x86-64-stosq' (movsq-based memset() in arch/x86/lib/memset_64.S)
# Copying 1MB bytes ...
22.194602 GB/sec
# function 'x86-64-stosb' (movsb-based memset() in arch/x86/lib/memset_64.S)
# Copying 1MB bytes ...
20.345052 GB/sec
# Running mem/find_bit benchmark...
100000 operations 1 bits set of 1 bits
Average for_each_set_bit took: 1520.200 usec (+- 117.069 usec)
Average test_bit loop took: 706.600 usec (+- 87.025 usec)
100000 operations 1 bits set of 2 bits
Average for_each_set_bit took: 1535.400 usec (+- 18.071 usec)
Average test_bit loop took: 859.600 usec (+- 12.766 usec)
100000 operations 2 bits set of 2 bits
Average for_each_set_bit took: 2032.100 usec (+- 165.955 usec)
Average test_bit loop took: 1047.100 usec (+- 62.869 usec)
100000 operations 1 bits set of 4 bits
Average for_each_set_bit took: 1690.400 usec (+- 156.279 usec)
Average test_bit loop took: 1504.800 usec (+- 138.737 usec)
100000 operations 2 bits set of 4 bits
Average for_each_set_bit took: 2144.200 usec (+- 168.424 usec)
Average test_bit loop took: 1597.600 usec (+- 72.577 usec)
100000 operations 4 bits set of 4 bits
Average for_each_set_bit took: 3108.600 usec (+- 392.680 usec)
Average test_bit loop took: 1847.933 usec (+- 106.027 usec)
...
- Olej
- Писатель
- Сообщения: 21338
- Зарегистрирован: 24 сен 2011, 14:22
- Откуда: Харьков
- Контактная информация:
Perf - системный мониторинг
Чтобы отобразить статистику производительности ЦП для всех стандартных аппаратных и программных событий для всех ЦП, выполните:
Код: Выделить всё
olej@R420:~$ perf stat -a sleep 5
Performance counter stats for 'system wide':
200.265,93 msec cpu-clock # 40,004 CPUs utilized
90.577 context-switches # 452,284 /sec
2.511 cpu-migrations # 12,538 /sec
37.486 page-faults # 187,181 /sec
78.322.121.843 cycles # 0,391 GHz
121.144.424.936 stalled-cycles-frontend # 154,67% frontend cycles idle
98.507.608.074 instructions # 1,26 insn per cycle
# 1,23 stalled cycles per insn
5.527.719.743 branches # 27,602 M/sec
105.938.946 branch-misses # 1,92% of all branches
5,006137048 seconds time elapsed
Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей