Text size
പരീക്ഷിച്ചറിഞ്ഞത്6 മിനിറ്റ് വായന

പ്രൊഡക്ഷനിലെ പ്രൊഫൈലിംഗ്: സിപിയു യഥാർഥത്തിൽ എവിടെ പോകുന്നു

മെട്രിക്സ് പറയുന്നത് എന്തോ പതുക്കെയാണെന്ന്. പ്രൊഫൈലുകള് പറയുന്നു എന്തിന് എന്ന്.

Profiling in production: where the CPU actually goes
AI ഉപയോഗിച്ച് സൃഷ്ടിച്ച ചിത്രീകരണം

ഇതാ ഒരു പരിചിതമായ സാഹചര്യം. ഒരു ഡാഷ്ബോർഡ് ഒരു സേവനം കാണിക്കുന്നു അത് ആയിരിക്കേണ്ടതിലും കൂടുതൽ സിപിയു ഉപയോഗിക്കുന്നു. ലേറ്റൻസി വർദ്ധിക്കുന്നു. അളവുകൾ നോക്കൂ: അതെ, സിപിയു ഉയർന്നതാണ്. നിങ്ങൾ ഈ ട്രാക്കുകൾ നോക്കൂ. അഭ്യർത്ഥനകൾ വളരെ വേഗതയുള്ളതാണ്. പക്ഷെ സേവനത്തിനുള്ളിലല്ല, അതിന്റെ ആശ്രിതത്വങ്ങളിലല്ല. രേഖകള് നോക്കൂ. അസാധാരണമായ ഒന്നും ഇല്ല.

നിങ്ങള് ക്ക് അറിയാന് ആഗ്രഹിക്കുന്നത് ഇതാണ്: ഏത് കോഡാണ് ആ സിപിയു മുഴുവനും ഉപയോഗിക്കുന്നുണ്ടോ? അതിനാണ് പ്രൊഫൈലിംഗ് ഉത്തരം പറയുന്നത്. നിരന്തരമായ പ്രൊഫൈലിംഗ് ഉല്പാദനത്തില് എല്ലാ സമയത്തും ഉത്തരം നൽകുന്നു.

പ്രൊഫൈലിംഗ് കാണിക്കുന്നത്

A പ്രൊഫൈൽ ഒരു പ്രോഗ്രാം അതിന്റെ വിഭവങ്ങൾ ചെലവഴിക്കുന്ന റെക്കോർഡുകൾ, വ്യക്തിഗത ഫംഗ്ഷനുകളും വരികളും വരെഃ

  • സി. പി. യു പ്രൊഫൈലുകൾ: സിപിയുവിൽ ഏത് ഫംഗ്ഷനുകളാണ് പ്രവർത്തിക്കുന്നത്, എത്രയാണ്.
  • മെമ്മറി (ഹീപ്) പ്രൊഫൈലുകൾ: ഏത് കോഡാണ് മെമ്മറി അനുവദിക്കുന്നത്, എത്രമാത്രം ഇപ്പോഴും സൂക്ഷിച്ചിരിക്കുന്നു.
  • വിഹിതം വിതരണം ചെയ്യുന്ന പ്രൊഫൈലുകൾ: എത്ര തവണ മെമ്മറി അനുവദിക്കുന്നു, അത് മാലിന്യ ശേഖരണത്തിന്റെ ചെലവ് വർദ്ധിപ്പിക്കുന്നു.
  • ലോക്ക്, ഗൊറൂട്ടിൻ / ത്രെഡ് പ്രൊഫൈലുകൾ: കോഡ് കാത്തിരിക്കുന്നിടത്ത്.

പ്രൊഫൈലുകൾ സാധാരണയായി കാണിക്കുന്നത് തീജ്വാലാ ഗ്രാഫുകൾഓരോ ബാറും ഒരു ഫംഗ്ഷനാണ്, അതിന്റെ വീതി അത് എത്ര സമയം എടുത്തു എന്ന് കാണിക്കുന്നു, അത് വിളിച്ച ഫംഗ്ഷനുകൾ മുകളിൽ അടുക്കിയിരിക്കുന്നു. വിശാലമായ ബാറുകളാണ് സമയം അവസാനിക്കുന്ന സ്ഥലം. ഉദാഹരണത്തിന്, സിപിയുവിന്റെ 30% ജെഎസ്ഒൻ സീരിയലൈസേഷനിലോ അല്ലെങ്കിൽ ഓരോ അഭ്യർത്ഥനയിലും സമാഹരിക്കുന്ന ഒരു റെജെക്സിലോ പോകുന്നുവെന്ന് നിങ്ങൾക്ക് ഒറ്റനോട്ടത്തിൽ കാണാം.

