이제 DBS 중 하나에서 매일 특정 시간에 스토리지에 높은 쓰기 I/O가 표시됩니다. 높은 쓰기 I/O를 수행하는 프로세스를 찾을 수 있습니까? 이러한 요청의 출처를 추적하는 모든 운영 체제 관련 명령. iostat 및 top 제외
답변1
나는 과거에 htop을 시도했습니다. 이는 프로세스를 기반으로 IO 사용량을 추적하는 것 같습니다.
분명히 Github에는 "glances" 및 "atop"과 같은 다른 옵션이 많이 있습니다.
sudo 권한이 없는 루트가 아닌 사용자를 위한 iotop 대안
이로 인해 귀하의 특정 상황이 다소 독특하고 일부 사용자 정의가 필요할 수 있는지 궁금합니다. 일부 사람들은 프로세스에서 원시 통계를 구문 분석하는 것을 옹호하기도 합니다. iodump(Perl로 작성됨)를 포함하여 많은 옵션이 있습니다.
root@kanga:~# while true; do sleep 1; dmesg -c; done | perl iodump
^C# Caught SIGINT.
TASK PID TOTAL READ WRITE DIRTY DEVICES
firefox 4450 4538 251 4287 0 sda4, sda3
kjournald 2100 551 0 551 0 sda4
firefox 28452 185 185 0 0 sda4
kjournald 782 59 0 59 0 sda3
pdflush 31 30 0 30 0 sda4, sda3
syslogd 2485 2 0 2 0 sda3
firefox 28414 2 2 0 0 sda4, sda3
firefox 28413 1 1 0 0 sda4
firefox 28410 1 1 0 0 sda4
firefox 28307 1 1 0 0 sda4
firefox 28451 1 1 0 0 sda4
https://www.xaprb.com/blog/2009/08/23/how-to-find-per-process-io-statistics-on-linux/
#!/bin/bash
hostname=`hostname -s`
carbon_host=YOUR_CARBON_HOSTNAME_OR_IP
carbon_port=2003
pidstat -h -d 1 | grep --line-buffered -v '^$' | grep --line-buffered -v '^#' | grep --line-buffered -v '^Linux' | awk --assign=hostname=${hostname} '{ printf "servers.%s.pidstat.%s.read %s %s\nservers.%s.pidstat.%s.write %s %s\n", hostname, $6, $3, $1, hostname, $6, $4, $1 ; fflush(); }' > /dev/tcp/${carbon_host}/${carbon_port}
https://serverfault.com/questions/574708/report-per-process-io-stats-with-pidstat-or-sar
https://serverfault.com/questions/169676/howto-check-disk-io-utilization-per-process