perf не работает над действительно большим процессом

Я часто использую perf для профилирования своих приложений. Недавно я получил несколько новых машин с ~ 750G RAM каждый. Я пытаюсь профилировать процесс, который использует около 400 ГБ памяти на одном из них. Это отлично работает на всех новых машинах, кроме одного. Все они были установлены одинаково, запуская ubuntu.

Я попробовал оба perf как установлено через apt-get и скомпилировал свой собственный из git .

При запуске ./perf top -p 14182 мне удается получить результаты (после долгого ожидания и очень редко), но чаще всего я получаю:

 The sys_perf_event_open() syscall returned with 3 (No such process) for event (cycles:pp). /bin/dmesg may provide additional information. No CONFIG_PERF_EVENTS=y kernel support configured? 

Для того же pid (!).

У меня возникают аналогичные проблемы при попытке записи, например:

 time ./perf record -F 111 -a -g -p 14182 -- sleep 3 Warning: PID/TID switch overriding SYSTEMsleep: Terminated Command exited with non-zero status 255 2.66user 91.58system 1:36.68elapsed 97%CPU (0avgtext+0avgdata 4896maxresident)k 0inputs+5248outputs (0major+4847minor)pagefaults 0swaps 

Эта команда занимает больше 3 секунд, я не могу ctrl + c, и для ее убийства требуется -9 . Он испускает некоторые данные в perf.data но когда я пытаюсь его просмотреть, у меня нет file has no samples .

Все работает отлично на других (меньших) процессах на этой машине, и, как я упоминал ранее, это отлично работает на остальных машинах, для процессов весом около 200G. Когда я запускаю предыдущую команду на других машинах, она также использует намного меньше процессора (33%, а не 97%).

Я не уверен, где еще искать, и Google не очень помог мне. Любые идеи или направления?

редактировать

Видя, насколько высока система, я запускал ее с помощью strace -c , вот что я получаю:

Другие машины с весом ~ 200G:

 _ strace -c perf record -F 111 -a -g -p 27879 -- sleep 3 Warning: PID/TID switch overriding SYSTEM[ perf record: Woken up 1 times to write data ] [ perf record: Captured and wrote 0.684 MB perf.data (~29876 samples) ] % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 91.43 2.548664 109 23481 read 2.47 0.068712 11 6457 15 stat 2.42 0.067392 9 7303 write 0.68 0.018960 12 1646 getdents 0.68 0.018841 22 847 1 mmap 

Эта машина с весом ~ 400G:

 _ strace -c perf record -F 111 -a -g -p 14182 -- sleep 3 /tmpvaknins9@snlp-brevis-3 Warning: PID/TID switch overriding SYSTEMsleep: Terminated sleep: Terminated % time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 99.70 131.243199 472 278178 read 0.16 0.207757 8 25895 write 0.04 0.048962 8 6398 5 stat 0.02 0.031247 14 2217 mmap 0.02 0.026385 9 3091 close 

Кажется, много времени тратится на чтение /proc/tid/maps|status . Возможно, мой процесс просто слишком велик? Какие-нибудь подсказки, как я могу все-таки заставить его записать этот процесс?

Благодаря!

One Solution collect form web for “perf не работает над действительно большим процессом”

Я испытал нечто подобное, но менее серьезное.

В моем случае я бы получил ошибку CONFIG_PERF_EVENTS возможно, в 10% случаев. В остальное время perf record будет завершен без ошибок, но он не смог бы записать какие-либо образцы (просмотр выходного файла с perf report будет perf report «файл не имеет образцов», а perf report -D ... | grep -c RECORD_SAMPLE подтвердит отсчет нуля).

Следуя советам в этой статье stackoverflow , я добавил параметр -e cpu-clock в perf record . Это не исправило ошибку CONFIG_PERF_EVENTS, и perf record прежнему будет принимать 2x-4x, если бы я указал через sleep но, по крайней мере, это сработало. Может быть, это тоже поможет.

  • Не удается связаться с DNS через беспроводной маршрутизатор
  • Я компилирую исходный код Ubuntu в Red Hat System?
  • Почему два сценария работают для пробуждения от приостановки?
  • Вентилятор Ubuntu и Asus n552vw cpu всегда высок
  • Как модули ядра Linux становятся доступными в пакете ядра Linux-дистрибутива?
  • Цвета неправильны в вине с новым сервером x с 8-битным цветом
  • grub показывает несколько версий ядра при запуске
  • Как работает подсветка экрана?
  • Как я могу запускать локальные приложения через firejail?
  • Монитор, показывающий тот же рабочий стол дважды
  • потерянная папка из / mnt и восстановление
  • Linux и Unix - лучшая ОС в мире.