Pagsubaybay sa pagganap gamit ang eBPF, bpftrace at perf sa Linux

Huling pag-update: 17/12/2025
May-akda: Isaac
  • Nag-aalok ang Perf ng klasikong CPU profiling at event analysis. hardware, mainam para sa mabilisang pagsusuri ng pagganap sa Linux.
  • Ang eBPF at bpftrace ay nagbibigay-daan sa malalim na obserbasyon mula sa kernel na may napakababang epekto at mataas na pagpapasadya.
  • Ang kombinasyon ng perf at eBPF ay sumasaklaw sa lahat mula sa mga hardware counter hanggang sa mga sukatan ng aplikasyon sa produksyon.
  • Pinagsasama-sama ng eBPF ecosystem ang sarili nito bilang pamantayan para sa pagsubaybay, seguridad, at networking sa mga modernong sistema.

Subaybayan ang pagganap gamit ang eBPF at bpftrace

La malalimang pagsubaybay sa pagganap Sa mga Linux server, hindi ka na kuntento sa apat na pangunahing sukatan lamang tulad ng CPU, memory, at disk. Sa mga modernong kapaligiran, gamit ang mga microservice, container, at hybrid cloud, kailangan mong makita kung ano talaga ang nangyayari sa loob ng kernel, sa antas ng mga system call, network packet, at mga partikular na function ng iyong mga application.

Sa kontekstong ito, ang mga teknolohiyang tulad ng perf, eBPF at bpftrace Ang mga ito ay naging pangunahing bahagi para sa mga system, SRE, at mga observability team. Pinapayagan nito ang pagtukoy ng mga bottleneck, pagbawas ng mga gastos sa imprastraktura, at pagpapabuti ng karanasan ng gumagamit nang may antas ng detalye na hindi maisip ilang taon na ang nakalilipas, lahat ay may napakababang epekto sa load ng system.

Ano ang pagsusuri ng pagganap ng server?

Kapag pinag-uusapan natin ang pagsusuri ng pagganap, tinutukoy natin ang proseso ng sukatin, bigyang-kahulugan at i-optimize kung paano ginagamit ng mga serbisyong tumatakbo sa isang server ang mga mapagkukunan: CPU, memory, disk I/O, network, at pati na rin ang mga salik tulad ng latency ng tugon o ang bilang ng mga kahilingang hinahawakan.

Sa mga kapaligiran ng negosyo at produksyon, ang pagsusuring ito ay mahalaga dahil isang maliit na hadlang Maaari itong magdulot ng mga pag-crash, hindi matiis na oras ng pagtugon, o labis na singil sa cloud kung ang hardware ay pinalaki nang hindi nauunawaan ang tunay na problema.

Kahalagahan sa mga kapaligiran ng negosyo at produksyon

  • La pagkilala sa mga bottleneck Ang unang layunin ay upang mahanap ang mga proseso, thread, o function na kumukunsumo ng mas maraming CPU, I/O, o memory kaysa sa kinakailangan upang ma-optimize o muling idisenyo ang mga ito.
  • La pag-optimize ng gastos Kasunod nito: kung alam mo kung aling mga serbisyo ang pumupuno sa aling mga mapagkukunan, maaari mong isaayos ang mga laki ng makina, mga limitasyon ng container, o mga patakaran sa autoscaling upang magbayad lamang para sa talagang kailangan mo.
  • La pagpapabuti ng karanasan ng gumagamit Direktang nakadepende ito sa kung paano tutugon ang iyong mga server; ang pagbabawas ng latency sa mga kritikal na punto (mabagal na query, disk lock, pila ng network) ay gumagawa ng malaking pagkakaiba sa mga web at mobile application.
  • La pag-iwas sa pagkabigo Nakasalalay ito sa makasaysayang pagsubaybay: kung mangongolekta ka ng mga sukatan na may sapat na detalye, mas madaling matukoy ang mga abnormal na pattern at mahulaan ang isang malubhang downtime o pagkasira ng serbisyo.

Mga modernong kagamitan: perf, eBPF at bpftrace

Sa kasalukuyan, ang seryosong pagsusuri ng pagganap sa Linux ay nakasalalay sa isang hanay ng mga tool na sumasaklaw sa iba't ibang antas: perpekto bilang isang klasikong utility na naka-link sa mga hardware counter, at ang ecosystem eGMP (BCC, bpftrace, libbpf, Cilium, atbp.) upang magkaroon ng halos-operasyong obserbasyon mula sa kernel.

