• Home
  • Raw
  • Download

Lines Matching +full:- +full:- +full:pid

2 # @lint-avoid-python-3-compatibility-imports
10 # USAGE: runqslower [-p PID] [-t TID] [-P] [min_us]
15 # on-CPU, and shows this time as a individual events. This time should be small,
20 # and execution. This traces ttwu_do_wakeup(), wake_up_new_task() ->
30 # 02-May-2018 Ivan Babrou Created this.
31 # 18-Nov-2019 Gergely Bod BUG fix: Use bpf_probe_read_kernel_str() to extract the
45 ./runqslower -p 123 # trace pid 123
46 ./runqslower -t 123 # trace tid 123 (use for threads only)
47 ./runqslower -P # also show previous task comm and TID
55 parser.add_argument("--ebpf", action="store_true",
59 thread_group.add_argument("-p", "--pid", metavar="PID", dest="pid",
60 help="trace this PID only", type=int)
61 thread_group.add_argument("-t", "--tid", metavar="TID", dest="tid",
63 thread_group.add_argument("-P", "--previous", action="store_true",
82 u32 pid;
92 static int trace_enqueue(u32 tgid, u32 pid)
94 if (FILTER_PID || FILTER_TGID || pid == 0)
97 start.update(&pid, &ts);
105 return trace_enqueue(p->tgid, p->pid);
111 return trace_enqueue(p->tgid, p->pid);
117 u32 pid, tgid, prev_pid;
120 prev_pid = prev->pid;
121 if (prev->STATE_FIELD == TASK_RUNNING) {
122 tgid = prev->tgid;
131 pid = bpf_get_current_pid_tgid();
136 tsp = start.lookup(&pid);
140 delta_us = (bpf_ktime_get_ns() - *tsp) / 1000;
146 data.pid = pid;
150 bpf_probe_read_kernel_str(&data.prev_task, sizeof(data.prev_task), prev->comm);
155 start.delete(&pid);
164 struct task_struct *p = (struct task_struct *)ctx->args[0];
165 return trace_enqueue(p->tgid, p->pid);
171 struct task_struct *p = (struct task_struct *)ctx->args[0];
172 u32 tgid, pid;
174 bpf_probe_read_kernel(&tgid, sizeof(tgid), &p->tgid);
175 bpf_probe_read_kernel(&pid, sizeof(pid), &p->pid);
176 return trace_enqueue(tgid, pid);
182 struct task_struct *prev = (struct task_struct *)ctx->args[1];
183 struct task_struct *next= (struct task_struct *)ctx->args[2];
184 u32 tgid, pid, prev_pid;
188 bpf_probe_read_kernel(&state, sizeof(long), (const void *)&prev->STATE_FIELD);
189 bpf_probe_read_kernel(&prev_pid, sizeof(prev->pid), &prev->pid);
191 bpf_probe_read_kernel(&tgid, sizeof(prev->tgid), &prev->tgid);
201 bpf_probe_read_kernel(&pid, sizeof(next->pid), &next->pid);
206 tsp = start.lookup(&pid);
210 delta_us = (bpf_ktime_get_ns() - *tsp) / 1000;
216 data.pid = pid;
219 bpf_probe_read_kernel_str(&data.task, sizeof(data.task), next->comm);
220 bpf_probe_read_kernel_str(&data.prev_task, sizeof(data.prev_task), prev->comm);
225 start.delete(&pid);
247 bpf_text = bpf_text.replace('FILTER_PID', 'pid != %s' % args.tid)
251 if args.pid:
252 bpf_text = bpf_text.replace('FILTER_TGID', 'tgid != %s' % args.pid)
265 …print("%-8s %-16s %-6s %14s %-16s %-6s" % (strftime("%H:%M:%S"), event.task, event.pid, event.delt…
267 … print("%-8s %-16s %-6s %14s" % (strftime("%H:%M:%S"), event.task, event.pid, event.delta_us))
279 …print("%-8s %-16s %-6s %14s %-16s %-6s" % ("TIME", "COMM", "TID", "LAT(us)", "PREV COMM", "PREV TI…
281 print("%-8s %-16s %-6s %14s" % ("TIME", "COMM", "TID", "LAT(us)"))