perf-trace - ອອນລາຍໃນຄລາວ

ນີ້ແມ່ນຄໍາສັ່ງ perf-trace ທີ່ສາມາດດໍາເນີນການໄດ້ໃນ OnWorks ຜູ້ໃຫ້ບໍລິການໂຮດຕິ້ງຟຣີໂດຍໃຊ້ຫນຶ່ງໃນຫຼາຍໆບ່ອນເຮັດວຽກອອນໄລນ໌ຂອງພວກເຮົາເຊັ່ນ Ubuntu Online, Fedora Online, Windows online emulator ຫຼື MAC OS online emulator

ໂຄງການ:

NAME


perf-trace - ເຄື່ອງມືທີ່ໄດ້ຮັບການດົນໃຈ strace

ສະຫຼຸບສັງລວມ


ງາມ trace
ງາມ trace ການບັນທຶກ

ລາຍລະອຽດ


ຄໍາສັ່ງນີ້ຈະສະແດງເຫດການທີ່ກ່ຽວຂ້ອງກັບເປົ້າຫມາຍ, ໃນເບື້ອງຕົ້ນ syscalls, ແຕ່
ເຫດການລະບົບອື່ນໆເຊັ່ນ: ຄວາມຜິດຂອງໜ້າ, ເຫດການຕະຫຼອດຊີວິດຂອງໜ້າວຽກ, ເຫດການກຳນົດເວລາ, ແລະອື່ນໆ.

ນີ້​ແມ່ນ​ເປັນ​ເຄື່ອງ​ມື​ຮູບ​ແບບ​ສົດ​ນອກ​ເຫນືອ​ໄປ​ຈາກ​ການ​ເຮັດ​ວຽກ​ຮ່ວມ​ກັບ​ໄຟລ​໌ perf.data ຄື perf ອື່ນໆ​
ເຄື່ອງ​ມື. ໄຟລ໌ສາມາດຖືກສ້າງຂື້ນໂດຍໃຊ້ ງາມ ການບັນທຶກ ຄໍາສັ່ງແຕ່ກອງປະຊຸມຕ້ອງການ
ປະກອບມີເຫດການ raw_syscalls (-e raw_syscalls:*). ອີກທາງເລືອກ, ງາມ trace ການບັນທຶກ ສາມາດເຮັດໄດ້
ຖືກນໍາໃຊ້ເປັນທາງລັດເພື່ອລວມເອົາເຫດການ raw_syscalls ໂດຍອັດຕະໂນມັດໃນເວລາຂຽນເຫດການ
ໄປຫາໄຟລ໌.

ຕົວເລືອກຕໍ່ໄປນີ້ໃຊ້ກັບ perf trace; ທາງ ເລືອກ ໃນ ການ perf ການ ບັນ ທຶກ ການ ຕິດ ຕາມ ແມ່ນ ພົບ ເຫັນ ຢູ່ ໃນ
perf record man page.

OPTIONS


-a, --all-cpu
ການເກັບກໍາທົ່ວລະບົບຈາກ CPU ທັງຫມົດ.

-e, --expr
ບັນຊີລາຍຊື່ຂອງ syscalls ທີ່ຈະສະແດງ, ໃນປັດຈຸບັນມີພຽງແຕ່ຊື່ syscall. ຄຳນຳໜ້າດ້ວຍ ! ສະແດງໃຫ້ເຫັນທັງຫມົດ
syscalls ແຕ່ສິ່ງທີ່ລະບຸໄວ້. ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ຫນີມັນ.

-o, --output=
ຊື່ໄຟລ໌ທີ່ອອກມາ.

-p, --pid=
ບັນທຶກເຫດການຢູ່ໃນ ID ຂະບວນການທີ່ມີຢູ່ແລ້ວ (ບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ).

-t, --tid=
ບັນທຶກເຫດການຢູ່ໃນ ID ກະທູ້ທີ່ມີຢູ່ແລ້ວ (ບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ).

-u, --uid=
ບັນທຶກເຫດການໃນຫົວຂໍ້ທີ່ເປັນເຈົ້າຂອງໂດຍ uid. ຊື່ ຫຼື ເລກ.

--filter-pids=
ກັ່ນຕອງອອກເຫດການສໍາລັບ pids ເຫຼົ່ານີ້ແລະສໍາລັບ trace ຕົວຂອງມັນເອງ (ບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດ).

-v, --verbose=
ລະດັບຄວາມເວົ້າ.

-- ບໍ່ມີມໍລະດົກ
ວຽກງານຂອງເດັກນ້ອຍບໍ່ໄດ້ສືບທອດ counters.