Habang ang perf ay nakatuon sa mga paunang natukoy na kaganapan sa hardware at softwareBinubuksan ng eBPF ang pinto sa pagsulat ng maliliit na programa na tumatakbo sa kernel sa ilalim ng mahigpit na kontrol, na tumutugon sa mga kaganapan tulad ng mga syscall, function trace, network packet, o kahit na mga kaganapan sa perf, na nagpapadala lamang ng impormasyong kailangan mo.

Sa bpftrace, makakakuha ka rin ng mataas na antas na patong na lubos na nagpapadali sa pagtatrabaho gamit ang eBPF, na nagbibigay-daan sa iyong magsulat ng mga napaka-nagpapahayag na script na may syntax na katulad ng AWK o DTrace, na mainam para sa mabilis na mga diagnostic sa produksyon.

perf: ang klasikong kagamitan para sa pagsusuri ng pagganap

Kagamitan perpekto Ito ay isinama na sa ecosystem ng Linux sa loob ng maraming taon at idinisenyo upang itala at suriin ang mga low-level na kaganapan: mga cycle ng CPU, mga cache misses, mga executed na instruksyon, mga page fault, mga syscall at marami pang iba.

Ang karaniwang daloy ng paggamit nito ay medyo diretso: nagrerehistro muna Ito ang nangyayari sa loob ng isang yugto ng panahon, at pagkatapos ay sinusuri ang ulat upang mahanap ang mga problematikong tungkulin o proseso.

Ano ang perf at paano ito gumagana?

  • Magsisimula ang administrador ng isang pagsusuri gamit ang perf record, na nagpapahiwatig ng utos o PID upang pag-aralan o maging ang buong sistema.
  • Sa loob ng itinakdang pagitan, perf nagpapakita o nag-iimbak ng mga kaganapan ng hardware at kernel, na kumukuha ng mga pana-panahong sample nang hindi kinakailangang i-instrument ang source code.
  • may ulat ng pagganap Isang interactive na ulat ang nabubuo na nagpapakita ng pagkonsumo ng CPU ayon sa function, file, simbolo o proseso, na nagpapahintulot sa nabigasyon sa mga hot path ng programa.

Mga pangunahing katangian ng pagganap

Pagsubaybay sa kaganapan sa hardware

  • Maaari mong bilangin ang Natupok ang mga siklo ng CPUna tumutulong sa pagtukoy ng mga function na nakakasagabal sa processor.
  • Nag-uulat ito mga nawawalang cache (nagkakamali ang cache), para malaman mo kapag nabigo ang mga paghahanap ng L1/L2/L3 cache at kailangang pumunta ang system sa pangunahing memorya, na nagpapataas ng latency.
  • Kolektahin ang bilang ng mga tagubiling naisakatuparan, kapaki-pakinabang para sa pagsusuri ng kahusayan ng isang algorithm o paghahambing ng dalawang magkaibang implementasyon.

Pagsusuri ng siklo at latency ng CPU

Sa pamamagitan ng pagsasama-sama ng mga sample ng CPU sa mga blocking event, I/O, o mga wait sa mga syscall, pinapayagan ng perf ang pag-aaral ng kung saan natupok ang mga siklo at kung aling mga segment ng code ang nagdaragdag ng pinakamaraming latency. Ito ay lalong kapaki-pakinabang sa mga serbisyong may mahigpit na SLA, kung saan ang queue ng latency ay mas mahalaga kaysa sa karaniwan.

  Mga praktikal na halimbawa ng paggamit ng nice, renice at ionice sa Linux

Mga karaniwang kaso ng paggamit gamit ang perf

  • Pag-optimize ng aplikasyon: hanapin ang mga hotspot sa loob ng isang binary, suriin ang mga call stack, at muling isulat o isaayos ang mga partikular na seksyon ng code.
  • Pag-diagnose ng mga overloaded na sistema: unawain kung aling mga proseso ang nagpapalitaw ng CPU load o kung saan nagaganap ang mga pagtatalo sa thread.
  • Pagsusuri ng pagganap ng hardware: suriin kung paano kumikilos ang CPU, memorya, at mga cache sa ilalim ng iba't ibang sintetiko o totoong mga load, na inihahambing ang mga henerasyon ng mga server o processor.
  • Paglutas ng mga problema sa latency: pag-aralan ang mga peak ng paghihintay sa disk I/O, pagharang sa mutex, o mga pagkaantala ng network at tukuyin kung ang bottleneck ay nasa aplikasyon o sa sistema.

