ນີ້ແມ່ນຄໍາສັ່ງ 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, ຮູບແບບຂອງການຕິດຕາມແມ່ນດັ່ງຕໍ່ໄປນີ້:
ຄວາມຜິດ [ + ] ⇒[email protected][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