Perf- ເຄື່ອງມືການກວດສອບແລະການວິເຄາະຜົນ ສຳ ລັບ Linux


ເມື່ອພວກເຮົາເວົ້າເຖິງການປະຕິບັດວຽກງານໃນຄອມພີວເຕີ້, ພວກເຮົາ ໝາຍ ເຖິງຄວາມ ສຳ ພັນລະຫວ່າງຊັບພະຍາກອນຂອງພວກເຮົາແລະວຽກງານທີ່ພວກເຂົາອະນຸຍາດໃຫ້ພວກເຮົາເຮັດ ສຳ ເລັດໃນຊ່ວງເວລາໃດ ໜຶ່ງ.

ໃນມື້ທີ່ມີການແຂ່ງຂັນກັນຢ່າງດຸເດືອດລະຫວ່າງບໍລິສັດ, ມັນເປັນສິ່ງ ສຳ ຄັນທີ່ພວກເຮົາຕ້ອງຮຽນຮູ້ການ ນຳ ໃຊ້ສິ່ງທີ່ພວກເຮົາມີໃຫ້ສຸດຄວາມສາມາດຂອງມັນ. ສິ່ງເສດເຫຼືອຂອງຊັບພະຍາກອນຮາດແວຫລືຊອບແວຫລືຂາດຄວາມສາມາດທີ່ຈະຮູ້ວິທີການ ນຳ ໃຊ້ທີ່ມີປະສິດທິພາບຫຼາຍຂື້ນ, ມັນແມ່ນການສູນເສຍທີ່ພວກເຮົາບໍ່ສາມາດຈ່າຍໄດ້ຖ້າພວກເຮົາຕ້ອງການຢູ່ໃນອັນດັບ ໜຶ່ງ ຂອງເກມຂອງພວກເຮົາ.

ໃນເວລາດຽວກັນ, ພວກເຮົາຕ້ອງລະມັດລະວັງທີ່ຈະບໍ່ເອົາຊັບພະຍາກອນຂອງພວກເຮົາໄປໃນຂອບເຂດ ຈຳ ກັດບ່ອນທີ່ການ ນຳ ໃຊ້ທີ່ຍືນຍົງຈະສົ່ງຜົນເສຍຫາຍທີ່ບໍ່ສາມາດຕ້ານທານໄດ້.

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

ແນະ ນຳ ແລະຕິດຕັ້ງ Perf ໃນ Linux

ໃນບັນດາສິ່ງອື່ນໆ, Linux ສະ ໜອງ ເຄື່ອງມືຕິດຕາມແລະວິເຄາະການເຮັດວຽກທີ່ເອີ້ນວ່າສະດວກດີ. ດັ່ງນັ້ນສິ່ງທີ່ແຍກຕ່າງຫາກທີ່ດີເລີດຈາກເຄື່ອງມືທີ່ມີຊື່ສຽງອື່ນໆທີ່ທ່ານຄຸ້ນເຄີຍແລ້ວ?

ຄຳ ຕອບກໍ່ຄືວ່າ perf ສາມາດເຂົ້າເຖິງ ໜ່ວຍ ງານກວດສອບການປະຕິບັດງານໃນ CPU, ແລະດັ່ງນັ້ນຈຶ່ງຊ່ວຍໃຫ້ພວກເຮົາສາມາດເບິ່ງການປະພຶດຂອງຮາດແວແລະເຫດການທີ່ກ່ຽວຂ້ອງໄດ້ຢ່າງໃກ້ຊິດ.

ນອກຈາກນັ້ນ, ມັນຍັງສາມາດຕິດຕາມເຫດການຕ່າງໆຂອງຊອບແວ, ແລະສ້າງບົດລາຍງານຕ່າງໆນອກຈາກຂໍ້ມູນທີ່ຖືກເກັບ ກຳ.

ທ່ານສາມາດຕິດຕັ້ງ perf ໃນການແຈກຈ່າຍທີ່ອີງໃສ່ RPM ກັບ:

# yum update && yum install perf     [CentOS / RHEL / Fedora]
# dnf update && dnf install perf     [Fedora 23+ releases]

ໃນ Debian ແລະອະນຸພັນ:

# sudo aptitude update && sudo aptitude install linux-tools-$(uname -r) linux-tools-generic

ຖ້າ ບໍ່ເປີດຊື່ -r ໃນ ຄຳ ສັ່ງຂ້າງເທິງນີ້ຈະສົ່ງຄືນບັນດາສາຍຕ່າງໆນອກ ເໜືອ ຈາກລຸ້ນແທ້ (3.2.0-23-generic ໃນກໍລະນີຂອງຂ້ອຍ), ທ່ານອາດຈະຕ້ອງພິມ linux-tools-3.2.0-23 ແທນ ຂອງການນໍາໃຊ້ຜົນໄດ້ຮັບຂອງການ uname ໄດ້.