Pag-install at pangunahing pagsasaayos ng mga profile

Sa karamihan ng mga distribusyon ng Linux, ang perf ay naka-install mula sa mga opisyal na repositoryo bilang bahagi ng pakete. mga tool sa linux o katulad. Mahalaga na ang perpektong bersyon ay tumutugma sa bersyon ng kernel na ginagamit mo upang maiwasan ang mga hindi pagkakatugma sa mga nakalantad na kaganapan.

Pagkatapos ng pag-install, karaniwang sapat na ang pagtiyak na ang mga counter ng pagganap Dapat naka-enable ang mga parameter ng kernel (tulad ng kernel.perf_event_paranoid) para ma-access ng perf ang mga kinakailangang event, lalo na kung ipo-profile mo ang buong sistema.

Mga praktikal na halimbawa na may mga utos sa pagganap

Ang isang karaniwang kaso ng paggamit ay kinabibilangan ng pag-profile ng isang partikular na binary habang isinasagawa ito gamit ang perpektong talaan -g — ./my_program at pagkatapos ay suriin ang ulat gamit ang perf report, na tinatalakay ang pinakamahal na mga function at ang kanilang call tree.

Maaari ring gamitin ang Perf Top para sa makita sa real time Ang mga function na kumukunsumo ng pinakamaraming CPU sa sistema, isang bagay na lubhang kapaki-pakinabang sa mga insidente ng produksyon kapag wala kang oras para magpatakbo ng mas sopistikadong pagsusuri.

eBPF: ang kinabukasan ng pagsubaybay at pagsusuri

Pinalawak na Berkeley Packet Filter, o eGMPMula sa pagiging isang kakaibang bagay na nauugnay sa packet filtering, ito ay naging batayan na ng maraming susunod na henerasyon ng mga platform para sa observability, security, at networking.

Ang susi nito ay ang pagpapahintulot maliliit at ligtas na mga programa Tumatakbo ang mga ito sa loob ng Linux kernel bilang tugon sa mga kaganapan, na may paunang pag-verify at pag-access sa mga panloob na istruktura, nang hindi kinakailangang i-patch ang kernel o i-load ang mga kumplikadong module.

Ano ang eBPF at paano ito gumagana sa pangkalahatang termino?

  • Pinapayagan kumuha ng mga detalyadong sukatan ng real-time na sistema: mga syscall latencies, mga tagal ng koneksyon ng TCP, oras ng pagpapatupad ng function ng gumagamit, atbp.
  • Nahuhumaling ito mga kaganapan sa kernel (mga kprobe, tracepoint, socket, perf event…) nang hindi binabago ang sariling source code ng kernel.
  • Ito ay dinisenyo upang ipakilala ang isang minimal na epekto sa pagganap, tumatakbo sa isang virtual machine sa loob ng kernel sa napakababang halaga.

Bakit napaka-rebolusyonaryo ng eBPF?

  • Su napakababang labis na karga Ginagawa nitong mainam ito para sa produksyon: sa pamamagitan ng pagtatrabaho sa loob ng kernel, naiiwasan nito ang maraming paglipat ng konteksto sa pagitan ng espasyo ng gumagamit at kernel, na binabawasan ang hindi kinakailangang trapiko ng data.
  • Nag-aalok ng a brutal na kakayahang umangkopMaaari kang sumulat ng mga pasadyang programa para masubaybayan kung ano mismo ang iyong kinagigiliwan, mula sa mga istatistika ng network bawat Kubernetes pod hanggang sa latency bawat function sa isang partikular na microservice.
  • La ang seguridad ay garantisadong sa pamamagitan ng isang tagapagpapatunay na sumusuri sa bawat programa bago payagan ang pagpapatupad nito, tinitiyak na walang walang katapusang mga loop, mga access na wala sa saklaw, o mga aksyon na mapanganib sa katatagan ng sistema.
  • Mayroong a napakalaking hanay ng mga aplikasyon: pagsubaybay sa pagganap, malalim na pagmamasid sa network, pagpapatibay ng seguridad, pagkontrol sa pag-access, advanced na packet filtering, pag-profile ng aplikasyon, atbp.