-m, --mmap-pages=
ຈຳນວນໜ້າຂໍ້ມູນ mmap (ຕ້ອງເປັນກຳລັງຂອງສອງ) ຫຼືຂະໜາດສະເພາະທີ່ມີຕໍ່ທ້າຍ
ຕົວອັກສອນຫົວໜ່ວຍ - B/K/M/G. ຂະໜາດແມ່ນຫຍໍ້ຂຶ້ນເພື່ອໃຫ້ມີໜ້າທີ່ໃກ້ທີ່ສຸດແມ່ນສອງໜ້າ
ມູນຄ່າ.

-C, --cpu
ເກັບກໍາຕົວຢ່າງພຽງແຕ່ຢູ່ໃນບັນຊີລາຍຊື່ຂອງ CPUs ສະຫນອງໃຫ້. CPU ຫຼາຍສາມາດສະຫນອງໃຫ້ເປັນ
ບັນຊີລາຍຊື່ທີ່ແຍກດ້ວຍເຄື່ອງໝາຍຈຸດທີ່ບໍ່ມີຊ່ອງຫວ່າງ: 0,1. ຊ່ວງຂອງ CPUs ຖືກລະບຸດ້ວຍ -: 0-2. ໃນ
ໂຫມດ per-thread ທີ່ມີຮູບແບບການສືບທອດຢູ່ໃນ (ຄ່າເລີ່ມຕົ້ນ), ເຫດການຖືກຈັບພຽງແຕ່ໃນເວລາທີ່
thread ປະຕິບັດໃນ CPUs ທີ່ກໍານົດໄວ້. ຄ່າເລີ່ມຕົ້ນແມ່ນການຕິດຕາມ CPU ທັງໝົດ.

--duration: ສະແດງສະເພາະເຫດການທີ່ມີໄລຍະເວລາຫຼາຍກວ່າ NM ms.

--sched: ເພີ່ມເວລາແລ່ນກະທູ້ ແລະໃຫ້ບົດສະຫຼຸບໃນຕອນທ້າຍຂອງເຊດຊັນ.

-i --input ເຫດການຂະບວນການຈາກໄຟລ໌ຂໍ້ມູນ perf ທີ່ໃຫ້.

-T --time ພິມເວລາເຕັມເວລາແທນທີ່ຈະທຽບກັບຕົວຢ່າງທໍາອິດ.

--comm
ສະແດງຂະບວນການ COMM ຢູ່ຂ້າງ ID ຂອງມັນ, ໂດຍຄ່າເລີ່ມຕົ້ນ, ປິດການໃຊ້ງານດ້ວຍ --no-comm.

-s, --ສະຫຼຸບ
ສະ​ແດງ​ພຽງ​ແຕ່​ສະ​ຫຼຸບ​ສັງ​ລວມ​ຂອງ syscalls ໂດຍ​ກະ​ທູ້​ທີ່​ມີ min​, ສູງ​ສຸດ​, ແລະ​ເວ​ລາ​ສະ​ເລ່ຍ (ໃນ msec​)
ແລະພີ່ນ້ອງ stddev.

-S, --ມີບົດສະຫຼຸບ
ສະແດງ syscalls ທັງໝົດຕາມດ້ວຍບົດສະຫຼຸບໂດຍຫົວຂໍ້ທີ່ມີນາທີ, ສູງສຸດ, ແລະເວລາສະເລ່ຍ (ໃນ
msec) ແລະພີ່ນ້ອງ stddev.

--tool_stats
ສະ​ແດງ​ໃຫ້​ເຫັນ​ສະ​ຖິ​ຕິ​ເຄື່ອງ​ມື​ເຊັ່ນ​: ຈໍາ​ນວນ​ຂອງ​ຄັ້ງ fd →​ຊື່​ເສັ້ນ​ທາງ​ໄດ້​ຮັບ​ການ​ຄົ້ນ​ພົບ​ໂດຍ​ຜ່ານ​ການ​ເຊື່ອມ​ຕໍ່​
ເປີດ syscall return + vfs_getname ຫຼືຜ່ານການອ່ານ /proc/pid/fd, ແລະອື່ນໆ.

-F=[all|min|maj], --pf=[ທັງໝົດ|min|maj]
ຕິດຕາມຄວາມຜິດຂອງໜ້າ. ທາງເລືອກອື່ນ, ທ່ານສາມາດກໍານົດວ່າທ່ານຕ້ອງການຫນ້ອຍ, ທີ່ສໍາຄັນຫຼືທັງຫມົດ
ຄວາມຜິດຂອງໜ້າ. ຄ່າເລີ່ມຕົ້ນແມ່ນ maj.

--syscalls
ໂທລະບົບຕິດຕາມ. ຕົວເລືອກນີ້ຖືກເປີດໃຊ້ໂດຍຄ່າເລີ່ມຕົ້ນ.