നിങ്ങളുടെ സേവനം വളരെ പതുക്കെയാണെന്ന് മെട്രിക്സ് പറയുന്നു. ഒരു തീജ്വാല ഗ്രാഫ് കോഡ് ലൈനിനെ ചൂണ്ടിക്കാണിക്കുന്നു അത് വേഗത കുറയ്ക്കുന്നു.

തുടർച്ചയായ പ്രൊഫൈലിംഗ് എന്തിന്

ഡെവലപ്പർമാർ പതിറ്റാണ്ടുകളായി കോഡ് പ്രൊഫൈൽ ചെയ്യുന്നു, പക്ഷേ സാധാരണയായി ലോക്കലായി, കുറച്ച് മിനിറ്റ്, പ്രത്യേക ഉപകരണങ്ങളിലൂടെ. പ്രശ്നം: ഉല്പാദനം വ്യത്യസ്തമായി പെരുമാറുന്നു. വ്യത്യസ്ത ഡാറ്റ, വ്യത്യസ്ത ട്രാഫിക്, വ്യത്യസ്ത ലോഡ്.

തുടര് ച്ചയായുള്ള പ്രൊഫൈലിംഗ് പ്രൊഫൈലുകൾ നിരന്തരം ശേഖരിക്കുകയും, കുറഞ്ഞ ഓവർഹെഡ് ഉപയോഗിച്ച് അവ സൂക്ഷിക്കുകയും ചെയ്യുന്നു, അങ്ങനെ നിങ്ങൾക്ക് കഴിയുംഃ

  • കഴിഞ്ഞ കാലത്തെ ഏതു ഘട്ടത്തിലും നോക്കൂ: "ഇന്നലെ ഉച്ചക്കോടിക്കിടയിൽ ഈ സേവനം എന്താണ് ചെയ്തത്?"
  • താരതമ്യം ചെയ്യുക "2.4 പതിപ്പിനു ശേഷം സിപിയു ഉപയോഗത്തിൽ എന്തെല്ലാം മാറ്റങ്ങൾ സംഭവിച്ചു?
  • മുഴുവൻ കപ്പലുകളും കാണണം, ഒരു കേസ് മാത്രമല്ല.
  • പ്രൊഫൈലുകളെ ട്രാക്കുകളുമായി ബന്ധിപ്പിക്കുക, അങ്ങനെ ഒരു സ്ലോ സ്പാൻ കൃത്യമായി ഏത് കോഡ് പ്രവർത്തിപ്പിക്കുന്നു എന്ന് കാണിക്കുന്നു.

ഉപകരണങ്ങള്

  • ഗ്രഫാന പൈറോസ്കോപ്പ്: തുറന്ന ഉറവിടം, ഗ്രാഫാനയുമായി സംയോജിപ്പിക്കുന്നു, SDK കളിലൂടെയും eBPF വഴിയും നിരവധി ഭാഷകളെ പിന്തുണയ്ക്കുന്നു.
  • പാര് ക്ക: ഓപ്പൺ സോഴ്സ്, eBPF അടിസ്ഥാനമാക്കിയുള്ള, കോഡ് മാറ്റങ്ങളില്ലാതെ ഒരു നോഡിലെ എല്ലാം പ്രൊഫൈൽ ചെയ്യുന്നു.
  • ഓപ്പൺ ടെലിമെട്രി പ്രൊഫൈലിംഗ്: പ്രൊഫൈലുകൾ നാലാമത്തെ ഓപ്പൺ ടെലിമെട്രി സിഗ്നലായി മാറുകയാണ്. ഇപ്പോഴും പക്വത പ്രാപിക്കുന്നു, പക്ഷെ കാര്യങ്ങൾ എവിടെയാണ് പോകുന്നത് എന്ന് വ്യക്തമാണ്.
  • വാണിജ്യപരമായി: ഡാറ്റാഡോഗ്, എലാസ്റ്റിക്, ഗൂഗിൾ ക്ലൌഡ് പ്രൊഫൈലർ, പോളാർ സിഗ്നലുകൾ തുടങ്ങിയവ.