Paano isinasagawa ang mga programang eBPF

Karaniwang isinusulat ng developer ang lohika sa C o iba pang wikang may mataas na antasIto ay kino-compile sa eBPF bytecode gamit ang LLVM/Clang at nilo-load sa kernel sa pamamagitan ng bpf() syscall o mga tool tulad ng bpftool, BCC o bpftrace.

Kapag na-load na, ang programa ay iniuugnay sa isang kawit na kongkreto: isang kernel function, isang tracepoint, isang socket, isang perf event, o isang user function call (uprobe), at nati-trigger sa bawat pagkakataong mangyari ang event na iyon, binabasa ang mga parameter, ina-update ang mga mapa, at, kung naaangkop, ibinabalik ang data sa user space.

Mga advanced na tampok ng eBPF

Paglikha ng mga pasadyang programa para sa detalyadong pagsusuri

Gamit ang eBPF, maaari kang bumuo ng mga pasadyang tool na sumusukat, halimbawa, sa eksaktong latency ng bawat query sa isang database, o ang track na iyon ay tumatawag sa isang partikular na library ng isang serbisyo, nang hindi hinahawakan ang kahit isang linya ng serbisyong iyon.

Pagsubaybay sa totoong oras nang walang kapansin-pansing epekto

Sa pamamagitan ng pagpapatakbo sa kernel at pagsala ng data doon, pinapayagan ng eBPF ang isang patuloy na pagsubaybay na may napakababang epekto, mainam para sa mga kritikal na sistema kung saan hindi mo kayang bumili ng mabibigat na ahente o napaka-malawak na bakas.

Mga pinaka-kaugnay na kaso ng paggamit sa eBPF

  • Pagsubaybay sa pagganap ng aplikasyon: hanapin kung aling mga function sa iyong code ang kumukunsumo ng mga resources, kahit na nasa loob ang mga ito ng mga third-party library o nasa mga binary na walang mga simbolo.
  • Mahusay na pagsusuri ng network: Tingnan ang kumpletong tagal ng koneksyon ng TCP, mga istatistika ng packet bawat serbisyo, pagtukoy ng mga pagkalugi o muling pagpapadala nang hindi gumagamit ng malawakang pagkuha ng packet.
  • Seguridad at pag-audit: subaybayan ang mga kahina-hinalang system call, hindi pangkaraniwang binary execution, o mga pag-uugali na akma sa mga pattern ng panghihimasok, na bumubuo ng mga real-time na alerto.
  • Pag-optimize ng mga ipinamamahaging sistema: sukatin ang latency sa pagitan ng mga microservice, internal queues, serialization at deserialization times, o ang epekto ng load balancing sa application.
  Paano Mag-install ng Android 12 Public Beta

Detalyadong detalye ng eBPF: BPF, ebolusyon at ekosistema

Para maunawaan ang eBPF, makakatulong munang maunawaan ang Klasikong GMP, na orihinal na idinisenyo bilang isang packet filter sa loob ng kernel para sa mga tool tulad ng tcpdump, Snort o Suricata, na may ideya na maiwasan ang pagkopya ng mga hindi gustong pakete sa espasyo ng gumagamit.

Nagpapatupad ang BPF ng isang maliit na virtual machine sa kernel kung saan nilo-load ang mga programa na Dumarami ang mga ito sa mga kaganapan, tulad ng pagtanggap ng isang packet. Tanging ang mga packet na dumadaan sa filter ang nakakarating sa socket sa espasyo ng user, na nakakatipid ng malaking halaga ng CPU at memory.

Ang modernong eBPF ay napakaraming gamit kaya't Pundasyon ng eBPF at ang Pundasyon ng Linux Itinutulak nila ang pag-aampon nito sa iba pang mga OSupang hindi ito limitado sa Linux at ang mga katulad na kakayahan sa pagsubaybay at pagsubaybay ay masiyahan sa iba pang mga platform.

Mga programa ng GMP at mga karaniwang rate