ມັນຍັງມີຄວາມສໍາຄັນທີ່ຈະສັງເກດວ່າຜົນຜະລິດທີ່ດີເລີດແມ່ນຜົນໄດ້ຮັບທີ່ບໍ່ຄົບຖ້ວນເມື່ອແລ່ນຢູ່ໃນແຂກທີ່ຢູ່ເທິງ XEN) ເຮັດ.

ນອກຈາກນັ້ນ, ຈົ່ງຈື່ໄວ້ວ່າບາງ ຄຳ ສັ່ງທີ່ດີເລີດອາດຈະຖືກ ຈຳ ກັດໃຫ້ຮາກໂດຍຄ່າເລີ່ມຕົ້ນ, ເຊິ່ງສາມາດຖືກປິດໃຊ້ງານ (ຈົນກ່ວາລະບົບຖືກເປີດໃຊ້ງານ ໃໝ່) ໂດຍການເຮັດ:

# echo 0 > /proc/sys/kernel/perf_event_paranoid

ຖ້າທ່ານຕ້ອງການປິດໂຫມດ paranoid ຢ່າງຖາວອນ, ໃຫ້ປັບປຸງການຕັ້ງຄ່າຕໍ່ໄປນີ້ໃນເອກະສານ /etc/sysctl.conf.

kernel.perf_event_paranoid = 0

ເມື່ອທ່ານໄດ້ຕິດຕັ້ງ perf ແລ້ວ, ທ່ານສາມາດອ້າງອີງໃສ່ ໜ້າ man ຂອງມັນ ສຳ ລັບລາຍຊື່ subcommands ທີ່ມີຢູ່ (ທ່ານສາມາດຄິດວ່າ subcommands ເປັນຕົວເລືອກພິເສດທີ່ເປີດ ໜ້າ ຕ່າງສະເພາະເຂົ້າໃນລະບົບ). ເພື່ອໃຫ້ໄດ້ຜົນທີ່ດີທີ່ສຸດແລະຄົບຖ້ວນ, ໃຫ້ໃຊ້ perf ທັງຮາກຫຼືຜ່ານ sudo.

ບັນຊີລາຍຊື່ທີ່ດີເລີດ (ໂດຍບໍ່ມີຕົວເລືອກ) ສົ່ງຄືນທຸກໆປະເພດເຫດການທີ່ເປັນສັນຍາລັກ (ບັນຊີລາຍຊື່ຍາວ). ຖ້າທ່ານຕ້ອງການເບິ່ງລາຍຊື່ຂອງເຫດການທີ່ມີຢູ່ໃນ ໝວດ ສະເພາະ, ໃຫ້ໃຊ້ລາຍຊື່ທີ່ດີເລີດຕາມດ້ວຍຊື່ປະເພດ ([hw | sw | cache | tracepoint | pmu | event_glob]), ເຊັ່ນວ່າ:

ສະແດງບັນຊີລາຍຊື່ຂອງເຫດການທີ່ ກຳ ນົດໄວ້ກ່ອນໃນໂປແກຼມ Linux:

# perf list sw 

perf stat ໃຊ້ ຄຳ ສັ່ງແລະເກັບ ກຳ ສະຖິຕິການເຮັດວຽກຂອງ Linux ໃນໄລຍະ ດຳ ເນີນການ ຄຳ ສັ່ງດັ່ງກ່າວ. ມີຫຍັງເກີດຂື້ນໃນລະບົບຂອງພວກເຮົາໃນເວລາທີ່ພວກເຮົາແລ່ນ dd?

# perf stat dd if=/dev/zero of=test.iso bs=10M count=1

ສະຖິຕິທີ່ສະແດງຢູ່ຂ້າງເທິງຊີ້ບອກ, ໃນບັນດາສິ່ງອື່ນໆ:

<

  • ການປະຕິບັດ ຄຳ ສັ່ງ dd ໄດ້ເອົາ CPU 21.812281 ມິນລິກຣາມ. ຖ້າພວກເຮົາແບ່ງ ຈຳ ນວນດັ່ງກ່າວດ້ວຍມູນຄ່າ“ ເວລາວິນາທີທີ່ຜ່ານມາ” (23.914596 ມິນລິລິດ), ມັນຈະໃຫ້ຜົນຜະລິດ 0.912 (ໃຊ້ CPU).
  • ໃນຂະນະທີ່ ຄຳ ສັ່ງໄດ້ຖືກປະຕິບັດ, 15 ສະຫວິດສະພາບການ (ທີ່ເອີ້ນກັນວ່າຕົວປ່ຽນຂະບວນການ) ຊີ້ໃຫ້ເຫັນວ່າ CPU ໄດ້ປ່ຽນ 15 ເທື່ອຈາກຂະບວນການ ໜຶ່ງ (ຫລືກະທູ້) ໄປຫາອີກ.
  • ການເຄື່ອນຍ້າຍ CPU 2 ຄັ້ງແມ່ນຜົນທີ່ຄາດວ່າຈະເກີດຂື້ນໃນ CPU 2-core, ເວລາເຮັດວຽກຈະຖືກແຈກຢາຍໃຫ້ເທົ່າກັນລະຫວ່າງ ຈຳ ນວນແກນ.
    ໃນຊ່ວງເວລານັ້ນ (21.812281 ມິນລິລິດ), ຈຳ ນວນຮອບວຽນຂອງ CPU ທີ່ໄດ້ຮັບການບໍລິໂພກແມ່ນ 62.025,623, ເຊິ່ງແບ່ງເປັນ 0.021812281 ວິນາທີໃຫ້ 2,843 GHz.
  • ຖ້າພວກເຮົາແບ່ງ ຈຳ ນວນຮອບວຽນຕາມ ຈຳ ນວນ ຄຳ ແນະ ນຳ ທັງ ໝົດ ທີ່ພວກເຮົາໄດ້ຮັບ 4.9 ຮອບວຽນຕໍ່ ຄຳ ແນະ ນຳ, ຊຶ່ງ ໝາຍ ຄວາມວ່າແຕ່ລະ ຄຳ ແນະ ນຳ ໄດ້ໃຊ້ເວລາເກືອບ 5 ຮອບວຽນ CPU ເພື່ອໃຫ້ ສຳ ເລັດ (ໂດຍສະເລ່ຍ). ພວກເຮົາສາມາດ ຕຳ ນິຕິຕຽນເລື່ອງນີ້ (ຢ່າງ ໜ້ອຍ ບາງສ່ວນ) ກ່ຽວກັບ ຈຳ ນວນສາຂາແລະສາຂາທີ່ຂາດໄປ (ເບິ່ງຢູ່ຂ້າງລຸ່ມ), ເຊິ່ງສິ້ນສຸດການສູນເສຍຫຼືໃຊ້ວົງຈອນ CPU ທີ່ບໍ່ຖືກຕ້ອງ.
  • ເມື່ອປະຕິບັດ ຄຳ ສັ່ງດັ່ງກ່າວ, ສາມາດພົບກັບສາຂາທັງ ໝົດ 3.552,630. ນີ້ແມ່ນຕົວແທນລະດັບ CPU ຂອງຈຸດຕັດສິນໃຈແລະວົງແຫວນໃນລະຫັດ. ສາຂາຫຼາຍ, ປະສິດທິພາບຕ່ໍາກວ່າ. ເພື່ອຊົດເຊີຍ ສຳ ລັບສິ່ງນີ້, ທຸກໆ CPU ທີ່ທັນສະ ໄໝ ພະຍາຍາມຄາດຄະເນການໄຫລຂອງລະຫັດຈະເກີດຂື້ນ. 51,348 ສາຂາຫາຍສາບສູນຊີ້ໃຫ້ເຫັນວ່າການຄາດເດົາແມ່ນຜິດ 1,45% ຂອງເວລາ.
  • ຫຼັກການດຽວກັນນີ້ໃຊ້ໄດ້ກັບສະຖິຕິການລວບລວມ (ຫຼືເວົ້າອີກຢ່າງ ໜຶ່ງ, ການສະກົດຈິດ) ໃນຂະນະທີ່ແອັບພລິເຄຊັນ ກຳ ລັງແລ່ນຢູ່. ພຽງແຕ່ເປີດໂປແກຼມທີ່ທ່ານຕ້ອງການແລະຫຼັງຈາກໄລຍະເວລາທີ່ ເໝາະ ສົມ (ເຊິ່ງຂື້ນກັບທ່ານ) ປິດມັນ, ແລະ perf ຈະສະແດງສະຖິຕິໃນ ໜ້າ ຈໍ. ໂດຍການວິເຄາະສະຖິຕິເຫຼົ່ານັ້ນທ່ານສາມາດ ກຳ ນົດບັນຫາທີ່ອາດເກີດຂື້ນ.

    perf top ແມ່ນຄ້າຍຄືກັບ ຄຳ ສັ່ງຊັ້ນເທິງ, ໃນນັ້ນມັນສະແດງໂປຼໄຟລ໌ລະບົບທີ່ໃຊ້ເວລາເກືອບແທ້ (ຍັງເອີ້ນວ່າການວິເຄາະສົດ).

    ດ້ວຍຕົວເລືອກ -a ທ່ານຈະສະແດງທຸກປະເພດເຫດການທີ່ຮູ້ຈັກ, ໃນຂະນະທີ່ຕົວເລືອກ -e ຈະຊ່ວຍໃຫ້ທ່ານເລືອກປະເພດເຫດການສະເພາະ (ສົ່ງຄືນໂດຍລາຍຊື່ທີ່ສົມບູນແບບ) :

    ຈະສະແດງທຸກເຫດການຮອບວຽນ.

    perf top -a 
    

    ຈະສະແດງທຸກເຫດການທີ່ກ່ຽວຂ້ອງກັບ cpu.

    perf top -e cpu-clock 
    

    ຖັນ ທຳ ອິດໃນຜົນໄດ້ຮັບຂ້າງເທິງສະແດງອັດຕາສ່ວນຂອງຕົວຢ່າງທີ່ໄດ້ປະຕິບັດຕັ້ງແຕ່ເລີ່ມຕົ້ນຂອງການແລ່ນ, ຈັດເປັນກຸ່ມໂດຍ ໜ້າ ທີ່ສັນຍາລັກແລະວັດຖຸທີ່ແບ່ງປັນ. ຕົວເລືອກເພີ່ມເຕີມມີຢູ່ໃນຜູ້ຊາຍ perf-top.

    perf record ມີ ຄຳ ສັ່ງແລະບັນທຶກຂໍ້ມູນສະຖິຕິເຂົ້າໃນເອກະສານທີ່ມີຊື່ວ່າ perf.data ຢູ່ໃນລະບົບເຮັດວຽກປະຈຸບັນ. ມັນແລ່ນຄ້າຍຄືກັນກັບສະຖານະພາບທີ່ດີເລີດ.

    ພິມບັນທຶກ perf ຕາມດ້ວຍ ຄຳ ສັ່ງ:

    # perf record dd if=/dev/null of=test.iso bs=10M count=1
    

    ບົດລາຍງານ perf ຈັດຮູບແບບຂໍ້ມູນທີ່ເກັບ ກຳ ມາໃນ perf.data ຂ້າງເທິງເຂົ້າໃນບົດລາຍງານຜົນງານ:

    # sudo perf report
    

    ທັງ ໝົດ ຂອງ subcommands ຂ້າງເທິງນີ້ມີ ໜ້າ ຜູ້ຊາຍທີ່ອຸທິດຕົນທີ່ສາມາດຖືກເອີ້ນວ່າ:

    # man perf-subcommand
    

    ບ່ອນທີ່ subcommand ແມ່ນທັງບັນຊີລາຍຊື່, ສະຖິຕິ, ອັນດັບ ໜຶ່ງ, ບັນທຶກ, ຫຼືລາຍງານ. ເຫຼົ່ານີ້ແມ່ນ subcommands ທີ່ຖືກນໍາໃຊ້ຫຼາຍທີ່ສຸດ; ສ່ວນອື່ນໆແມ່ນຢູ່ໃນເອກະສານ (ອ້າງອີງເຖິງພາກສະຫຼຸບສັງລວມ ສຳ ລັບການເຊື່ອມຕໍ່).

    ບົດສະຫຼຸບ

    ໃນຄູ່ມືນີ້ພວກເຮົາໄດ້ແນະ ນຳ ໃຫ້ທ່ານຮູ້ກ່ຽວກັບເຄື່ອງມືທີ່ດີເລີດ, ເຄື່ອງມືໃນການກວດສອບແລະການວິເຄາະ ສຳ ລັບ Linux. ພວກເຮົາຂໍແນະ ນຳ ໃຫ້ທ່ານຄຸ້ນເຄີຍກັບເອກະສານທີ່ຖືກຮັກສາໄວ້ໃນ https://perf.wiki.kernel.org.

    ຖ້າທ່ານພົບແອັບພລິເຄຊັນທີ່ໃຊ້ຊັບພະຍາກອນສ່ວນຮ້ອຍ, ທ່ານອາດຈະພິຈາລະນາດັດແກ້ລະຫັດແຫຼ່ງ, ຫຼືໃຊ້ທາງເລືອກອື່ນ.

    ຖ້າທ່ານມີ ຄຳ ຖາມກ່ຽວກັບບົດຂຽນນີ້ຫລື ຄຳ ແນະ ນຳ ເພື່ອປັບປຸງ, ພວກເຮົາທຸກຄົນເປັນຫູ. ຮູ້ສຶກວ່າບໍ່ເສຍຄ່າທີ່ຈະເຂົ້າຫາພວກເຮົາໂດຍໃຊ້ແບບຟອມ ຄຳ ເຫັນຂ້າງລຸ່ມນີ້.