ശേഖരിക്കാന് രണ്ട് വഴികളുണ്ട്:

  • ഇ. ബി. പി. എഫ്. അടിസ്ഥാനമാക്കിയുള്ള: ഓരോ നോഡിലും ഒരു ഏജന്റ് ഓരോ പ്രക്രിയയും, ഏത് ഭാഷയിലും, കോഡ് മാറ്റങ്ങളില്ലാതെ പ്രൊഫൈൽ ചെയ്യുന്നു. വ്യാപകമായി വിതരണം ചെയ്യാന് എളുപ്പമാണ്. സമാഹരിച്ച ഭാഷകൾക്ക് മികച്ച പിന്തുണയും വ്യാഖ്യാനിച്ച ഭാഷകൾക്ക് പിന്തുണയും വർദ്ധിക്കുന്നു.
  • SDK അടിസ്ഥാനമാക്കിയുള്ള: നിങ്ങളുടെ അപേക്ഷയിൽ ഒരു ലൈബ്രറി. ചില റൺടൈമുകൾക്ക് (ഗോ അല്ലെങ്കിൽ ജാവയിലെ മെമ്മറി പ്രൊഫൈലുകൾ പോലുള്ളവ) ഒരു ആശ്രിതത്വം ചേർക്കുന്നതിന്റെ ചെലവിൽ സമ്പന്നമായ വിവരങ്ങൾ നൽകുന്നു.

മേല് ചെലവ്

സാധാരണയായി ചോദിക്കുന്ന ആദ്യത്തെ ചോദ്യം, പ്രൊഫൈലിംഗ് ഉല്പാദനത്തെ മന്ദഗതിയിലാക്കുന്നുണ്ടോ? ആധുനിക തുടർച്ചയായ പ്രൊഫൈലറുകൾ സാമ്പിൾ ചെയ്യുന്നു, ഉദാഹരണത്തിന് ഓരോ ഫംഗ്ഷൻ കോൾ ട്രാക്കുചെയ്യുന്നതിനുപകരം സെക്കൻഡിൽ നൂറു തവണ സ്റ്റാക്കിനെ നോക്കുന്നു. ഓവർഹെഡ് സാധാരണയായി ചെറുതാണ്, പലപ്പോഴും ഉപകരണത്തെയും ക്രമീകരണങ്ങളെയും ആശ്രയിച്ച് സിപിയുവിന്റെ 1% ആണ്.

പലപ്പോഴും കിട്ടുന്ന ലാഭവുമായി താരതമ്യം ചെയ്യുമ്പോൾ, അത് വളരെ നല്ലൊരു വിലയാണു്. പക്ഷെ നിങ്ങളുടെ വർക്ക് ലോഡുകളിൽ അത് പരീക്ഷിച്ചു നോക്കുക, കുറച്ച് സേവനങ്ങളുമായി തുടങ്ങുക.

പ്രൊഫൈലിംഗ് സിപിയു ചെലവുകൾ കുറയ്ക്കുന്നതെങ്ങനെ

ഇവിടെയാണ് തുടര് ച്ചയായുള്ള പ്രൊഫൈലിംഗ് സ്വയം പ്രതിഫലം നൽകുന്നത്. ഫ്ലീറ്റ് വ്യാപകമായ തീഗ്രാഫുകൾ ആദ്യം പരിശോധിക്കുമ്പോൾ സാധാരണ കണ്ടെത്തലുകൾ:

  • ചെലവേറിയ മരച്ചുവട്ടുകൾ: ഒരിക്കലും അയക്കാത്ത ഡീബഗ് ലോഗുകൾക്കുള്ള സ്ട്രിംഗ് ഫോർമാറ്റിംഗും സീരിയലൈസേഷനും.
  • കാര്യക്ഷമതയില്ലാത്ത സീരിയലൈസേഷൻ: ജെ എസ് ഒ എൻകോഡിംഗും ഡീകോഡിംഗുമൊക്കെ എപിഐ സേവനങ്ങളിലെ സിപിയു പ്രാധാന്യമുള്ളവയാണ്.
  • ആവർത്തിച്ചു സമാഹരിച്ച റിജെക്സുകൾ ഒരിക്കൽ എന്നതിനു പകരം.
  • അനാവശ്യമായ വിഹിതം വലിയ മാലിന്യം ശേഖരിക്കാനുള്ള ചെലവ് ഉണ്ടാക്കുന്നു.
  • ചാറ്റ് ലൈബ്രറികൾ: ഒരു HTTP ക്ലയന്റ് അല്ലെങ്കിൽ ORM പ്രതീക്ഷിച്ചതിലും കൂടുതൽ ജോലി ചെയ്യുന്നു.
  • ചൂടുള്ള ലൂപ്പുകൾ വർഷങ്ങളായി ആരും നോക്കിയിട്ടില്ലാത്ത ഒരു കോഡിലാണ്.