Ang mga programang BPF ay karaniwang isinusulat sa C, kino-compile sa mga .oy object, at nilo-load sa kernel gamit ang syscall. bpf()Mula roon, iniuugnay ang mga ito sa iba't ibang uri ng mga kaganapan depende sa nilalayong paggamit.

  • kprobe: nagbibigay-daan sa iyong subaybayan ang pagpapatupad ng mga function at module ng kernel nang hindi kinakailangang i-patch ang mga ito, mainam para makita kung ano ang ginagawa ng system sa loob.
  • upprobeKumokonekta ito sa mga function ng user space, halimbawa sa loob ng sshd o isang database, upang obserbahan ang mga argumento o oras ng pagpapatupad nang hindi muling nagko-compile ng anuman.
  • mga tracepoint: mga paunang natukoy na plot point sa kernel, napaka-stable sa pagitan ng mga bersyon, na naglalantad ng mga kaganapang may mataas na antas tulad ng paglikha ng proseso, disk I/O, o mga kaganapang pang-iskedyul.
  • kaganapang_ganap: mga programang isinaaktibo batay sa mga counter ng pagganap, sa gayon ay pinagsasama ang mundo ng pagganap sa nababaluktot na lohika ng eBPF.

Mga Mapa at Link ng BPF

Ang mga mapa ng BPF ay mga istruktura ng datos halaga ng susi sa kernel kung saan iniimbak at ibinabahagi ng mga programa ang impormasyon: mga counter, histogram, mga kumplikadong istruktura, atbp. Ang mga proseso ng user-space ay maaaring magbasa at magsulat sa mga mapang ito sa pamamagitan ng bpf() syscall o mga library tulad ng BCC.

Ang mga link ay nagkokonekta sa mga partikular na programa ng BPF sa mga instrumentation point; ibig sabihin, tinutukoy nila aling programa ang gaganapin sa aling kaganapanAng paghihiwalay na ito ng mga programa, mapa, at mga link ay nagbibigay ng maraming kakayahang umangkop at nagbibigay-daan para sa muling paggamit ng mga bahagi.

Ang eBPF ecosystem: BCC, bpftrace at iba pang mga utility

Ang kapangyarihan ng eBPF ay hindi magiging pamantayan kung wala ang isang mature na ecosystem ng mga kagamitan, aklatan at proyekto na nagpapadali sa pang-araw-araw na buhay. Kabilang sa mga ito ang BCC, bpftrace, libbpf, goebpf at mas malalaking proyekto tulad ng Cilium Falco o Katran.

Dahil sa mga utility na ito, kahit ang mga team na hindi eksperto sa kernel ay maaaring samantalahin ang mga ito. Mga advanced na kakayahan ng eBPF para sa kakayahang maobserbahan, seguridad, at networking sa medyo simpleng paraan.

Pag-install at Pag-configure ng BCC

Ang BCC (BPF Compiler Collection) ay isang hanay ng mga tool at library na nagpapadali sa pagsulat at pagpapatakbo ng mga programang eBPF gamit ang pangunahing... Sawa CKasama na rito ang dose-dosenang mga script na handa nang gamitin na nagbibigay ng mga istatistika sa network, CPU, disk, mga proseso, atbp.

Sa mga distribusyon tulad ng Ubuntu, ang karaniwang pag-install ay kinabibilangan ng pag-update ng mga repository at pag-install mga tool na bpfcc, mga header ng kernel at mga binding ng Python, pagkatapos ay bineberipika ang pag-install sa pamamagitan ng pagpapatakbo ng mga script tulad ng execsnoop upang tingnan ang mga proseso sa real-time.

Mga praktikal na halimbawa gamit ang BCC

Sa BCC, mayroon kang arsenal ng mga utility mga paunang-built na tool na gumagamit ng eBPF upang mabigyan ka ng detalyadong mga sukatan nang walang kumplikadong pag-setup sa iyong bahagi.

  • tcplife: ipinapakita ang tagal ng mga koneksyon ng TCP, kasama ang tagal, mga byte na ipinadala at natanggap, mga port, atbp., na lubhang kapaki-pakinabang para sa pag-unawa sa gawi ng mga aplikasyon sa network.
  • execsnoop: nagtuturo sa totoong oras ang comandos na tumatakbo sa sistema, kabilang ang user at PID, perpekto para sa pag-awdit o para makita kung ano ang nangyayari sa isang host na pinaghihinalaan.
  • biolatency: bumubuo ng isang interactive na histogram ng disk I/O latency, na tumutulong sa pagtuklas mga hadlang sa imbakan na kung hindi man ay makikita mo lamang bilang "mataas na I/O wait".

Panimula sa bpftrace

