เดเตเตผเดฃเดฒเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเตเดเดณเตเด เดกเตเดฌเดเตเดเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเดจเดพเดฏเดฟ เดฒเดฟเดจเดเตเดธเดฟเดจเต เดงเดพเดฐเดพเดณเด เดเดชเดเดฐเดฃเดเตเดเตพ เดเดฃเตเดเต. เด
เดตเดฏเดฟเตฝ เดฎเดฟเดเตเดเดคเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดชเตเดฐเดเดเดจเดคเตเดคเต เดชเตเดฐเดคเดฟเดเตเดฒเดฎเดพเดฏเดฟ เดฌเดพเดงเดฟเดเตเดเตเดจเตเดจเต, เดฎเดพเดคเตเดฐเดฎเดฒเตเดฒ เดเตฝเดชเตเดชเดพเดฆเดจเดคเตเดคเดฟเตฝ เดเดชเดฏเตเดเดฟเดเตเดเดพเตป เดเดดเดฟเดฏเดฟเดฒเตเดฒ.
เดเตเดฑเดเตเดเต เดตเตผเดทเดเตเดเตพเดเตเดเต เดฎเตเดฎเตเดชเต เดเดฃเตเดเดพเดฏเดฟเดฐเตเดจเตเดจเต
เดเดฌเดฟเดชเดฟเดเดซเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจ เดจเดฟเดฐเดตเดงเดฟ เดเดชเตเดฒเดฟเดเตเดเตเดทเตป เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดเดคเดฟเดจเดเด เดเดฃเตเดเต, เด เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดฒเตเดฌเตเดฐเดฑเดฟเดฏเต เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟ เดจเดฟเดเตเดเดณเตเดเต เดธเตเดตเดจเตเดคเด เดชเตเดฐเตเดซเตเดฒเดฟเดเดเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดเตเดเดจเต เดเดดเตเดคเดพเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดจเตเดเตเดเตเด.
เดธเตเดซเต เดเดธเต เดธเตเดฒเต
เดธเตเดซเต เดเตเดฒเดธเตเดฑเตเดฑเดฑเดฟเดฒเตเดเตเดเต เดเดฐเต เดชเตเดคเดฟเดฏ เดนเตเดธเตเดฑเตเดฑเต เดเตเตผเดคเตเดคเต. เด เดคเดฟเดฒเตเดเตเดเต เดเตเดฑเดเตเดเต เดกเดพเดฑเตเดฑ เดฎเตเดเตเดฐเตเดฑเตเดฑเต เดเตเดฏเตโเดคเดคเดฟเดจเต เดถเตเดทเด, เด เดคเต เดตเดดเดฟเดฏเตเดณเตเดณ เดฑเตเดฑเตเดฑเต เด เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจ เดตเตเดเดค เดฎเดฑเตเดฑเต เดธเตเตผเดตเดฑเตเดเดณเต เด เดชเตเดเตเดทเดฟเดเตเดเต เดตเดณเดฐเต เดเตเดฑเดตเดพเดฃเตเดจเตเดจเต เดเดเตเดเตพ เดถเตเดฐเดฆเตเดงเดฟเดเตเดเต.
เดฎเดฑเตเดฑเต เดชเตเดฒเดพเดฑเตเดฑเตโเดซเตเดฎเตเดเดณเดฟเตฝ เดจเดฟเดจเตเดจเต เดตเตเดฏเดคเตเดฏเดธเตเดคเดฎเดพเดฏเดฟ, เด เดนเตเดธเตเดฑเตเดฑเต bcache เดเด เดชเตเดคเดฟเดฏ linux 4.15 เดเตเตผเดฃเดฒเตเด เดเดชเดฏเตเดเดฟเดเตเดเต. เดเดคเดพเดฆเตเดฏเดฎเดพเดฏเดพเดฃเต เด เดเตเตบเดซเดฟเดเดฑเตเดทเดจเตเดฑเต เดเดฐเต เดนเตเดธเตเดฑเตเดฑเต เดเดตเดฟเดเต เดเดชเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต. เดชเตเดฐเดถเตเดจเดคเตเดคเดฟเดจเตเดฑเต เดฎเตเดฒเดเดพเดฐเดฃเด เดธเตเดฆเตเดงเดพเดจเตเดคเดฟเดเดฎเดพเดฏเดฟ เดเดจเตเดคเตเด เดเดฏเดฟเดฐเดฟเดเตเดเดพเดฎเตเดจเตเดจเต เด เดจเดฟเดฎเดฟเดทเด เดตเตเดฏเดเตเดคเดฎเดพเดฏเดฟ.
เดนเตเดธเตเดฑเตเดฑเดฟเดจเต เด เดจเตเดตเตเดทเดฟเดเตเดเตเดจเตเดจเต
ceph-osd เดชเตเดฐเดเตเดฐเดฟเดฏเดฏเตเดเตเดเตเดณเตเดณเดฟเตฝ เดเดจเตเดคเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเตเดจเตเดจเต เดจเตเดเตเดเดฟเดเตเดเตเดฃเตเดเต เดจเดฎเตเดเตเดเต เดเดฐเดเดญเดฟเดเตเดเดพเด. เดเดคเดฟเดจเดพเดฏเดฟ เดเดเตเดเตพ เดเดชเดฏเตเดเดฟเดเตเดเตเด
เดเดฟเดคเตเดฐเด เดจเดฎเตเดฎเตเดเต เดชเดฑเดฏเตเดจเตเดจเต เดซเดเตเดทเตป fdatasync() เดซเดเดเตโเดทเดจเตเดเดณเดฟเดฒเตเดเตเดเต เดเดฐเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เด
เดฏเดฏเตโเดเตเดเดพเตป เดงเดพเดฐเดพเดณเด เดธเดฎเดฏเด เดเตเดฒเดตเดดเดฟเดเตเดเต generic_make_request(). เดเดคเดฟเดจเตผเดคเตเดฅเด เดฎเดฟเดเตเดเดตเดพเดฑเตเด เดชเตเดฐเดถเตเดจเดเตเดเดณเตเดเต เดเดพเดฐเดฃเด osd เดกเตเดฎเดฃเดฟเดจเต เดชเตเดฑเดคเตเดคเต เดเดตเดฟเดเตเดฏเต เดเดฏเดฟเดฐเดฟเดเตเดเตเด เดเดจเตเดจเดพเดฃเต. เดเดคเต เดเตเตผเดฃเดฒเต เดกเดฟเดธเตเดเตเดเดณเต เดเดเดพเด. bcache เดกเดฟเดธเตเดเตเดเตพ เดตเดดเดฟเดฏเตเดณเตเดณ เด
เดญเตเดฏเตผเดคเตเดฅเดจเดเตพ เดชเตเดฐเตเดธเดธเตเดธเต เดเตเดฏเตเดฏเตเดจเตเดจเดคเดฟเตฝ iostat เดเดเตเดเตเดชเตเดเตเดเต เดเดฏเตผเดจเตเดจ เดฒเตเดฑเตเดฑเตปเดธเดฟ เดเดพเดฃเดฟเดเตเดเต.
เดนเตเดธเตเดฑเตเดฑเต เดชเดฐเดฟเดถเตเดงเดฟเดเตเดเตเดฎเตเดชเตเตพ, systemd-udevd เดกเตเดฎเตบ เดตเดฒเดฟเดฏ เด เดณเดตเดฟเตฝ เดธเดฟเดชเดฟเดฏเต เดธเดฎเดฏเด เดเตเดฒเดตเดดเดฟเดเตเดเตเดจเตเดจเดคเดพเดฏเดฟ เดเดเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดฟ - เดจเดฟเดฐเดตเดงเดฟ เดเตเดฑเตเดเดณเดฟเตฝ เดเดเดฆเตเดถเด 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 เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเต เดชเตเดฐเดถเตโเดจเด เดชเตเดจเตผเดจเดฟเตผเดฎเตเดฎเดฟเดเตเดเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเต, uevents เดธเตเดทเตโเดเดฟเดเตเดเดพเตป udevadm เดเตเดฐเดฟเดเตผ เดเดเดฏเตโเดเตเดเดฟเดเต เดชเตเดฐเดตเตผเดคเตเดคเดฟเดชเตเดชเดฟเดเตเดเตเดจเตเดจเต.
BCC เด เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดเดชเดเดฐเดฃเดเตเดเตพ เดเดดเตเดคเตเดจเตเดจเต
เดตเตเดเดค เดเตเดฑเดเตเด เดเตเดณเตเดเตพ เดเดฃเตเดเตเดคเตเดคเดพเดจเตเด เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดฒเดณเดฟเดคเดฎเดพเดฏ เดเดฐเต เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟ เดเดดเตเดคเดพเตป เดถเตเดฐเดฎเดฟเดเตเดเดพเด generic_make_request(). เด เดซเดเดเตโเดทเตป เดตเดฟเดณเดฟเดเตเด เดกเตเดฐเตเดตเดฟเดจเตเดฑเต เดชเตเดฐเดฟเดฒเตเด เดเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเต.
เดชเดฆเตเดงเดคเดฟ เดฒเดณเดฟเดคเดฎเดพเดฃเต:
- เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด kprobe เดเตบ generic_make_request():
- เดเดเตเดเตพ เดกเดฟเดธเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต เดฎเตเดฎเตเดฎเดฑเดฟเดฏเดฟเดฒเตเดเตเดเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเต, เดซเดเดเตเดทเตป เดเตผเดเตเดฏเตเดฎเตเดจเตเดฑเดฟเดฒเตเดเต เดเดเตเดธเดธเต เดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเด;
- เดเดเตเดเตพ เดเตเดเดธเตเดฑเตเดฑเดพเดฎเตเดชเต เดธเดเดฐเดเตเดทเดฟเดเตเดเตเดจเตเดจเต.
- เดฐเดเดฟเดธเตเดฑเตเดฑเตผ เดเตเดฏเตเดฏเตเด เดเตเดฐเตเดฑเตเดฑเตเดชเตเดฐเตเดฌเต เดจเดฟเดจเตเดจเต เดฎเดเดเตเดเดฟเดตเดฐเตเดจเตเดจเดคเดฟเดจเต generic_make_request():
- เดเดเตเดเตพเดเตเดเต เดจเดฟเดฒเดตเดฟเดฒเต เดเตเดเดธเตเดฑเตเดฑเดพเดฎเตเดชเต เดฒเดญเดฟเดเตเดเตเด;
- เดเดเตเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเด เดเตเดเดธเตเดฑเตเดฑเดพเดฎเตเดชเดฟเดจเดพเดฏเดฟ เดจเตเดเตเดเตเดเดฏเตเด เดจเดฟเดฒเดตเดฟเดฒเต เดธเดฎเดฏเดตเตเดฎเดพเดฏเดฟ เดคเดพเดฐเดคเดฎเตเดฏเด เดเตเดฏเตเดฏเตเดเดฏเตเด เดเตเดฏเตเดฏเตเดจเตเดจเต;
- เดซเดฒเด เดตเตเดฏเดเตเดคเดฎเดพเดเตเดเดฟเดฏเดคเดฟเดจเตเดเตเดเดพเตพ เดตเดฒเตเดคเดพเดฃเตเดเตเดเดฟเตฝ, เดเดเตเดเตพ เดธเดเดฐเดเตเดทเดฟเดเตเด เดกเดฟเดธเตเดเดฟเดจเตเดฑเต เดชเตเดฐเต เดเดฃเตเดเตเดคเตเดคเดฟ เดเตเตผเดฎเดฟเดจเดฒเดฟเตฝ เดชเตเดฐเดฆเตผเดถเดฟเดชเตเดชเดฟเดเตเดเตเด.
เดเตเดชเตเดฐเตเดฌเตเดธเต ะธ เดเตเดฐเตเดฑเตเดฑเตเดชเตเดฐเตเดฌเตเดธเต เดซเตเดฒเตเดฏเดฟเตฝ เดซเดเดเตโเดทเตป เดเตเดกเต เดฎเดพเดฑเตเดฑเดพเตป เดฌเตเดฐเตเดเตเดเตโเดชเตเดฏเดฟเดจเตเดฑเต เดฎเตเดเตเดเดพเดจเดฟเดธเด เดเดชเดฏเตเดเดฟเดเตเดเตเด. เดจเดฟเดเตเดเตพเดเตเดเต เดตเดพเดฏเดฟเดเตเดเดพเด
เดชเตเดคเตเดคเตบ เดธเตเดเตเดฐเดฟเดชเตเดฑเตเดฑเดฟเดจเตเดณเตเดณเดฟเดฒเต 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"
เดเดชเตเดชเตเตพ เดจเดฎเตเดฎเตพ เดฌเดฟเดชเดฟเดเดซเต เดชเตเดฐเตเดเตเดฐเดพเด เดคเดฏเตเดฏเดพเดฑเดพเดเตเดเตเดฃเตเดเดคเตเดฃเตเดเต
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 เดจเดฟเดฏเดฎเดเตเดเตพ เดตเดณเดฐเต เด
เดชเตเตผเดตเตเดตเดฎเดพเดฏเดฟ เดฎเดพเดคเตเดฐเดฎเต เดฎเดพเดฑเตเดจเตเดจเตเดณเตเดณเต, เดธเดพเดงเดพเดฐเดฃเดฏเดพเดฏเดฟ เดเดคเต เดจเดฟเดฏเดจเตเดคเตเดฐเดฟเดค เดฐเตเดคเดฟเดฏเดฟเดฒเดพเดฃเต เดธเดเดญเดตเดฟเดเตเดเตเดจเตเดจเดคเต. เด
เดคเดฟเดจเดพเตฝ, เดเดคเดฟเดจเดเด เดธเดเตเดเตเดเดฐเดฟเดเตเด เดฎเตเดฒเตเดฏเดเตเดเตพ เดชเตเดฐเดฏเตเดเดฟเดเตเดเตเดจเตเดจเดคเต เดชเตเดฒเตเด เดเดชเตเดฒเดฟเดเตเดเตเดทเดจเดฟเตฝ เดจเดฟเดจเตเดจเต เดกเดฟเดธเตเดเดฟเดฒเตเดเตเดเต เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดเตเดฎเดพเดฑเตเดจเตเดจเดคเดฟเดจเตเดณเตเดณ เดเดพเดฒเดคเดพเดฎเดธเดคเตเดคเดฟเดจเต เดเดพเดฐเดฃเดฎเดพเดเตเดฎเตเดจเตเดจเต เดเดเตเดเตพ เดเดพเดฃเตเดจเตเดจเต. เดคเตเตผเดเตเดเดฏเดพเดฏเตเด, เดกเดฟเดธเตเดเต เดเตเตบเดซเดฟเดเดฑเตเดทเดจเดฟเตฝ เดฎเดพเดฑเตเดฑเดเตเดเดณเตเดจเตเดจเตเด เดเดฒเตเดฒเดพเดคเตเดคเดชเตเดชเตเตพ udev เดเดตเดจเตเดฑเตเดเตพ เดธเตเดทเตเดเดฟเดเตเดเตเดจเตเดจเดคเต (เดเดฆเดพเดนเดฐเดฃเดคเตเดคเดฟเดจเต, เดเดชเดเดฐเดฃเด เดฎเตเดฃเตเดเต เดเตเดฏเตเดคเดฟเดเตเดเดฟเดฒเตเดฒ/เดตเดฟเดเตเดเตเดฆเดฟเดเตเดเดฟเดเตเดเดฟเดฒเตเดฒ) เดเดฐเต เดจเดฒเตเดฒ เดฐเตเดคเดฟเดฏเดฒเตเดฒ. เดเดจเตเดจเดฟเดฐเตเดจเตเดจเดพเดฒเตเด, เดเตเตผเดฃเดฒเดฟเดจเต เด
เดจเดพเดตเดถเตเดฏเดฎเดพเดฏเดฟ เดชเตเดฐเดตเตผเดคเตเดคเดฟเดเตเดเดพเดคเดฟเดฐเดฟเดเตเดเดพเดจเตเด เดเดตเดถเตเดฏเดฎเดฟเดฒเตเดฒเตเดเตเดเดฟเตฝ เด
เดญเตเดฏเตผเดคเตเดฅเดจ เดเตเดฏเต เดฎเดฐเดตเดฟเดชเตเดชเดฟเดเตเดเดพเดจเตเด เดจเดฎเตเดเตเดเต เดธเดนเดพเดฏเดฟเดเตเดเดพเดจเดพเดเตเด.
เดคเตเดฐเตเดฎเดพเดจเด
eBPF เดตเดณเดฐเต เดตเดดเดเตเดเดฎเตเดณเตเดณเดคเตเด เดถเดเตเดคเดตเตเดฎเดพเดฏ เดเดฐเต เดเดชเดเดฐเดฃเดฎเดพเดฃเต. เดฒเตเดเดจเดคเตเดคเดฟเตฝ เดเดเตเดเตพ เดเดฐเต เดชเตเดฐเดพเดฏเตเดเดฟเด เดเตเดธเต เดจเตเดเตเดเตเดเดฏเตเด เดเดจเตเดคเตเดเตเดฏเตเดฏเดพเตป เดเดดเดฟเดฏเตเดฎเตเดจเตเดจเดคเดฟเดจเตเดฑเต เดเดฐเต เดเตเดฑเดฟเดฏ เดญเดพเดเด เดชเตเดฐเดเดเดฟเดชเตเดชเดฟเดเตเดเตเดเดฏเตเด เดเตเดฏเตเดคเต. BCC เดฏเตเดเตเดเดฟเดฒเดฟเดฑเตเดฑเดฟเดเตพ เดตเดฟเดเดธเดฟเดชเตเดชเดฟเดเตเดเดพเตป เดจเดฟเดเตเดเตพเดเตเดเต เดคเดพเตฝเดชเตเดชเดฐเตเดฏเดฎเตเดฃเตเดเตเดเตเดเดฟเตฝ, เด
เดคเต เดจเตเดเตเดเตเดฃเตเดเดคเดพเดฃเต
eBPF เด
เดเดฟเดธเตเดฅเดพเดจเดฎเดพเดเตเดเดฟเดฏเตเดณเตเดณ เดฎเดฑเตเดฑเต เดฐเดธเดเดฐเดฎเดพเดฏ เดกเตเดฌเดเตเดเดฟเดเดเต, เดชเตเดฐเตเดซเตเดฒเดฟเดเดเต เดเตเดณเตเดเตพ เดเดฃเตเดเต. เด
เดตเดฐเดฟเตฝ เดเดฐเดพเตพ -
เด
เดตเดฒเดเดฌเด: www.habr.com