Ubuntu Online, Fedora Online, Windows online emulator അല്ലെങ്കിൽ MAC OS ഓൺലൈൻ എമുലേറ്റർ എന്നിങ്ങനെയുള്ള ഞങ്ങളുടെ ഒന്നിലധികം സൗജന്യ ഓൺലൈൻ വർക്ക്സ്റ്റേഷനുകളിലൊന്ന് ഉപയോഗിച്ച് OnWorks സൗജന്യ ഹോസ്റ്റിംഗ് ദാതാവിൽ പ്രവർത്തിപ്പിക്കാവുന്ന ട്രേസ്-cmd-റെക്കോർഡ് കമാൻഡ് ആണിത്.
പട്ടിക:
NAME
trace-cmd-record - Ftrace Linux ഇന്റേണൽ ട്രേസറിൽ നിന്ന് ഒരു ട്രെയ്സ് രേഖപ്പെടുത്തുക
സിനോപ്സിസ്
ട്രേസ്-സിഎംഡി റെക്കോര്ഡ് [ഓപ്ഷനുകൾ] [കമാൻഡ്]
വിവരണം
ദി ട്രേസ്-സിഎംഡി(1) റെക്കോർഡ് കമാൻഡ് റെക്കോർഡ് ചെയ്യുന്നതിനായി Ftrace Linux കേർണൽ ട്രേസർ സജ്ജീകരിക്കും
നിർദ്ദിഷ്ട പ്ലഗിന്നുകൾ അല്ലെങ്കിൽ സംഭവിക്കുന്ന ഇവന്റുകൾ കമാൻഡ് നിർവ്വഹിക്കുന്നു. കമാൻഡ് ഇല്ലെങ്കിൽ
നൽകിയിരിക്കുന്നു, തുടർന്ന് ഉപയോക്താവ് Ctrl-C അമർത്തുന്നത് വരെ അത് റെക്കോർഡ് ചെയ്യും.
ട്രെയ്സ്-സിഎംഡിയുടെ റെക്കോർഡ് കമാൻഡ് വ്യത്യസ്തമായവ കണ്ടെത്തുന്നതിന് Ftrace ട്രേസർ സജ്ജീകരിക്കും
കമാൻഡ് ലൈനിൽ നൽകിയിരിക്കുന്ന ഇവന്റുകൾ അല്ലെങ്കിൽ പ്ലഗിനുകൾ. അത് പിന്നീട് നിരവധി എണ്ണം സൃഷ്ടിക്കും
കേർണൽ റിംഗ് ബഫറിൽ നിന്ന് റെക്കോർഡിംഗ് ആരംഭിക്കുന്ന ട്രെയ്സിംഗ് പ്രക്രിയകൾ (ഓരോ സിപിയുവിനും ഒന്ന്).
നേരെ താൽക്കാലിക ഫയലുകളിലേക്ക്. കമാൻഡ് പൂർത്തിയാകുമ്പോൾ (അല്ലെങ്കിൽ Ctrl-C അടിച്ചാൽ) എല്ലാം
പിന്നീട് വായിക്കാൻ കഴിയുന്ന ഒരു trace.dat ഫയലിലേക്ക് ഫയലുകൾ സംയോജിപ്പിക്കും (കാണുക
ട്രേസ്-സിഎംഡി-റിപ്പോർട്ട്(1)).
ഓപ്ഷനുകൾ
-p പ്ലഗിൻ
ഒരു ട്രെയ്സ് പ്ലഗിൻ വ്യക്തമാക്കുക. പ്ലഗിനുകൾ സാധാരണയായി കൂടുതൽ ചെയ്യുന്ന പ്രത്യേക Ftrace ട്രേസറുകളാണ്
ഒരു സംഭവം കണ്ടെത്തുക. സാധാരണ പ്ലഗിനുകൾ ഫംഗ്ഷൻ, ഫംഗ്ഷൻ_ഗ്രാഫ്, preemptirqsoff,
irqsoff, മുൻകരുതൽ, ഒപ്പം ഉണരുക. പ്രവർത്തിക്കുന്ന കേർണൽ ഒരു പ്ലഗിൻ പിന്തുണയ്ക്കണം. ലേക്ക്
ലഭ്യമായ പ്ലഗിന്നുകളുടെ ഒരു ലിസ്റ്റ് കാണുക, കാണുക ട്രേസ്-സിഎംഡി-ലിസ്റ്റ്(1).
-e സംഭവം
കണ്ടെത്താൻ ഒരു ഇവന്റ് വ്യക്തമാക്കുക. ലിനക്സിൽ വിവിധ സ്റ്റാറ്റിക് ട്രെയ്സ് പോയിന്റുകൾ ചേർത്തിട്ടുണ്ട്
കേർണൽ. നൽകിയിട്ടുള്ള എല്ലാ ഇവന്റുകളും നിങ്ങൾക്ക് പ്രവർത്തനക്ഷമമാക്കാൻ കഴിയുന്ന ഉപസിസ്റ്റം അനുസരിച്ച് അവയെ തരംതിരിച്ചിരിക്കുന്നു
സബ്സിസ്റ്റം അല്ലെങ്കിൽ പ്രവർത്തനക്ഷമമാക്കേണ്ട നിർദ്ദിഷ്ട ഇവന്റുകൾ വ്യക്തമാക്കുക. ദി സംഭവം ഫോർമാറ്റിലാണ്
"ഉപസിസ്റ്റം: ഇവന്റ്-നാമം". കൂടാതെ നിങ്ങൾക്ക് ഉപസിസ്റ്റം വ്യക്തമാക്കാനും കഴിയും
: സംഭവം-പേര് അല്ലെങ്കിൽ "ഉപസിസ്റ്റം:" ഇല്ലാത്ത ഇവന്റ്-നാമം. "-e sched_switch" ഉപയോഗിക്കുന്നു
"sched_switch" ഇവന്റ് പ്രാപ്തമാക്കുക, "-e sched" എന്നതിന് കീഴിലുള്ള എല്ലാ ഇവന്റുകളും പ്രാപ്തമാക്കും
"ഷെഡ്" ഉപസിസ്റ്റം.
'ഇവന്റ്' എന്നതിൽ ഗ്ലോബ് എക്സ്പ്രഷനുകളും അടങ്ങിയിരിക്കാം. അതായത്, "*സ്റ്റാറ്റ്*" ചെയ്യും
"stat" എന്ന അക്ഷരങ്ങൾ ഉള്ള എല്ലാ ഇവന്റുകളും (അല്ലെങ്കിൽ ഉപസിസ്റ്റം) തിരഞ്ഞെടുക്കുക
പേരുകൾ.
എല്ലാ ഇവന്റുകളും പ്രവർത്തനക്ഷമമാക്കാൻ 'എല്ലാം' എന്ന കീവേഡ് ഉപയോഗിക്കാം.
-a
റെക്കോർഡ് ചെയ്യുന്ന എല്ലാ ഇവന്റുകളുടെയും ഔട്ട്പുട്ട് ഫോർമാറ്റ് ഫയൽ ഔട്ട്പുട്ട് ഫയലിൽ സംരക്ഷിച്ചിട്ടുണ്ട്
അത് പിന്നീട് പ്രദർശിപ്പിക്കാൻ കഴിയും. എന്നാൽ മറ്റ് ഇവന്റുകൾ ഇല്ലാതെ ട്രെയ്സിൽ പ്രവർത്തനക്ഷമമാക്കിയാൽ
ട്രേസ്-സിഎംഡിയുടെ അറിവ്, ആ ഇവന്റുകളുടെ ഫോർമാറ്റുകൾ റെക്കോർഡ് ചെയ്യപ്പെടില്ല, ട്രേസ്-സിഎംഡി
റിപ്പോർട്ടിന് അവ പ്രദർശിപ്പിക്കാൻ കഴിയില്ല. അങ്ങനെയാണെങ്കിൽ, വ്യക്തമാക്കുക -a
ഓപ്ഷനും സിസ്റ്റത്തിലെ എല്ലാ ഇവന്റുകളുടെയും ഫോർമാറ്റും സംരക്ഷിക്കപ്പെടും.
-T
ഓരോ ഇവന്റിലും ഒരു സ്റ്റാക്ക്ട്രെയിസ് പ്രവർത്തനക്ഷമമാക്കുക. ഉദാഹരണത്തിന്:
-0 [003] 58549.289091: sched_switch: kworker/0:1:0 [120] R ==> trace-cmd:2603 [120]
-0 [003] 58549.289092: kernel_stack:
=> ഷെഡ്യൂൾ (ffffffff814b260e)
=> cpu_idle (ffffffff8100a38c)
=> start_secondary (ffffffff814ab828)
--func-stack
എല്ലാ ഫംഗ്ഷനുകളിലും ഒരു സ്റ്റാക്ക് ട്രെയ്സ് പ്രവർത്തനക്ഷമമാക്കുക. ഇത് "പ്രവർത്തനത്തിന്" മാത്രമേ ബാധകമാകൂ എന്ന് ശ്രദ്ധിക്കുക.
പ്ലഗിൻ ട്രേസർ, കൂടാതെ -l ഓപ്ഷൻ ഉപയോഗിക്കുകയും വിജയിക്കുകയും ചെയ്താൽ മാത്രമേ പ്രാബല്യത്തിൽ വരികയുള്ളൂ
പരിമിതപ്പെടുത്തുന്ന പ്രവർത്തനങ്ങൾ. ഫംഗ്ഷൻ ട്രെയ്സർ ഫിൽട്ടർ ചെയ്തിട്ടില്ലെങ്കിൽ, സ്റ്റാക്ക് ട്രെയ്സ് ആണ്
പ്രവർത്തനക്ഷമമാക്കി, നിങ്ങൾക്ക് മെഷീൻ ലൈവ് ലോക്ക് ചെയ്യാം.
-f ഫിൽറ്റർ ചെയ്യുക
മുമ്പത്തെ ഇവന്റിനായി ഒരു ഫിൽട്ടർ വ്യക്തമാക്കുക. ഇത് എ കഴിഞ്ഞ് വരണം -e. ഇത് ഫിൽട്ടർ ചെയ്യും
ഇവന്റിന്റെ ഉള്ളടക്കത്തെ അടിസ്ഥാനമാക്കി എന്ത് ഇവന്റുകൾ രേഖപ്പെടുത്തും. എന്നതിലേക്ക് ഫിൽട്ടറിംഗ് കൈമാറുന്നു
കേർണൽ നേരിട്ട് അതിനാൽ ഏത് ഫിൽട്ടറിംഗ് അനുവദനീയമാണ് എന്നത് കേർണലിന്റെ ഏത് പതിപ്പിനെ ആശ്രയിച്ചിരിക്കും
നിങ്ങൾക്ക് ഉണ്ട്. അടിസ്ഥാനപരമായി, ഒരു ഇവന്റ് വേണോ എന്ന് പരിശോധിക്കാൻ സി നൊട്ടേഷൻ ഉപയോഗിക്കാൻ ഇത് നിങ്ങളെ അനുവദിക്കും
പ്രോസസ്സ് ചെയ്തതോ അല്ലാത്തതോ.
==, >=, <=, >, <, &, |, && ഒപ്പം ||
ഫീൽഡുകൾ താരതമ്യം ചെയ്യാൻ മുകളിൽ പറഞ്ഞവ സാധാരണയായി സുരക്ഷിതമാണ്.
-R തോക്കിന്റെ കാഞ്ചി
മുമ്പത്തെ ഇവന്റിനായി ഒരു ട്രിഗർ വ്യക്തമാക്കുക. ഇത് എ കഴിഞ്ഞ് വരണം -e. ഇത് ഒരു ചേർക്കും
തന്നിരിക്കുന്ന ഇവന്റിന് ട്രിഗർ നൽകി. ട്രിഗർ മാത്രം പ്രവർത്തനക്ഷമമാക്കാൻ, ഇവന്റ് തന്നെയല്ല,
ശേഷം ഇവന്റ് സ്ഥാപിക്കുക -v ഓപ്ഷൻ.
കൂടുതൽ വിവരങ്ങൾക്ക് Linux കേർണൽ ഉറവിടത്തിലെ Documentation/trace/events.txt കാണുക
ട്രിഗറുകളെക്കുറിച്ചുള്ള വിവരങ്ങൾ.
-v
കമാൻഡ് ലൈനിൽ അതിന് ശേഷം വ്യക്തമാക്കിയ എല്ലാ ഇവന്റുകളും കണ്ടെത്താതിരിക്കാൻ ഇത് ഇടയാക്കും.
കണ്ടെത്തേണ്ട ഒരു ഉപസിസ്റ്റം തിരഞ്ഞെടുക്കുന്നതിനും എന്നാൽ വിവിധ ഇവന്റുകൾ ഒഴിവാക്കുന്നതിനും ഇത് ഉപയോഗപ്രദമാണ്.
ഉദാഹരണത്തിന്: "-e sched -v -e "*stat\*"", ഷെഡ് സബ്സിസ്റ്റത്തിലെ എല്ലാ ഇവന്റുകളും പ്രവർത്തനക്ഷമമാക്കും
പേരുകളിൽ "സ്റ്റാറ്റ്" ഉള്ളവ ഒഴികെ.
ശ്രദ്ധിക്കുക: *-v* ഓപ്ഷൻ വഴിയിൽ നിന്ന് എടുത്തതാണ് grep(1) ഇനിപ്പറയുന്നവ വിപരീതമാക്കുന്നു
മത്സരങ്ങൾ.
-F
ഇത് കമാൻഡ് ലൈനിൽ നൽകിയിരിക്കുന്ന എക്സിക്യൂട്ടബിൾ മാത്രം ഫിൽട്ടർ ചെയ്യും. കമാൻഡ് ഇല്ലെങ്കിൽ
നൽകിയിരിക്കുന്നു, അപ്പോൾ അത് സ്വയം ഫിൽട്ടർ ചെയ്യും (വളരെ അർത്ഥമില്ലാത്തത്). ഉപയോഗിക്കുന്നത് -F നിങ്ങളെ കണ്ടെത്താൻ അനുവദിക്കും
തന്നിരിക്കുന്ന കമാൻഡ് മൂലമുണ്ടാകുന്ന സംഭവങ്ങൾ മാത്രം.
-P PID
സമാനമായ -F എന്നാൽ ട്രെയ്സ് ചെയ്യാൻ ഒരു പ്രോസസ് ഐഡി വ്യക്തമാക്കാൻ നിങ്ങളെ അനുവദിക്കുന്നു.
-c
ഒന്നുകിൽ ഉപയോഗിച്ചു -F പ്രക്രിയയുടെ കുട്ടികളെയും കണ്ടെത്താൻ.
-C ക്ലോക്ക്
ട്രേസ് ക്ലോക്ക് "ക്ലോക്ക്" ആയി സജ്ജമാക്കുക.
ഉപയോഗം ട്രേസ്-സിഎംഡി(1) ലിസ്റ്റ് -സി ഏതൊക്കെ ക്ലോക്കുകൾ ലഭ്യമാണെന്ന് കാണുന്നതിന്.
-o ഔട്ട്പുട്ട്-ഫയൽ
സ്ഥിരസ്ഥിതിയായി, ട്രേസ്-സിഎംഡി റിപ്പോർട്ട് സൃഷ്ടിക്കും trace.dat ഫയൽ. നിങ്ങൾക്ക് മറ്റൊന്ന് വ്യക്തമാക്കാം
എന്നതിനൊപ്പം എഴുതാനുള്ള ഫയൽ -o ഓപ്ഷൻ.
-l ഫംഗ്ഷൻ-നാമം
ഇത് പരിമിതപ്പെടുത്തും ഫംഗ്ഷൻ ഒപ്പം ഫംഗ്ഷൻ_ഗ്രാഫ് നൽകിയിരിക്കുന്നത് മാത്രം കണ്ടെത്താനുള്ള ട്രേസറുകൾ
ഫംഗ്ഷൻ നാമം. ഒന്നില് കൂടുതല് -l കൂടുതൽ കണ്ടെത്തുന്നതിന് കമാൻഡ് ലൈനിൽ വ്യക്തമാക്കിയേക്കാം
ഒരു ഫംഗ്ഷനേക്കാൾ. ഗ്ലോബ് എക്സ്പ്രഷനുകളുടെ പരിമിതമായ ഉപയോഗവും അനുവദനീയമാണ്. ഇവയാണ്
മത്സരം* ആരംഭിക്കുന്ന ഫംഗ്ഷനുകൾ ഫിൽട്ടർ ചെയ്യാൻ മാത്രം മത്സരം. * മത്സരം ഫിൽട്ടർ ചെയ്യാൻ മാത്രം
അവസാനിക്കുന്ന പ്രവർത്തനങ്ങൾ മത്സരം. *മത്സരം\* അടങ്ങിയിരിക്കുന്ന ഫംഗ്ഷനുകളിൽ മാത്രം ഫിൽട്ടർ ചെയ്യാൻ
മത്സരം.
-g ഫംഗ്ഷൻ-നാമം
ഈ ഓപ്ഷൻ function_graph പ്ലഗിനിനുള്ളതാണ്. ഇത് നൽകിയിരിക്കുന്ന ഫംഗ്ഷനെ ഗ്രാഫ് ചെയ്യും. അത്
ഇത് ഫംഗ്ഷനും അത് വിളിക്കുന്ന എല്ലാ ഫംഗ്ഷനുകളും മാത്രമേ കണ്ടെത്തൂ. നിങ്ങൾക്ക് കൂടുതൽ കഴിയും
ഒന്നിനെക്കാൾ -g കമാൻഡ് ലൈനിൽ.
-n ഫംഗ്ഷൻ-നാമം
ഇതിന് വിപരീത ഫലമുണ്ട് -l. കൂടെ നൽകിയിരിക്കുന്ന പ്രവർത്തനം -n ഓപ്ഷൻ ആയിരിക്കില്ല
കണ്ടെത്തി. ഇത് മുൻഗണന എടുക്കുന്നു, അതായത്, നിങ്ങൾ രണ്ടിനും ഒരേ ഫംഗ്ഷൻ ഉൾപ്പെടുത്തുകയാണെങ്കിൽ -n
ഒപ്പം -l, അത് കണ്ടെത്തുകയില്ല.
-d
ചില ട്രേസർ പ്ലഗിനുകൾ ഡിഫോൾട്ടായി ഫംഗ്ഷൻ ട്രെയ്സർ പ്രവർത്തനക്ഷമമാക്കുന്നു. ലേറ്റൻസി ട്രേസറുകൾ പോലെ.
ഈ ഓപ്ഷൻ ഫംഗ്ഷൻ ട്രേസർ ആരംഭിക്കുമ്പോൾ പ്രവർത്തനക്ഷമമാക്കുന്നത് തടയുന്നു.
-D
ഓപ്ഷൻ -d ഫംഗ്ഷൻ ട്രെയ്സർ പ്രവർത്തനരഹിതമാക്കാൻ ഫംഗ്ഷൻ-ട്രേസ് ഓപ്ഷൻ ഉപയോഗിക്കാൻ ശ്രമിക്കും
(ലഭ്യമെങ്കിൽ), അല്ലെങ്കിൽ അത് പ്രോക് ഫയലിലേക്ക് ഡിഫോൾട്ടാകും:
/proc/sys/kernel/ftrace_enabled, എന്നാൽ ഫംഗ്ഷൻ-ട്രേസ് ഓപ്ഷൻ ആണെങ്കിൽ അത് തൊടില്ല
ലഭ്യമാണ്. ദി -D ഓപ്ഷൻ ftrace_enabled proc ഫയലും അതുപോലെ തന്നെ പ്രവർത്തനരഹിതമാക്കും
ഫംഗ്ഷൻ-ട്രേസ് ഓപ്ഷൻ നിലവിലുണ്ടെങ്കിൽ.
ശ്രദ്ധിക്കുക, ഇത് ഉപയോക്താക്കൾ ഉൾപ്പെടുന്ന എല്ലാ ഉപയോക്താക്കൾക്കും ഫംഗ്ഷൻ ട്രെയ്സിംഗ് പ്രവർത്തനരഹിതമാക്കുന്നു
ഫ്രെയിസ് ട്രേസറുകൾക്ക് പുറത്ത് (stack_tracer, perf, മുതലായവ).
-O ഓപ്ഷൻ
Ftrace-ന് പ്രവർത്തനക്ഷമമാക്കാനോ പ്രവർത്തനരഹിതമാക്കാനോ കഴിയുന്ന വിവിധ ഓപ്ഷനുകൾ ഉണ്ട്. ഇത് സെറ്റ് ചെയ്യാൻ നിങ്ങളെ അനുവദിക്കുന്നു
അവരെ. വാചകം കൂട്ടിച്ചേർക്കുന്നു ഇല്ല ഒരു ഓപ്ഷൻ അത് പ്രവർത്തനരഹിതമാക്കുന്നു. ഉദാഹരണത്തിന്: "-O nograph-time"
"ഗ്രാഫ്-ടൈം" Ftrace ഓപ്ഷൻ പ്രവർത്തനരഹിതമാക്കും.
-s ഇടവേള
റിംഗ് ബഫറിൽ നിന്ന് റെക്കോർഡ് ചെയ്യുന്നതിനായി ട്രേസ്-സിഎംഡി സൃഷ്ടിക്കുന്ന പ്രക്രിയകൾ ഉണരേണ്ടതുണ്ട്
റെക്കോർഡിംഗ് നടത്തുക. ക്രമീകരണം ഇടവേള പൂജ്യം വരെ പ്രക്രിയകൾ ഉണർത്താൻ ഇടയാക്കും
ഓരോ തവണയും പുതിയ ഡാറ്റ ബഫറിൽ എഴുതുന്നു. എന്നാൽ Ftrace കേർണൽ റെക്കോർഡ് ചെയ്യുന്നതിനാൽ
പ്രവർത്തനം, ഈ പ്രക്രിയകളുടെ പ്രവർത്തനം ഉറക്കത്തിലേക്ക് മടങ്ങുന്നത് പുതിയ സംഭവങ്ങൾക്ക് കാരണമായേക്കാം
റിംഗ് ബഫർ ഇത് പ്രക്രിയയെ വീണ്ടും ഉണർത്തും. ഇത് അനാവശ്യമായി അധിക ഡാറ്റ ചേർക്കും
റിംഗ് ബഫറിലേക്ക്.
'ഇന്റർവെൽ' മെട്രിക് മൈക്രോസെക്കൻഡാണ്. സ്ഥിരസ്ഥിതി 1000 (1 മി.എസ്) ആയി സജ്ജീകരിച്ചിരിക്കുന്നു.
ഓരോ റെക്കോർഡിംഗ് പ്രക്രിയയും ഉണരുന്നതിന് മുമ്പ് ഉറങ്ങുന്ന സമയമാണിത്
റിംഗ് ബഫറിൽ എഴുതിയ ഏതെങ്കിലും പുതിയ ഡാറ്റ രേഖപ്പെടുത്തുക.
-r മുൻഗണന
ക്യാപ്ചർ ത്രെഡുകൾ പ്രവർത്തിപ്പിക്കുന്നതിനുള്ള മുൻഗണന. തിരക്കേറിയ സംവിധാനത്തിൽ ട്രെയ്സ് ക്യാപ്ചറിംഗ്
ത്രെഡുകൾ തടസ്സപ്പെട്ടേക്കാം, സംഭവങ്ങൾ നഷ്ടപ്പെടാം. ഇത് അവരുടെ മുൻഗണന വർദ്ധിപ്പിക്കുന്നു
തത്സമയ (FIFO) മുൻഗണനയിലേക്കുള്ള ത്രെഡുകൾ. എന്നാൽ ഈ ഓപ്ഷൻ ശ്രദ്ധയോടെ ഉപയോഗിക്കുക, അതിനും കഴിയും
കണ്ടെത്തുന്ന സിസ്റ്റത്തിന്റെ സ്വഭാവം മാറ്റുക.
-b വലുപ്പം
ഇത് റിംഗ് ബഫർ വലുപ്പം സജ്ജമാക്കുന്നു വലുപ്പം കിലോബൈറ്റുകൾ. കാരണം Ftrace റിംഗ് ബഫർ ആണ്
ഓരോ സിപിയുവിലും, ഈ വലുപ്പം കേർണലിനുള്ളിലെ ഓരോ സിപിയു റിംഗ് ബഫറിന്റെയും വലുപ്പമാണ്. ഉപയോഗിക്കുന്നത്
10000 CPU-കളുള്ള ഒരു മെഷീനിലെ "-b 4" Ftrace-ന് മൊത്തം ബഫർ വലുപ്പം 40 ആക്കും.
മെഗ്സ്.
-B ബഫർ-നാമം
കേർണൽ ഒന്നിലധികം ബഫറുകളെ പിന്തുണയ്ക്കുന്നുവെങ്കിൽ, നൽകിയിരിക്കുന്ന പേരിനൊപ്പം ഇത് ഒരു ബഫർ ചേർക്കും.
ബഫർ നാമം നിലവിലുണ്ടെങ്കിൽ, ആ ബഫർ പുനഃസജ്ജമാക്കിയിരിക്കുന്നു, അത് ഇല്ലാതാക്കില്ല
റെക്കോർഡ് എക്സിക്യൂഷന്റെ അവസാനം. ബഫർ സൃഷ്ടിച്ചാൽ, അത് നീക്കം ചെയ്യപ്പെടും
നിർവ്വഹണത്തിന്റെ അവസാനം (അല്ലാതെ -k സജ്ജീകരിച്ചിരിക്കുന്നു, അല്ലെങ്കിൽ തുടക്കം കമാൻഡ് ഉപയോഗിച്ചു).
ഒരു ബഫർ നാമം പ്രസ്താവിച്ചതിന് ശേഷം, അതിനുശേഷം ചേർത്ത എല്ലാ ഇവന്റുകളും ആയിരിക്കും
ആ ബഫറുമായി ബന്ധപ്പെട്ടിരിക്കുന്നു. ബഫർ വ്യക്തമാക്കിയിട്ടില്ലെങ്കിൽ, അല്ലെങ്കിൽ ഒരു ഇവന്റ്
ഒരു ബഫർ നാമത്തിന് മുമ്പായി വ്യക്തമാക്കിയിരിക്കുന്നു, അത് എന്നതുമായി ബന്ധപ്പെടുത്തും
പ്രധാന (ടോപ്ലെവൽ) ബഫർ.
ട്രേസ്-സിഎംഡി റെക്കോർഡ് -ഇ ഷെഡ് -ബി ബ്ലോക്ക് -ഇ ബ്ലോക്ക് -ബി ടൈം -ഇ ടൈമർ സ്ലീപ്പ് 1
പ്രധാന ബഫറിലെ എല്ലാ ഷെഡ് ഇവന്റുകളും മുകളിൽ പറഞ്ഞിരിക്കുന്നത് പ്രവർത്തനക്ഷമമാക്കും. ഇത് ചെയ്യും
തുടർന്ന് ഒരു 'ബ്ലോക്ക്' ബഫർ ഇൻസ്റ്റൻസ് സൃഷ്ടിച്ച് അതിനുള്ളിലെ എല്ലാ ബ്ലോക്ക് ഇവന്റുകളും പ്രവർത്തനക്ഷമമാക്കുക
ആ ബഫർ. ഒരു 'ടൈം' ബഫർ സംഭവവും എല്ലാ ടൈമർ ഇവന്റുകളും സൃഷ്ടിച്ചു
ആ ഇവന്റിനായി പ്രവർത്തനക്ഷമമാക്കും.
-m വലുപ്പം
ഓരോ സിപിയു ബഫറിനും ഉണ്ടായിരിക്കേണ്ട പരമാവധി വലുപ്പം കിലോബൈറ്റിൽ. വൃത്താകൃതിയിലുള്ളതിനാൽ ശ്രദ്ധിക്കുക
പേജ് വലുപ്പം, നമ്പർ പൂർണ്ണമായും ശരിയായിരിക്കില്ല. കൂടാതെ, ഇത് സ്വിച്ചുചെയ്യുന്നതിലൂടെയാണ് നടത്തുന്നത്
നൽകിയിരിക്കുന്ന വലുപ്പത്തിന്റെ പകുതിയോളം വരുന്ന രണ്ട് ബഫറുകൾക്കിടയിലുള്ളതിനാൽ ഔട്ട്പുട്ട് ഇതുടേതായിരിക്കണമെന്നില്ല
കൂടുതൽ എഴുതിയാലും വലിപ്പം നൽകിയിരിക്കുന്നു.
ദൈർഘ്യമേറിയ റണ്ണുകൾക്ക് ഡിസ്ക്സ്പേസ് തീരുന്നത് തടയാൻ ഇത് ഉപയോഗിക്കുക.
-M cpumask
കണ്ടെത്തുന്നതിനായി cpumask സജ്ജമാക്കുക. നൽകിയിരിക്കുന്ന അവസാന ബഫർ ഉദാഹരണത്തെ മാത്രമേ ഇത് ബാധിക്കുകയുള്ളൂ. എങ്കിൽ
ഏതെങ്കിലും ബഫർ സംഭവത്തിന് മുമ്പ് വിതരണം ചെയ്താൽ, അത് പ്രധാന ബഫറിനെ ബാധിക്കുന്നു. മൂല്യം
നൽകിയത് ഒരു ഹെക്സ് നമ്പർ ആയിരിക്കണം.
ട്രേസ്-സിഎംഡി റെക്കോർഡ് -പി ഫംഗ്ഷൻ -എം സി -ബി ഇവന്റുകൾ13 -ഇ എല്ലാം -എം 5
-M വിട്ടുപോയാൽ, മാസ്ക് അതേപടി നിലനിൽക്കും. എല്ലാം പ്രവർത്തനക്ഷമമാക്കാൻ
CPU-കൾ, '-1' മൂല്യത്തിൽ കടന്നുപോകുക.
-k
സ്ഥിരസ്ഥിതിയായി, ട്രേസ്-സിഎംഡി ട്രെയ്സിംഗ് പൂർത്തിയാകുമ്പോൾ, അത് ബഫറുകൾ പുനഃസജ്ജമാക്കുകയും പ്രവർത്തനരഹിതമാക്കുകയും ചെയ്യും
അത് പ്രവർത്തനക്ഷമമാക്കിയ എല്ലാ ട്രെയ്സിംഗും. ട്രെയ്സർ പ്രവർത്തനരഹിതമാക്കുന്നതിൽ നിന്ന് ട്രേസ്-സിഎംഡിയെ ഈ ഓപ്ഷൻ നിലനിർത്തുന്നു
ഒപ്പം ബഫർ പുനഃസജ്ജമാക്കുന്നു. ട്രേസ്-സിഎംഡി ഡീബഗ്ഗ് ചെയ്യുന്നതിന് ഈ ഓപ്ഷൻ ഉപയോഗപ്രദമാണ്.
കുറിപ്പ്: സാധാരണയായി ട്രേസ്-സിഎംഡി "ട്രേസിംഗ്_ഓൺ" ഫയലിനെ അത് എന്തിലേക്ക് തിരികെ സജ്ജമാക്കും
വിളിക്കുന്നതിന് മുമ്പായിരുന്നു. ഈ ഐച്ഛികം ആ ഫയലിനെ പൂജ്യമായി സജ്ജമാക്കും.
-i
ഡിഫോൾട്ടായി, ട്രേസ്-സിഎംഡി കണ്ടെത്താത്ത ഒരു ഇവന്റ് ലിസ്റ്റ് ചെയ്തിട്ടുണ്ടെങ്കിൽ, അത് എക്സിറ്റ് ചെയ്യും
പിശക്. ഈ ഓപ്ഷൻ കമാൻഡ് ലൈനിൽ ലിസ്റ്റ് ചെയ്തിരിക്കുന്ന ഇവന്റുകൾ അവഗണിക്കും
സിസ്റ്റത്തിൽ കണ്ടെത്തിയില്ല.
-N ഹോസ്റ്റ്:പോർട്ട്
മറ്റൊരു മെഷീൻ "ട്രേസ്-സിഎംഡി ലിസൻ" പ്രവർത്തിപ്പിക്കുകയാണെങ്കിൽ, ഡാറ്റ ലഭിക്കാൻ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു
യുഡിപി പാക്കറ്റുകൾ ഉപയോഗിച്ച് ആ മെഷീനിലേക്ക് അയച്ചു. ഒരു ഔട്ട്പുട്ട് ഫയലിലേക്ക് എഴുതുന്നതിനുപകരം, ഡാറ്റ
ഒരു റിമോട്ട് ബോക്സിലേക്ക് അയച്ചു. ചെറിയ സംഭരണമുള്ള എംബഡഡ് മെഷീനുകൾക്ക് ഇത് അനുയോജ്യമാണ്,
അല്ലെങ്കിൽ എല്ലാ ഡാറ്റയും ഒരൊറ്റ ശേഖരത്തിൽ സൂക്ഷിക്കുന്ന ഒരൊറ്റ യന്ത്രം ഉണ്ടായിരിക്കുക.
ശ്രദ്ധിക്കുക: ലേറ്റൻസി ട്രേസർ പ്ലഗിനുകൾക്കൊപ്പം ഈ ഓപ്ഷൻ പിന്തുണയ്ക്കുന്നില്ല:
വേക്ക്അപ്പ്, വേക്ക്അപ്പ്_ആർടി, ഇർക്സോഫ്, പ്രീംപ്റ്റ്ഓഫ്, പ്രീംപ്റ്റിർക്സോഫ്
-t
കൂടെ ഈ ഓപ്ഷൻ ഉപയോഗിക്കുന്നു -N, TCP ഉപയോഗിച്ച് തത്സമയ ഡാറ്റ അയയ്ക്കേണ്ടിവരുമ്പോൾ
UDP-ക്ക് പകരം പാക്കറ്റുകൾ. TCP UDP പാക്കറ്റുകൾ അയയ്ക്കുന്ന അത്രയും വേഗതയുള്ളതല്ലെങ്കിലും,
എന്നാൽ നെറ്റ്വർക്ക് അത്ര വിശ്വസനീയമല്ലെങ്കിൽ, ഡാറ്റയുടെ അളവ് അങ്ങനെയല്ലെങ്കിൽ അത് ആവശ്യമായി വന്നേക്കാം
അത് തീവ്രമാണ്, കൂടാതെ കണ്ടെത്തിയ എല്ലാ വിവരങ്ങളും കൈമാറ്റം ചെയ്യപ്പെടുന്നതിന് ഒരു ഗ്യാരണ്ടി ആവശ്യമാണ്
വിജയകരമായി.
--തീയതി
കൂടെ --തീയതി ഓപ്ഷൻ, "trace-cmd" എന്നതിന് ശേഷം ട്രേസ് ബഫറിൽ ടൈംസ്റ്റാമ്പുകൾ എഴുതും
അത് റെക്കോർഡിംഗ് പൂർത്തിയാക്കി. അത് പിന്നീട് ടൈംസ്റ്റാമ്പ് മാപ്പ് ചെയ്യും, അത് കിട്ടുന്ന സമയത്തേക്ക്
സൃഷ്ടിച്ചത് വായിക്കുന്ന ടൈംസ്റ്റാമ്പുകളിൽ നിന്ന് വാൾ ടൈം ഔട്ട്പുട്ട് അനുവദിക്കുക trace.dat ഫയൽ.
--പ്രൊഫൈൽ
കൂടെ --പ്രൊഫൈൽ ഓപ്ഷൻ, "trace-cmd" ഉപയോഗിച്ച് ഉപയോഗിക്കാവുന്ന ട്രെയ്സിംഗ് പ്രവർത്തനക്ഷമമാക്കും
ട്രേസ്-സിഎംഡി-റിപ്പോർട്ട്(1) --പ്രൊഫൈൽ ഓപ്ഷൻ. ഒരു ട്രേസർ ആണെങ്കിൽ -p സജ്ജീകരിച്ചിട്ടില്ല, കൂടാതെ ഫംഗ്ഷൻ ഗ്രാഫ്
ഡെപ്ത് കെർണൽ പിന്തുണയ്ക്കുന്നു, തുടർന്ന് ഫംഗ്ഷൻ_ഗ്രാഫ് ട്രേസർ പ്രവർത്തനക്ഷമമാക്കും
ഒന്നിന്റെ ആഴം (കേർണലിലേക്ക് യൂസർസ്പേസ് എവിടെയാണ് പ്രവേശിക്കുന്നതെന്ന് മാത്രം കാണിക്കുക). ഇത് പ്രവർത്തനക്ഷമമാക്കുകയും ചെയ്യും
ടാസ്ക്കുകൾ എവിടെയുണ്ടെന്ന് റിപ്പോർട്ടിന് കാണിക്കാൻ കഴിയുന്ന തരത്തിൽ സ്റ്റാക്ക് ട്രെയ്സിംഗ് ഉള്ള വിവിധ ട്രേസ് പോയിന്റുകൾ
ഏറ്റവും കൂടുതൽ കാലം തടഞ്ഞു.
കാണുക ട്രേസ്-സിഎംഡി-പ്രൊഫൈൽ(1) കൂടുതൽ വിശദാംശങ്ങൾക്കും ഉദാഹരണങ്ങൾക്കും.
-H ഇവന്റ്-ഹുക്കുകൾ
ഏതെങ്കിലും രണ്ട് ഇവന്റുകൾ ഒരുമിച്ച് ബന്ധിപ്പിക്കുന്നതിന് ഇഷ്ടാനുസൃത ഇവന്റ് പൊരുത്തപ്പെടുത്തൽ ചേർക്കുക. ഉപയോഗിക്കാത്തപ്പോൾ
--പ്രൊഫൈൽ, ഇത് പാരാമീറ്റർ സംരക്ഷിക്കും, ഇത് ട്രേസ്-സിഎംഡി റിപ്പോർട്ട് ഉപയോഗിക്കും
--പ്രൊഫൈലും. അതാണ്:
ട്രേസ്-സിഎംഡി റെക്കോർഡ് -എച്ച് hrtimer_expire_entry,hrtimer/hrtimer_expire_exit,hrtimer,sp
ട്രേസ്-സിഎംഡി റിപ്പോർട്ട് --പ്രൊഫൈൽ
പ്രൊഫൈൽ hrtimer_expire_entry, hrtimer_expire_ext times.
കാണുക ട്രേസ്-സിഎംഡി-പ്രൊഫൈൽ(1) ഫോർമാറ്റിനായി.
--stderr
ഔട്ട്പുട്ട് stdout-ന് പകരം stderr-ലേക്ക് പോകുക, എന്നാൽ കമാൻഡിന്റെ ഔട്ട്പുട്ട് എക്സിക്യൂട്ട് ചെയ്തു
മാറ്റില്ല. നിങ്ങൾക്ക് കമാൻഡിന്റെ ഔട്ട്പുട്ട് നിരീക്ഷിക്കണമെങ്കിൽ ഇത് ഉപയോഗപ്രദമാണ്
എക്സിക്യൂട്ട് ചെയ്യുന്നു, പക്ഷേ ട്രേസ്-സിഎംഡിയിൽ നിന്നുള്ള ഔട്ട്പുട്ട് കാണുന്നില്ല.
ഉദാഹരണങ്ങൾ
എല്ലാ ഇവന്റുകളും കണ്ടെത്തുന്നതിനുള്ള അടിസ്ഥാന മാർഗം:
# ട്രേസ്-സിഎംഡി റെക്കോർഡ് -ഇ എല്ലാ ls > /dev/null
# ട്രേസ്-സിഎംഡി റിപ്പോർട്ട്
trace-cmd-13541 [003] 106260.693809: filemap_fault: വിലാസം=0x128122 offset=0xce
trace-cmd-13543 [001] 106260.693809: kmalloc: call_site=81128dd4 ptr=0xffff88003dd83800 bytes_req=768 bytes_alloc=1024 gfp_flags=ZEROFKERNPZERO
ls-13545 [002] 106260.693809: kfree: call_site=810a7abb ptr=0x0
ls-13545 [002] 106260.693818: sys_exit_write: 0x1
ഷെഡ് സ്വിച്ച് ട്രെയ്സിംഗ് ഉപയോഗിച്ച് ഫംഗ്ഷൻ ട്രേസർ ഉപയോഗിക്കുന്നതിന്:
# ട്രേസ്-സിഎംഡി റെക്കോർഡ് -പി ഫംഗ്ഷൻ -ഇ ഷെഡ്_സ്വിച്ച് ls > /dev/null
# ട്രേസ്-സിഎംഡി റിപ്പോർട്ട്
ls-13587 [002] 106467.860310: പ്രവർത്തനം: hrtick_start_fair <-- pick_next_task_fair
ls-13587 [002] 106467.860313: sched_switch: prev_comm=trace-cmd prev_pid=13587 prev_prio=120 prev_state=R ==> next_comm=trace-cmd next_pid=13583 next_pid120prid=XNUMX
ട്രേസ്-cmd-13585 [001] 106467.860314: ഫംഗ്ഷൻ: നേറ്റീവ്_സെറ്റ്_pte_at <-- __do_fault
ട്രേസ്-cmd-13586 [003] 106467.860314: പ്രവർത്തനം: up_read <-- do_page_fault
ls-13587 [002] 106467.860317: പ്രവർത്തനം: __phys_addr <-- ഷെഡ്യൂൾ
trace-cmd-13585 [001] 106467.860318: പ്രവർത്തനം: _raw_spin_unlock <-- __do_fault
ls-13587 [002] 106467.860320: ഫംഗ്ഷൻ: നേറ്റീവ്_ലോഡ്_sp0 <-- __switch_to
ട്രേസ്-cmd-13586 [003] 106467.860322: പ്രവർത്തനം: down_read_trylock <-- do_page_fault
ഏതൊക്കെ ഇന്ററപ്റ്റുകൾക്കാണ് ഏറ്റവും ഉയർന്ന ലേറ്റൻസി ഉള്ളതെന്ന് കണ്ടെത്താനുള്ള നല്ലൊരു വഴി ഇതാ:
# ട്രേസ്-സിഎംഡി റെക്കോർഡ് -പി ഫംഗ്ഷൻ_ഗ്രാഫ് -ഇ ഇർക്_ഹാൻഡ്ലർ_എൻട്രി -എൽ ഡു_ഐആർക്യു സ്ലീപ്പ് 10
# ട്രേസ്-സിഎംഡി റിപ്പോർട്ട്
-0 [000] 157412.933969: funcgraph_entry: | do_IRQ() {
-0 [000] 157412.933974: irq_handler_entry: irq=48 name=eth0
-0 [000] 157412.934004: funcgraph_exit: + 36.358 us | }
-0 [000] 157413.895004: funcgraph_entry: | do_IRQ() {
-0 [000] 157413.895011: irq_handler_entry: irq=48 name=eth0
-0 [000] 157413.895026: funcgraph_exit: + 24.014 us | }
-0 [000] 157415.891762: funcgraph_entry: | do_IRQ() {
-0 [000] 157415.891769: irq_handler_entry: irq=48 name=eth0
-0 [000] 157415.891784: funcgraph_exit: + 22.928 us | }
-0 [000] 157415.934869: funcgraph_entry: | do_IRQ() {
-0 [000] 157415.934874: irq_handler_entry: irq=48 name=eth0
-0 [000] 157415.934906: funcgraph_exit: + 37.512 us | }
-0 [000] 157417.888373: funcgraph_entry: | do_IRQ() {
-0 [000] 157417.888381: irq_handler_entry: irq=48 name=eth0
-0 [000] 157417.888398: funcgraph_exit: + 25.943 us | }
പ്രൊഫൈലിന്റെ ഒരു ഉദാഹരണം:
# ട്രേസ്-സിഎംഡി റെക്കോർഡ് --പ്രൊഫൈൽ സ്ലീപ്പ് 1
# ട്രേസ്-സിഎംഡി റിപ്പോർട്ട് --പ്രൊഫൈൽ --കോം ഉറക്കം
ചുമതല: ഉറക്കം-21611
ഇവന്റ്: sched_switch:R (1) ആകെ: 99442 ശരാശരി: 99442 പരമാവധി: 99442 മിനിറ്റ്:99442
1 ആകെ:99442 മിനിറ്റ്:99442 പരമാവധി:99442 ശരാശരി=99442
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __ഷെഡ്യൂൾ (0xffffffff8150810a)
=> preempt_schedule (0xffffffff8150842e)
=> ___preempt_schedule (0xffffffff81273354)
=> cpu_stop_queue_work (0xffffffff810b03c5)
=> stop_one_cpu (0xffffffff810b063b)
=> sched_exec (0xffffffff8106136d)
=> do_execve_common.isra.27 (0xffffffff81148c89)
=> do_execve (0xffffffff811490b0)
=> SyS_execve (0xffffffff811492c4)
=> return_to_handler (0xffffffff8150e3c8)
=> stub_execve (0xffffffff8150c699)
ഇവന്റ്: sched_switch:S (1) ആകെ: 1000506680 ശരാശരി: 1000506680 പരമാവധി: 1000506680 മിനിറ്റ്:1000506680
1 ആകെ:1000506680 മിനിറ്റ്:1000506680 പരമാവധി:1000506680 ശരാശരി=1000506680
=> ftrace_raw_event_sched_switch (0xffffffff8105f812)
=> __ഷെഡ്യൂൾ (0xffffffff8150810a)
=> ഷെഡ്യൂൾ (0xffffffff815084b8)
=> do_nanosleep (0xffffffff8150b22c)
=> hrtimer_nanosleep (0xffffffff8108d647)
=> SyS_nanosleep (0xffffffff8108d72c)
=> return_to_handler (0xffffffff8150e3c8)
=> tracesys_phase2 (0xffffffff8150c304)
ഇവന്റ്: sched_wakeup:21611 (1) ആകെ: 30326 ശരാശരി: 30326 പരമാവധി: 30326 മിനിറ്റ്: 30326
1 ആകെ:30326 മിനിറ്റ്:30326 പരമാവധി:30326 ശരാശരി=30326
=> ftrace_raw_event_sched_wakeup_template (0xffffffff8105f653)
=> ttwu_do_wakeup (0xffffffff810606eb)
=> ttwu_do_activate.constprop.124 (0xffffffff810607c8)
=> try_to_wake_up (0xffffffff8106340a)
onworks.net സേവനങ്ങൾ ഉപയോഗിച്ച് ട്രേസ്-സിഎംഡി-റെക്കോർഡ് ഓൺലൈനായി ഉപയോഗിക്കുക