Ang bpftrace ay isang mataas na antas na kagamitan para sa pagsulat ng mga eBPF script na may syntax na katulad ng AWK o DTraceIto ay mainam para sa pagsasagawa ng mabibilis na eksperimento, ad-hoc na pagsusuri, at pagsubok sa produksyon nang hindi nagse-set up ng isang buong partikular na software program.

Isang napakasimpleng halimbawa ay ang pagkonekta sa entry tracepoint ng clone syscall at bilangin ang mga tawag bawat proseso na may one-liner, iniimbak ang mga resulta sa isang mapa na na-index ng pangalan ng command at ipinapakita ang bilang sa paglabas.

Iba pang mga kagamitan batay sa eBPF

Bukod sa BCC at bpftrace, mayroon ding mas pangkalahatang mga proyekto na gumagamit ng eBPF sa ilalim ng hood upang mag-alok ng kumpletong solusyon sa iba't ibang larangan.

  • libbpfC library para sa mahusay at malapit na paggamit ng mga programang eBPF, na ginagamit bilang batayan sa maraming modernong proyekto.
  • goebpf: isang library na nagdadala ng eBPF sa Go ecosystem, napakapopular para sa pagsulat ng mga observability agent o mga bahagi ng network sa mga cloud native na kapaligiran.
  • Sili: isang plataporma ng networking at seguridad para sa Kubernetes batay sa eBPF, na nagpapatupad ng mga patakaran sa antas ng API at nag-aalok ng malalim na pagmamasid sa trapiko sa pagitan ng mga pod.
  • Falco: sistema ng pagtukoy ng panghihimasok na gumagamit ng eBPF upang subaybayan ang mga tawag sa system at kahina-hinalang pag-uugali, na bumubuo ng mga alerto kapag may lumihis sa pamantayan.
  • alkitran: isang high-performance load balancing library na binuo ng Meta, na gumagamit ng eBPF upang mahusay at may kakayahang umangkop na ipamahagi ang trapiko sa malawakang mga kapaligiran.
  Paano paganahin ang XMP profile sa BIOS upang mapabuti ang pagganap ng RAM

Detalyadong paghahambing sa pagitan ng perf at eBPF

Bagama't ang perf at eBPF ay kadalasang ginagamit para sa magkatulad na layunin, ang kanilang pokus at mga kakayahan Magkakaiba ang mga ito, at ang pag-unawa sa mga ito ay nakakatulong upang piliin ang tamang tool sa bawat kaso o pagsamahin ang mga ito nang makabuluhan.

Pokus at pangunahing layunin

Ang Perf ay pangunahing naglalayong Mga kaganapan sa pag-profile ng CPU at hardware natukoy na ng processor at kernel. Mabilis itong gamitin, may kasamang integrated, at perpektong gumagana para sa maraming klasikong senaryo ng optimization.

Ang eBPF, sa kabilang banda, ay nakatuon sa pag-aalok ng pangkalahatang balangkas upang isagawa ang pasadyang lohika sa kernel, na nagbibigay-daan sa iyong obserbahan at baguhin ang mga partikular na daloy, mula sa mga network packet hanggang sa mga tawag sa function ng user, nang may halos walang limitasyong granularity.

Kakayahang umangkop at pagpapasadya

  • perpektoMayroon itong kapaki-pakinabang na hanay ng mga kaganapan para sa pagsusuri ng CPU, memorya, I/O, at software, ngunit ang mga kakayahan nito sa pagpapasadya ay limitado sa pagpili kung aling mga kaganapan ang susubaybayan at kung paano igrupo ang mga ito. Ito ay mainam kapag may gusto ka. handa nang gamitin nang walang masyadong komplikasyon.
  • eGMPPinapayagan ka nitong bumuo ng sarili mong mga programa upang kolektahin nang eksakto ang impormasyong iyong hinahanap, i-filter, pagsasama-samahin, at iproseso ang data sa kernel. Nangangailangan ito ng mas maraming kaalaman, ngunit ang kakayahang umangkop Ito ay higit na nakahihigit.

Epekto sa Pagganap

  • perpekto Maaari itong kumatawan sa katamtamang pasanin kapag maraming kaganapan ang pinagana o ang mga sample ay kinukuha nang napakadalas, lalo na sa mga sistemang lubos na saturated o kapag isinagawa ang matagalang pagsubaybay.
  • eGMP Ito ay dinisenyo upang mabawasan ang epekto; ang mga programa ay sinusuri at isinasagawa sa isang lubos na na-optimize na kapaligiran sa loob ng kernel, sinasala ang data nang maaga hangga't maaari upang maiwasan ang pagbaha sa espasyo ng gumagamit, na ginagawa itong angkop para sa pagsubaybay. nasa produksyon pa rin.

