Linux-แก แแฅแแก แฃแแแ แแแ แแแกแขแ แฃแแแแขแ แแแ แแแแกแ แแ แแแแแแแชแแแแแก แแแแแ แแแแกแแแแก. แแแแ แฃแแแขแแกแแแ แฃแแ แงแแคแแแแ แแแกแแฎแแแ แแแแแแแชแแแก แจแแกแ แฃแแแแแแ แแ แแ แจแแแซแแแแ แแแแแงแแแแแฃแ แแฅแแแก แฌแแ แแแแแแจแ.
แ แแแแแแแแ แฌแแแก แฌแแ แแงแ
แฃแแแ แแ แกแแแแแก แแ แแแแแ แแแแแแแชแแแก แแ แแแ แแแ, แ แแแแแแช แแงแแแแแก eBPF-แก แแ แแ แกแขแแขแแแจแ แแแแแแฎแแแแแ, แแฃ แ แแแแ แฃแแแ แแแฌแแ แแ แแฅแแแแ แกแแแฃแแแ แ แแ แแคแแแแ แแแแก แแ แแแ แแแ แแแแแแแแแแแก แกแแคแฃแซแแแแแ.
Ceph แแ แแก แแแแ
Ceph แแแแกแขแแ แก แแแแแแขแ แแฎแแแ แแแกแแแแซแแแ. แแแแแแ แแ แแแแแชแแแแก แแแกแแ แแแแแขแแแแก แจแแแแแ, แฉแแแ แจแแแแแฉแแแแ, แ แแ แแแก แแแแ แฉแแฌแแ แแก แแแแฎแแแแแแแก แแแแฃแจแแแแแแก แกแแฉแฅแแ แ แแแชแแแแแแ แแแแแแ แแงแ, แแแแ แ แกแฎแแ แกแแ แแแ แแแแ.
แกแฎแแ แแแแขแคแแ แแแแแกแแแ แแแแกแฎแแแแแแแ, แแ แฐแแกแขแแ แแแแแแงแแแ bcache แแ แแฎแแแ Linux 4.15 แแแ แแแ. แแก แแงแ แแแ แแแแ แจแแแแฎแแแแ, แ แแแแกแแช แแ แแแแคแแแฃแ แแชแแแก แแแกแแแแซแแแ แแแแแแงแแแแแแแ แแฅ. แแ แแ แแแแแแขแจแ แชแฎแแแ แแงแ, แ แแ แแ แแแแแแแก แกแแคแฃแซแแแแ แแแแ แแฃแแแ แจแแแซแแแแ แแงแแก แงแแแแแคแแ แ.
แแแกแแแแซแแแก แแแแแแแแแแ
แแแแแฌแงแแ แแแแ, แแฃ แ แ แฎแแแแ ceph-osd แแ แแชแแกแแก แจแแแแแ. แแแแกแแแแก แแแแแแแงแแแแแ
แกแฃแ แแแ แแแแฃแแแแแ, แ แแ แคแฃแแฅแชแแ fdatasync () แแแแ แแ แ แแแฎแแ แฏแ แคแฃแแฅแชแแแแแก แแแแฎแแแแแก แแแแแแแแแจแ generic_make_request(). แแก แแแจแแแแก, แ แแ, แกแแแแ แแฃแแแ, แแ แแแแแแแแแก แแแแแแ แแ แแก osd แแแแแแแก แแแฆแแ. แแก แจแแแซแแแแ แแงแแก แแแ แแแ แแ แแแกแแ. iostat แแแแแแแแแแแ แแฉแแแแ แแแฆแแแ แจแแงแแแแแแ bcache แแแกแแแแแก แแแแ แแแแฎแแแแแแแก แแแแฃแจแแแแแแกแแก.
แฐแแกแขแแก แจแแแแฌแแแแแกแแก แแฆแแแแแฉแแแแ, แ แแ systemd-udevd แแแแแแ แแแแฎแแแ แก แแแแ แ แแแแแแแแแ CPU แแ แแก - แแแแฎแแแแแแ 20% แ แแแแแแแแ แแแ แแแแ. แแก แฃแชแแแฃแ แ แกแแฅแชแแแแแ, แแแแขแแ แฃแแแ แแแแ แแแแแ แ แแขแแ. แแแแก แแแแ, แ แแ Systemd-udevd แแฃแจแแแแก uevents-แแแ, แแแแแแฌแงแแแขแแ แแแแแแฎแแแแ แแแ udevadm แแแแแขแแ แ. แแแแแแแก, แ แแ แกแแกแขแแแแจแ แแแแแแฃแแ แแแแแแก แแแฌแงแแแแแแแแกแแแแก แแแแแ แแ แแแแ แชแแแแแแแแก แแแแแแแแแแก แแแแ แ แแแแแแแแ. แแก แกแแแแแแ แฃแฉแแแฃแแแ, แแแแขแแ แฉแแแ แแแแแแฌแแแก แจแแแฎแแแแ แ แ แแฌแแแแก แงแแแแ แแ แแแแแแแแก.
BCC แแแกแขแ แฃแแแแขแแ แแฃแแแก แแแแแงแแแแแแ
แ แแแแ แช แฃแแแ แแแแแ แแแแแ, แแแ แแแ (แแ แชแแคแแก แแแแแแ แกแแกแขแแแแก แแแ แจแ) แแแ แแ แแก แแขแแ แแแก generic_make_request(). แจแแแแชแแแแ แแแแแแแแ แแ แคแฃแแฅแชแแแก แกแแฉแฅแแ แ. IN
แแก แคแฃแแฅแชแแ แฉแแแฃแแแแ แแ แกแฌแ แแคแแ แแฃแจแแแแก. แงแแแแแคแแ แ แ แแช แแแแแแแก แแ แแก แแแแฎแแแแแก แแแแแชแแแ แแแฌแงแแแแแแแแก แแ แแแแแ แแก แ แแแจแ.
Bcache แแ แแก แ แแฃแแ แแแฌแงแแแแแแแ, แ แแแแแแช แ แแแแฃแ แแ แจแแแแแแ แกแแแ แแแกแแแกแแแแ:
- แแแแฎแแแ แ แแแฌแงแแแแแแแ (แฅแแจแแ แแแฃแแ แแแกแแ), แแ แจแแแแฎแแแแแจแ แแก แแ แแก แแแแ HDD;
- แฅแแจแแ แแแแก แแแฌแงแแแแแแแ (แฅแแจแแ แแแแก แแแกแแ), แแฅ แแก แแ แแก NVMe แแแฌแงแแแแแแแแก แแ แแ แแแแแงแแคแ;
- bcache แแแ แขแฃแแแฃแ แ แแแฌแงแแแแแแแ, แ แแแแแแแช แแแแแแแชแแ แแฃแจแแแแก.
แฉแแแ แแแชแแ, แ แแ แแแแฎแแแแแก แแแแแชแแแ แแแแแ, แแแแ แแ แ แแแแแ แแแฌแงแแแแแแแแกแแแแก? แแแแก แชแแขแ แแแแแแแแแแแ แจแแแแฎแแแแ.
แฉแแแ แแฎแแ แแแชแแ, แ แแ แแแแแแแแแแ แจแแแซแแแแ แแแแแแฌแแแแก แแ แแแแแแแแ. แแแแก แแแแแแแ, แแฃ แ แ แแฌแแแแก แแแ แแแแแแก, แแ แช แแกแ แแแแแแแ. แแแแฃแจแแแ, แ แแ แแก แแ แแก แแแ แแแแฃแแ แกแแฎแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ, แ แแแแแแช แแแจแแแแฃแแแ แแแ แแแแฃแแแ. แแแแฎแแ, แ แ แกแแฎแแก แแ แแแ แแแฃแแ แฃแแ แฃแแแแแงแแคแ แแฃแจแแแแก แกแแกแขแแแแจแ แกแแ แแแขแแก แแแแแงแแแแแแ execsnoop แแแแแแแแ
แแแแแแแแแ แแกแ:
/usr/share/bcc/tools/execsnoop | tee ./execdump
แฉแแแ แแฅ แแ แแแฉแแแแแแ execsnoop-แแก แกแ แฃแ แแแแแแแแแแก, แแแแ แแ แฉแแแแแแแก แกแแแแขแแ แแกแ แแ แแ แฎแแแ แแกแ แแแแแแงแฃแ แแแแแ:
sh 1764905 5802 0 sudo arcconf getconfig 1 AD | grep Temperature | awk -F '[:/]' '{print $2}' | sed 's/^ ([0-9]*) C.*/1/'
แแแกแแแ แกแแแขแ แแ แแก แแ แแชแแกแแก PPID (แแจแแแแแ PID). แแ แแชแแกแ PID 5802-แแ แฉแแแแ แแแแแขแแ แแแแแก แกแแกแขแแแแก แแ แ-แแ แแ แแแแ แแฆแแแฉแแแ. แแแแแขแแ แแแแแก แกแแกแขแแแแก แแแแคแแแฃแ แแชแแแก แจแแแแฌแแแแแกแแก แแฆแแแฉแแแ แแชแแแ แ แแแ แแแแขแ แแแ. HBA แแแแแขแแ แแก แขแแแแแ แแขแฃแ แ แแฆแแแแแแแ แงแแแแ 30 แฌแแแจแ, แ แแช แกแแญแแ แแแ แแแชแแแแแแ แฎแจแแ แแ แฎแแแแ. แจแแแแฌแแแแแก แแแขแแ แแแแแก แฃแคแ แ แฎแแแแ แซแแแแแ แแแแแกแแแแก แจแแแแแ, แแฆแแแแแฉแแแแ, แ แแ แแ แฐแแกแขแแ แแแแฎแแแแแก แแแแฃแจแแแแแแก แจแแงแแแแแแ แแฆแแ แแแแแแ แฉแแแแ แกแฎแแ แฐแแกแขแแแแแ แจแแแแ แแแแ.
แแแแ แแ แฏแแ แแแแแ แแแฃแ แแแแแแแแ, แ แแขแแ แแงแ bcache แแแฌแงแแแแแแแ แแกแ แแแแ. แฉแแแ แแแแแแแแแแ แกแแขแแกแขแ แแแแขแคแแ แแ แแแแแขแฃแ แ แแแแคแแแฃแ แแชแแแ แแ แแชแแแแ แแ แแแแแแแก แ แแแ แแแฃแชแแ แแแ bcache-แแ fio-แก แแแจแแแแแ, แแแ แแแแฃแแแ แแแจแแแแแ udevadm แขแ แแแแ แแ uevents แแแแแ แแ แแแแกแแแแก.
BCC-แแ แแแคแฃแซแแแแฃแแ แแแกแขแ แฃแแแแขแแแแก แฌแแ แ
แจแแแแชแแแแ แแแแฌแแ แแ แแแ แขแแแ แแ แแแ แแแ แงแแแแแแ แแแแ แแแ แแแแก แแแแแกแแฉแแแแแแแกแ แแ แฉแแแแแแแกแแแแก generic_make_request(). แฉแแแ แแกแแแ แแแแแแขแแ แแกแแแก แแแกแแแก แกแแฎแแแ, แ แแแแแกแแแแกแแช แแแแแแซแแฎแแก แแก แคแฃแแฅแชแแ.
แแแแแ แแแ แขแแแแ:
- แ แแแแกแขแ แแชแแ kprobe on generic_make_request():
- แฉแแแ แแแแแฎแแแ แแแกแแแก แกแแฎแแแก แแแฎแกแแแ แแแแจแ, แ แแแแแแช แฎแแแแแกแแฌแแแแแแ แคแฃแแฅแชแแแก แแ แแฃแแแแขแแก แกแแจแฃแแแแแแ;
- แฉแแแ แแแแแฎแแแ แแ แแแก แแแจแแแก.
- แ แแแแกแขแ แแชแแ แแ แแขแแ แแแ แแแแ แฃแแแแแกแแแแก generic_make_request():
- แฉแแแ แแแฆแแแ แแแแแแแแ แ แแ แแแก แแแจแแแก;
- แฉแแแ แแแซแแแ แจแแแแฎแฃแ แแ แแแก แแแจแแแก แแ แแแแแ แแแ แแแก แแแแแแแแ แ แแแจแแแก;
- แแฃ แจแแแแแ แแฆแแแแขแแแ แแแแแแแแฃแแก, แแแจแแ แแแแฃแแแแ แจแแแแฎแฃแ แแแกแแแก แกแแฎแแแก แแ แแแฉแแแแแแ แแแก แขแแ แแแแแแแ.
Kprobes ะธ แแ แแขแแ แแแแแ แแแแแแงแแแแ breakpoint แแแฅแแแแแแ แคแฃแแฅแชแแแก แแแแแก แจแแกแแชแแแแแแ แคแ แแแแก แแ แแก. แฒจแแแแซแแแ แฌแแแแแแฎแ
eBPF แขแแฅแกแขแ แแแแแแแก แกแแ แแแขแแก แจแแแแแ แแกแ แแแแแแงแฃแ แแแ:
bpf_text = โโโ # Here will be the bpf program code โโโ
แคแฃแแฅแชแแแแก แจแแ แแก แแแแแชแแแแแแก แแแกแแชแแแแแแ, eBPF แแ แแแ แแแแแ แแงแแแแแแ
struct data_t {
u64 pid;
u64 ts;
char comm[TASK_COMM_LEN];
u64 lat;
char disk[DISK_NAME_LEN];
};
BPF_HASH(p, u64, struct data_t);
BPF_PERF_OUTPUT(events);
แแฅ แฉแแแ แแแแ แแแแกแขแ แแ แแแ แฐแแจแแก แชแฎแ แแแก, แ แแแแแกแแช แ.แฌ p, แแแกแแฆแแแแก แขแแแแ u64 แแ แขแแแแก แแแแจแแแแแแแ struct data_t. แชแฎแ แแแ แฎแแแแแกแแฌแแแแแ แแฅแแแแ แฉแแแแ BPF แแ แแแ แแแแก แแแแขแแฅแกแขแจแ. BPF_PERF_OUTPUT แแแแ แ แ แแแแกแขแ แแ แแแก แกแฎแแ แชแฎแ แแแก, แ แแแแแกแแช แแฌแแแแแ แแแแแแแแแ, แ แแแแแแช แแแแแแงแแแแแ
แคแฃแแฅแชแแแก แแแแแซแแฎแแแแกแ แแ แแแกแแแ แแแแ แฃแแแแแก แจแแ แแก, แแ แกแฎแแแแแกแฎแแ แคแฃแแฅแชแแแแแก แแแ แแแก แจแแ แแก แจแแคแแ แฎแแแแแแก แแแแแแแแกแแก, แฃแแแ แแแแแแแแแกแฌแแแแ, แ แแ แแแฆแแแฃแแ แแแแแชแแแแแ แฃแแแ แแแฃแแแแแแแก แแแแแ แแแแขแแฅแกแขแก. แกแฎแแ แกแแขแงแแแแแ แ แแ แแแฅแแแ, แแฅแแแ แฃแแแ แแแฎแกแแแแแ แคแฃแแฅแชแแแแแก แจแแกแแซแแ แแแ แแแแแฃแ แ แแแจแแแแแก แจแแกแแฎแแ. แฉแแแ แแแแฅแแก แจแแกแแซแแแแแแแ แแแแแแแแ แจแแงแแแแแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแแก แแ แแ แแ แแชแแกแแก แแแแขแแฅแกแขแจแ แแ แแ แคแฃแแฅแชแแแแแ แแแแ แ แแ แแชแแกแแก แแแแขแแฅแกแขแจแ แแแแ แฃแแแแแก แจแแ แแก, แแแแ แแ แแก แกแแแแ แแฃแแแ แฃแกแแ แแแแแแ. แแแ แแ แแแแแแแแ แแฅแแแแ แแฅ
แจแแแแแแ, แฉแแแ แฃแแแ แแแแฌแแ แแ แแแแ, แ แแแแแแช แแแฃแจแแแแแก แจแแกแฌแแแแแแ แคแฃแแฅแชแแแก แแแแแซแแฎแแแแกแแก:
void start(struct pt_regs *ctx, struct bio *bio) {
u64 pid = bpf_get_current_pid_tgid();
struct data_t data = {};
u64 ts = bpf_ktime_get_ns();
data.pid = pid;
data.ts = ts;
bpf_probe_read_str(&data.disk, sizeof(data.disk), (void*)bio->bi_disk->disk_name);
p.update(&pid, &data);
}
แแฅ แแแแแซแแฎแแแฃแแ แคแฃแแฅแชแแแก แแแ แแแแ แแ แแฃแแแแขแ แฉแแแแชแแแแแแ แแแแ แ แแ แแฃแแแแขแแ
แแแแ แฃแแแแแกแแก แแแแแแซแแฎแแแ แจแแแแแแ แคแฃแแฅแชแแ generic_make_request():
void stop(struct pt_regs *ctx) {
u64 pid = bpf_get_current_pid_tgid();
u64 ts = bpf_ktime_get_ns();
struct data_t* data = p.lookup(&pid);
if (data != 0 && data->ts > 0) {
bpf_get_current_comm(&data->comm, sizeof(data->comm));
data->lat = (ts - data->ts)/1000;
if (data->lat > MIN_US) {
FACTOR
data->pid >>= 32;
events.perf_submit(ctx, data, sizeof(struct data_t));
}
p.delete(&pid);
}
}
แแก แคแฃแแฅแชแแ แฌแแแแก แแกแแแแกแแ: แฉแแแ แแแแแแ แแ แแชแแกแแก PID-แก แแ แแ แแแก แแแจแแแก, แแแแ แแ แแ แแแแแแงแแคแ แแแฎแกแแแ แแแแก แแแแแชแแแแ แแฎแแแ แกแขแ แฃแฅแขแฃแ แแกแแแแก. แแแแก แแแชแแแแ, แฉแแแ แแแซแแแ แฐแแจแแก แชแฎแ แแแจแ แฃแแแ แแ แกแแแฃแ แกแขแ แฃแฅแขแฃแ แแก == แแแแแแแแ แ PID แแแกแแฆแแแแก แแแแแงแแแแแแ. แแฃ แกแขแ แฃแฅแขแฃแ แ แแแแแแแแ, แแแจแแ แฉแแแ แแแแแแ แแแแแแแแ แ แแ แแชแแกแแก แกแแฎแแแก แแ แแแแแขแแแ แแแก.
แแ แแแแแ แชแแแ, แ แแแแแกแแช แแฅ แแแงแแแแแ, แกแแญแแ แแ แซแแคแแแแก GID-แแก แแแกแแฆแแแแ. แแแแ. แซแแ แแแแแ แแ แแชแแกแแก PID, แ แแแแแแแช แแแแฌแงแ แแแแ, แ แแแแแก แแแแขแแฅแกแขแจแแช แฉแแแ แแแฃแจแแแแ. แคแฃแแฅแชแแ, แ แแแแแกแแช แฉแแแ แแฃแฌแแแแแ
แขแแ แแแแแแจแ แแแแแขแแแแกแแก แฉแแแ แแแแแแแ แแ แแแแแแขแแ แแกแแแก แแแแ, แแแแ แแ แแแแแแขแแ แแกแแแก แซแแ แแแแแ แแ แแชแแกแ. แแแฆแแแฃแแ แแแงแแแแแแแก แแแชแแแฃแ แแฆแฃแ แแแแแ แจแแแแ แแแแก แจแแแแแ, แฉแแแ แแแแแแแแ แ แฉแแแแก แกแขแ แฃแฅแขแฃแ แแก แแแแแชแแแแแ แแแแฎแแแ แแแแแก แกแแแ แชแแจแ แชแฎแ แแแแก แกแแจแฃแแแแแแ แแแแแแแแแ, แ แแก แจแแแแแแแช แฉแแแ แแจแแแ แฉแแแแฌแแ แก p.
แแแแแแแก แกแแ แแแขแจแ, แ แแแแแแช แฉแแขแแแ แแแแก แแ แแแแก, แฉแแแ แฃแแแ แจแแแชแแแแแ MIN_US แแ FACTOR แแแงแแแแแแแก แแฆแแ แแแแแ แแ แแ แแแก แแ แแแฃแแแแแ, แ แแแแแแกแแช แแแแแแแขแแแ แแ แแฃแแแแขแแแแ:
bpf_text = bpf_text.replace('MIN_US',str(min_usec))
if args.milliseconds:
bpf_text = bpf_text.replace('FACTOR','data->lat /= 1000;')
label = "msec"
else:
bpf_text = bpf_text.replace('FACTOR','')
label = "usec"
แแฎแแ แฉแแแ แฃแแแ แแแแแแแแแแ BPF แแ แแแ แแแ แแแจแแแแแแ
b = BPF(text=bpf_text)
b.attach_kprobe(event="generic_make_request",fn_name="start")
b.attach_kretprobe(event="generic_make_request",fn_name="stop")
แฉแแแแช แแแแแแฌแแแก แแแแแกแแแฆแแ แแ struct data_t แฉแแแแก แกแแ แแแขแจแ, แฌแแแแแฆแแแแ แจแแแแฎแแแแแจแ แฉแแแ แแแ แแคแแ แก แฌแแแแแแแฎแแแ:
TASK_COMM_LEN = 16 # linux/sched.h
DISK_NAME_LEN = 32 # linux/genhd.h
class Data(ct.Structure):
_fields_ = [("pid", ct.c_ulonglong),
("ts", ct.c_ulonglong),
("comm", ct.c_char * TASK_COMM_LEN),
("lat", ct.c_ulonglong),
("disk",ct.c_char * DISK_NAME_LEN)]
แแแแ แแแแแฏแ แแ แแก แแแแแชแแแแแแก แแแแแขแแแ แขแแ แแแแแแจแ:
def print_event(cpu, data, size):
global start
event = ct.cast(data, ct.POINTER(Data)).contents
if start == 0:
start = event.ts
time_s = (float(event.ts - start)) / 1000000000
print("%-18.9f %-16s %-6d %-1s %s %s" % (time_s, event.comm, event.pid, event.lat, label, event.disk))
b["events"].open_perf_buffer(print_event)
# format output
start = 0
while 1:
try:
b.perf_buffer_poll()
except KeyboardInterrupt:
exit()
แแแแแ แกแแ แแแขแ แฎแแแแแกแแฌแแแแแแ แแแกแแแแ แแแ
แแแแแก แแ แแแแแก! แแฎแแ แฉแแแ แแฎแแแแแ, แ แแ แแก, แ แแช แจแแฉแแ แแแฃแ bcache แแแฌแงแแแแแแแแก แฐแแแแแ, แกแแแแแแแแแแจแ แจแแฉแแ แแแฃแแ แแแ แแ generic_make_request() แฅแแจแแ แแแฃแแ แแแกแแแกแแแแก.
แแญแ แแแ แแแ แแแจแ
แแแแแ แแขแฃแแแ แ แ แแ แแก แจแแแแแแแฃแแ แแแแฎแแแแแก แแแแแชแแแแก แแ แแก? แฉแแแ แแฎแแแแแ, แ แแ แแแแแแแแแแ แฎแแแแ แแแแฎแแแแแก แแฆแ แแชแฎแแแก แแแฌแงแแแแแแแช, แ.แ. แแแแแ แแขแฃแแ แแแแฎแแแแแก แแฆแ แแชแฎแแ แแแกแแ แกแขแแขแแกแขแแแแก (/proc/diskstats แแ iostat) แจแแแแแแแ แแแแแขแแแแก แจแแกแแฎแแ แฏแแ แแ แแแฌแงแแแฃแแ. แแแแก แแแ แขแแแแ แจแแแแฌแแแแ แจแแกแแซแแแแแแแ iostat-แแก แแแจแแแแแ แแ แแแแแแแก แ แแแ แแแฃแชแแ แแแแกแแก, แแ
แคแฃแแฅแชแแแก แแฃ แแแแแแฎแแแแแ generic_make_request(), แจแแแแแ แแแแฎแแแ, แ แแ แกแแแแ แแแแฎแแแแ แแแแฌแงแแแก แแฆแ แแชแฎแแแก, แแแแแแซแแฎแแแ แแแแแ แแ แ โโแคแฃแแฅแชแแ. แฒแแ แแแแ - generic_make_request_checks(), แแแแฌแแแแก แแแแฎแแแแแก แแแแแขแแแฃแ แแแแก แแแกแแแก แแแ แแแแขแ แแแแแ แแแแแแจแแ แแแแ. แแแแ แ -
ret = wait_event_interruptible(q->mq_freeze_wq,
(atomic_read(&q->mq_freeze_depth) == 0 &&
(preempt || !blk_queue_preempt_only(q))) ||
blk_queue_dying(q));
แแแกแจแ แแแ แแแ แแแแแแแ แ แแแแก แแแงแแแแแก. แแแแแ แแแแแแแแ แแแแแแแแแแ blk_queue_enter():
~# /usr/share/bcc/tools/funclatency blk_queue_enter -i 1 -m
Tracing 1 functions for "blk_queue_enter"... Hit Ctrl-C to end.
msecs : count distribution
0 -> 1 : 341 |****************************************|
msecs : count distribution
0 -> 1 : 316 |****************************************|
msecs : count distribution
0 -> 1 : 255 |****************************************|
2 -> 3 : 0 | |
4 -> 7 : 0 | |
8 -> 15 : 1 | |
แ แแแแ แช แฉแแแก, แฉแแแ แแฎแแแก แแแ แ แแแแแกแแแแแแแ. แ แแแแก แแแงแแแแแก/แแแงแแแแแกแแแแก แแแแแงแแแแแฃแแ แคแฃแแฅแชแแแแแ
แแ แ แแแแก แแแกแแกแฃแคแแแแแแแแ แกแแญแแ แ แแ แ แฃแแ แแก แแแกแแแก แจแแงแแแแแแแก, แ แแแแแ แแแ แแแ แแแแแแแ แ แแแจแ แแแแแแ แงแแแแ แแแแ แแชแแแก แแแกแ แฃแแแแแก. แ แแแแกแแช แ แแแ แชแแ แแแแแ, แแแ แแแแขแ แแแแก แชแแแแแแแแแ แแแแแแงแแแแแ. แ แแก แจแแแแแแแช แ.แฌ
แแฎแแ แฉแแแ แกแแแแแ แแกแแ แแแชแแ แกแแขแฃแแชแแแก แแแแแกแแกแฌแแ แแแแแ. udevadm แขแ แแแแ แแก แแ แซแแแแแ แแฌแแแแก แแแแแแก แแแฌแงแแแแแแแแก แแแ แแแแขแ แแแแก แแแแแงแแแแแแก. แแก แแแ แแแแขแ แแแ แแฆแฌแแ แแแแ udev-แแก แฌแแกแแแจแ. แฉแแแ แจแแแแแซแแแ แแแแแแแ แ แแแแแ แแแ แแแแขแ แแแ แงแแแแแก แ แแแก แแแแ แจแแชแแแแก แแชแแแแแแแ sysfs-แแก แกแแจแฃแแแแแแ แแ แแแ แแแแก แฌแงแแ แแก แแแแแก แแแแแแแแแ แแแแ. แฉแแแ แแกแแแ แจแแแแแซแแแ แแชแแแแ BCC แฃแขแแแแขแ
~# /usr/share/bcc/tools/trace blk_freeze_queue -K -U
PID TID COMM FUNC
3809642 3809642 systemd-udevd blk_freeze_queue
blk_freeze_queue+0x1 [kernel]
elevator_switch+0x29 [kernel]
elv_iosched_store+0x197 [kernel]
queue_attr_store+0x5c [kernel]
sysfs_kf_write+0x3c [kernel]
kernfs_fop_write+0x125 [kernel]
__vfs_write+0x1b [kernel]
vfs_write+0xb8 [kernel]
sys_write+0x55 [kernel]
do_syscall_64+0x73 [kernel]
entry_SYSCALL_64_after_hwframe+0x3d [kernel]
__write_nocancel+0x7 [libc-2.23.so]
[unknown]
3809631 3809631 systemd-udevd blk_freeze_queue
blk_freeze_queue+0x1 [kernel]
queue_requests_store+0xb6 [kernel]
queue_attr_store+0x5c [kernel]
sysfs_kf_write+0x3c [kernel]
kernfs_fop_write+0x125 [kernel]
__vfs_write+0x1b [kernel]
vfs_write+0xb8 [kernel]
sys_write+0x55 [kernel]
do_syscall_64+0x73 [kernel]
entry_SYSCALL_64_after_hwframe+0x3d [kernel]
__write_nocancel+0x7 [libc-2.23.so]
[unknown]
แฃแแแแแก แฌแแกแแแ แกแแแแแแ แแจแแแแแแ แแชแแแแแ แแ, แ แแแแ แช แฌแแกแ, แแก แฎแแแแ แแแแขแ แแแแ แแแแแ แแแแ. แแแ แแแแ, แฉแแแ แแฎแแแแแ, แ แแ แฃแแแ แแแงแแแแแฃแแ แแแแจแแแแแแแแแแก แแแแแงแแแแแแช แแ แแฌแแแแก แแแแแแแชแแแแแ แแแกแแแ แแแแฎแแแแแก แแแแแขแแแแก แจแแคแแ แฎแแแแก. แ แ แแฅแแ แฃแแแ, udev แแแแแแแแแแก แแแแแ แแ แแแ, แ แแแแกแแช แแแกแแแก แแแแคแแแฃแ แแชแแแจแ แชแแแแแแแแแ แแ แแ แแก (แแแแแแแแแ, แแแฌแงแแแแแแแ แแ แแ แแก แแแแแแขแแแแแฃแแ/แแแแแ แแฃแแ) แแ แแ แแก แแแ แแ แแ แแฅแขแแแ. แแฃแแชแ, แฉแแแ แจแแแแแซแแแ แแแแแฎแแแ แแ แแแ แแแก แแ แแแแแแแแก แแแแแแขแ แกแแแฃแจแแ แแ แแแงแแแแก แแแแฎแแแแแก แ แแแ, แแฃ แแก แแ แแ แแก แกแแญแแ แ.
แแแกแแแแ
eBPF แแ แแก แซแแแแแ แแแฅแแแแ แแ แซแแแแ แ แแแกแขแ แฃแแแแขแ. แกแขแแขแแแจแ แฉแแแ แแแแแแฎแแแแ แแ แ แแ แแฅแขแแแฃแ แจแแแแฎแแแแแก แแ แแแฉแแแแแ แแชแแ แ แแแฌแแแ แแแแกแ, แ แแกแ แแแแแแแแแช แจแแแซแแแแ. แแฃ แแฅแแแ แแแแแขแแ แแกแแแฃแแ แฎแแ แ BCC แแแแฃแแแแฃแ แ แแ แแแ แแแแแแก แจแแแฃแจแแแแแแ, แฆแแ แก แแแแแฎแแแแ
แแ แกแแแแแก แกแฎแแ แกแแแแขแแ แแกแ แแแแแ แแแแกแ แแ แแ แแคแแแแ แแแแก แแแกแขแ แฃแแแแขแแแ, แ แแแแแแแช แแแคแฃแซแแแแฃแแแ eBPF-แแ. แฒแ แ - แแ แแ แแแแแแแ -
แฌแงแแ แ: www.habr.com