jj10306 accepted this revision.
jj10306 added a comment.
This revision is now accepted and ready to land.

thanks for answering those questions, lgtm



================
Comment at: lldb/source/Plugins/Process/Linux/IntelPTCollector.cpp:87-90
+    std::string slice = line.substr(line.find_first_of("/"));
+    if (slice.empty())
+      return None;
+    std::string cgroup_file = formatv("/sys/fs/cgroup/{0}", slice);
----------------
wallace wrote:
> jj10306 wrote:
> > isn't the cgroup_file path going to have two slashes since slice starts 
> > with a slash?
> > {F23780471}
> > in the case of the image above, wouldn't cgroup_file be 
> > "/sys/fs/cgroup//foo.slice/bar.service" instead of 
> > "/sys/fs/cgroup/foo.slice/bar.service"
> > 
> I think that's fine for system paths. You can have multiple consecutive //// 
> and the system collapses them
TIL


================
Comment at: 
lldb/source/Plugins/Trace/intel-pt/TraceIntelPTMultiCpuDecoder.cpp:122
             } else {
-              m_unattributed_intelpt_subtraces++;
+              m_unattributed_psb_blocks++;
             }
----------------
wallace wrote:
> jj10306 wrote:
> > Help me understand this. To me this seems like it is counting all of the 
> > PSBs that don't belong to **the current thread**, whereas I would expect 
> > this to only count the PSBs that don't belong to **any thread**?
> > So based on my understanding we would be severely overcounting the number 
> > of unattributed PSB, but I think I'm just misunderstanding how this code 
> > flows.
> the current code is correct, I'll explain:
> 
> - on_new_thread_execution is executed on all threads of the same CPU in 
> chronological order
> - as on_new_thread_execution is being invoked repeatedly, the `it` iterator 
> is being traversed and is always moving forwards
> - when on_new_thread_execution is invoked, the `it` iterator will look for 
> psb blocks that happened before the given execution. These blocks do not 
> belong to any thread execution. 
> 
> Graphically, we have
> 
> ----exec 1----           ---exec 2----             ---exec 3----
> PSB1    PSB2    PSB3     PSB4           PSB5    PSB6
> 
> when on_new_thread_execution is invoked for exec2, `it` will be pointing at 
> PSB3, which is the first PSB after exec 1. PSB3 comes before exec 2, so it'll 
> be unattributed, then it will move to PSB4 and so on
makes sense, thanks for the explanation!


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D129257/new/

https://reviews.llvm.org/D129257

_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to