Pagkatugma at mga kinakailangan

  • perpekto Ito ay makukuha sa halos lahat ng distribusyon ng Linux at gumagana sa mga medyo lumang kernel. Hindi ito nangangailangan ng anumang karagdagang mga bahagi para sa pangunahing paggamit.
  • eGMP Ito ay nakasalalay sa isang modernong kernel (simula sa bersyon 4.9 para sa marami sa mga advanced na kakayahan nito) at karaniwang umaasa sa mga karagdagang tool tulad ng BCC o bpftrace upang magamit ito nang hindi binubuo ang lahat sa mababang antas.

Pagsasama ng perf at eBPF para sa advanced analytics

Ang pinaka-interesante ay hindi ang pagpili sa pagitan ng isa o ng isa pa, kundi alamin kung paano pagsamahin ang mga itoNananatiling mahusay ang Perf para sa mabilis na pangkalahatang-ideya sa antas ng CPU, habang ang eBPF ay ginagamit upang maghukay nang mas malalim kung saan ito nakakainis o upang subaybayan ang mga elementong hindi nakikita ng perf.

Mga benepisyo ng pagsasama ng parehong kagamitan

  • Buong saklaw ng sistemaAng perf ay umaasa sa mga hardware counter, habang ang eBPF ay maaaring sumaklaw sa lahat mula sa mga syscall hanggang sa application logic, sa gayon ay nakakakuha ng isang kumpletong larawan ng kung ano ang nangyayari sa iyong server.
  • Balanse sa pagitan ng bilis at lalimGamit ang perf, mabilis mong matutukoy na ang isang partikular na proseso o function ay kumokonsumo ng masyadong maraming CPU at pagkatapos ay gagamit ng script eBPF o bpftrace para sa hatiin ang problema at unawain nang detalyado ang konteksto.
  • Kontroladong epekto: maaaring gamitin ang perf sa maiikling panahon para sa mga partikular na pagsusuri, habang ang eBPF ay naka-configure upang kolektahin lamang ang mahahalagang sukatan sa mas mahabang panahon, na binabawasan ang pangkalahatang overhead.
  • Pagsasama sa mga daloy ng trabaho ng DevOpsAng parehong tool ay maaaring isama sa mga CI/CD pipeline, naka-iskedyul na mga diagnostic task, o mga observability dashboard, na bubuo ng mga ulat na maaaring gamitin upang patuloy na pag-optimize ng mga mapagkukunan.

Desafíos y mejores prácticas

Mga pinakakaraniwang hamon

  • La pag-aaral ng curve Mataas ang halaga ng eBPF: kailangan mong maunawaan ang modelo nito ng programming, ang kernel verifier at ang mga implikasyon ng pagkabit sa ilang partikular na hook.
  • Ang isang agresibong perf configuration o hindi maayos na dinisenyong eBPF script ay maaaring magdagdag ng hindi kinakailangang karga, isang bagay na partikular na maselan sa mga kritikal na sistema na may kaunting kakulangan sa mapagkukunan.
  • Sa mga server na may mga lumang butil o mga hindi napapanahong distribusyon, ang eBPF ay maaaring limitado o sadyang hindi magagamit, na napipilitan ang paggamit ng mas tradisyonal na mga pamamaraan.

Mga pangunahing mabuting kasanayan

  • Palaging subukan sa mga kapaligirang pang-development o pre-production Bago mag-deploy ng mga bagong eBPF script sa produksyon, beripikahin muna ang katatagan at pagkonsumo ng resource.
  • Sinasadya na limitahan ang dami ng data nakolekta; mas maraming filter at aggregation ang ilalapat mo sa kernel, mas kaunting ingay at mas kaunting epekto ang mararanasan mo.
  • I-automate ang mga paulit-ulit na pagsusuri sa pamamagitan ng pagsasama ng perf at eBPF sa mga script o playbook na nagpapatakbo ng mga karaniwang diagnostic at bumubuo ng mga maihahambing na ulat sa oras.
Linux 6.14-0
Kaugnay na artikulo:
Ang Linux 6.14 ay nagdudulot ng mga pagpapabuti sa pagganap, pagiging tugma, at seguridad