നൂറുകണക്കിന് കോർസ് ഉപയോഗിച്ച് പ്രവർത്തിക്കുന്ന ഒരു സേവനത്തിന്റെ ഫ്ലേം ഗ്രാഫിൽ ഒരു വിശാലമായ ബാർ പരിഹരിക്കുക വഴി യഥാർത്ഥ പണം ലാഭിക്കാൻ കഴിയും. അതുകൊണ്ടാണ് പ്രൊഫൈലിംഗ് ഫിൻഓപ്സ് സംഭാഷണങ്ങളുടെ ഭാഗമാകുന്നത്, പ്രകടന ക്രമീകരണം മാത്രമല്ല.

ആരംഭിക്കാനുള്ള ലളിതമായ വഴി

  1. ഒരു ടെസ്റ്റ് ക്ലസ്റ്ററിന് ഒരു ഇ. ബി. പി. എഫ് അടിസ്ഥാനമാക്കിയുള്ള പ്രൊഫൈലര് (പൈറോസ്കോപ്പിന്റെ ഏജന്റ്, പാര്ക, അല്ലെങ്കിൽ ഒ. ടി. ഇ. എല് പ്രൊഫൈലിംഗ് ഏജന്റ്) സ്ഥാപിക്കുക.
  2. നിങ്ങളുടെ ഏറ്റവും സിപിയു വിശക്കുന്ന സേവനത്തിനുള്ള ഫ്ലേം ഗ്രാഫ് തുറക്കുക.
  3. നിങ്ങളുടെ പ്രധാന ബിസിനസ് ലോഗിക് അല്ലാത്ത ഏറ്റവും വിശാലമായ ബാറുകൾ നോക്കുക.
  4. ഒന്ന് തെരഞ്ഞെടുത്ത്, ശരിയാക്കി, വിന്യസിച്ചു, താരതമ്യം ചെയ്യുക അതിനു മുമ്പും ശേഷവും.

ആദ്യത്തെ താരതമ്യം, വളരെ ഇടുങ്ങിയ ബാറും കുറഞ്ഞ സിപിയു ഗ്രാഫും, സാധാരണയായി ടീമിലെ മറ്റുള്ളവരെ ബോധ്യപ്പെടുത്തുന്നു.

അത് വിലപ്പെട്ടതാണോ?

ഏതെങ്കിലും ടീം വലിയ തോതിലുള്ള സേവനങ്ങൾ നടത്തുന്നുണ്ടെങ്കിൽ, അതെ. തുടർച്ചയായ പ്രൊഫൈലിംഗ് "സേവനം വേഗത കുറഞ്ഞതാണ്" എന്നതും "ഇതാണ് കാരണം" എന്നതും തമ്മിലുള്ള വിടവ് പൂരിപ്പിക്കുന്നു, കൂടാതെ ഇത് നിരന്തരം മുഴുവൻ നിരീക്ഷണ സ്റ്റാക്കിനും പണം നൽകുന്ന ലാഭം കണ്ടെത്തുന്നു.

എന്റെ അഭിപ്രായം: നിങ്ങളുടെ സിപിയു എവിടെ പോകുന്നു എന്ന് ഊഹിക്കരുത്. നോക്കൂ. സാധാരണയായി നമ്മളെക്കാളും സത്യസന്ധമാണ് ഈ ഗ്രാഫ്.

ഡെസ്ലി