--ເຫດການ
ຕິດຕາມເຫດການອື່ນໆ, ເບິ່ງ ງາມ ບັນຊີລາຍຊື່ ສໍາລັບບັນຊີລາຍຊື່ຄົບຖ້ວນ.

--proc-map-ໝົດເວລາ
ເມື່ອປະມວນຜົນກະທູ້ທີ່ມີຢູ່ກ່ອນແລ້ວ /proc/XXX/mmap, ມັນອາດຈະໃຊ້ເວລາດົນ, ເພາະວ່າ
ໄຟລ໌ອາດຈະໃຫຍ່. ໃນກໍລະນີດັ່ງກ່າວນີ້, ມັນຈໍາເປັນຕ້ອງໃຊ້ເວລາອອກ. ຕົວເລືອກນີ້ກໍານົດເວລາ
ເກີນຂອບເຂດ. ຄ່າເລີ່ມຕົ້ນແມ່ນ 500 ms.

ໜ້າທີ່


ເມື່ອ tracing pagefaults, ຮູບແບບຂອງການຕິດຕາມແມ່ນດັ່ງຕໍ່ໄປນີ້:

ຄວາມຜິດ [ + ] ⇒addr.dso@addr.offset[1]> (
ລະດັບ>).

· min/maj ຊີ້ບອກວ່າຄວາມຜິດແມ່ນເຫດການເລັກນ້ອຍ ຫຼືໃຫຍ່;

· ip.symbol ສະແດງໃຫ້ເຫັນສັນຍາລັກສໍາລັບຕົວຊີ້ຄໍາແນະນໍາ (ລະຫັດທີ່ສ້າງຄວາມຜິດພາດ); ຖ້າ
ບໍ່ມີສັນຍາລັກດີບັກທີ່ມີຢູ່, perf trace ຈະພິມ IP ດິບ;

· addr.dso ສະແດງ DSO ສໍາລັບທີ່ຢູ່ທີ່ຜິດພາດ;

· ແຜນທີ່ແມ່ນປະເພດ d ສໍາລັບແຜນທີ່ບໍ່ສາມາດປະຕິບັດໄດ້ຫຼື x ສໍາລັບແຜນທີ່ປະຕິບັດໄດ້;

·ລະດັບ addr ແມ່ນບໍ່ວ່າຈະ k ສໍາລັບ kernel dso ຫຼື . ສໍາລັບຜູ້ໃຊ້ dso.

ສໍາລັບການແກ້ໄຂສັນຍາລັກ, ທ່ານອາດຈະຈໍາເປັນຕ້ອງໄດ້ຕິດຕັ້ງສັນຍາລັກ debugging.

ກະລຸນາຮັບຊາບວ່າໄລຍະເວລາແມ່ນ 0 ສະເໝີ ແລະບໍ່ໄດ້ສະທ້ອນເຖິງເວລາຕົວຈິງ
ເອົາ​ຄວາມ​ຜິດ​ທີ່​ຈະ​ໄດ້​ຮັບ​ການ​ຈັດ​ການ​!

ເມື່ອ --verbose ລະບຸ, perf trace ພະຍາຍາມພິມຂໍ້ມູນທີ່ມີຢູ່ທັງຫມົດສໍາລັບທັງສອງ IP
ແລະທີ່ຢູ່ຜິດໃນຮູບແບບຂອງ dso@ສັນຍາລັກ[2]+ ຊົດເຊີຍ.

ຕົວຢ່າງ


ຕິດຕາມພຽງແຕ່ຄວາມຜິດຫນ້າທີ່ສໍາຄັນ:

$ perf trace --no-syscalls -F

ຕິດຕາມ syscalls, ຄວາມຜິດຂອງໜ້າຫຼັກ ແລະເລັກນ້ອຍ:

$ perf trace -F ທັງຫມົດ

1416.547 ( 0.000 ms): python/20235 majfault [CRYPTO_push_info_+0x0] => /lib/x86_64-linux-gnu/libcrypto.so.1.0.0@0x61be0 (x.)

ດັ່ງທີ່ເຈົ້າສາມາດເຫັນໄດ້, ມີຄວາມຜິດຕໍ່ຫນ້າທີ່ສໍາຄັນໃນຂະບວນການ python, ຈາກ
CRYPTO_push_info_ routine ທີ່ຜິດພາດບາງບ່ອນໃນ libcrypto.so.

ໃຊ້ perf-trace ອອນໄລນ໌ໂດຍໃຊ້ບໍລິການ onworks.net



ລ່າສຸດ Linux ແລະ Windows ໂຄງການອອນໄລນ໌