Linux - Làm cách nào tôi có thể thấy những gì đang chờ đĩa IO


42

Tôi có một máy chủ có tải thực sự cao. Không có gì là nhảy ra khỏi tôi về việc sử dụng CPU, và nó không hoán đổi.

Tôi nghĩ đó là nguyên nhân của một số quy trình đang chờ đĩa IO và tôi muốn xem những gì đang chờ.

Có chương trình nào sẽ chỉ cho tôi những quy trình đang chờ IO không? Tôi biết iotopnhưng điều đó cho thấy những gì hiện đang làm IO.

Hay đây là một câu hỏi ngớ ngẩn? (Nếu vậy giải thích như thế nào :))

Câu trả lời:


47

Bạn có thể sử dụng màn hình I / O như iotop, nhưng nó sẽ chỉ hiển thị cho bạn các quy trình hoặc luồng với các hoạt động I / O hiện tại.

Nếu bạn cần duyệt các quy trình đang chờ I / O, hãy sử dụng đồng hồ để theo dõi các quy trình với cờ STAT 'D' như bên dưới:

watch -n 1 "(ps aux | awk '\$8 ~ /D/  { print \$0 }')"

Ngọt. Điều này đã giúp tôi ra ngoài độc đáo.
Stu Thompson

2
Ngoài ra, bạn có thể sử dụng lệnh 'iotop -o' sẽ chỉ hiển thị 'các quy trình hoặc luồng thực sự thực hiện I / O' theo iotop --help.
Ryan

1
@Ryan Ngoài ra, nó không cung cấp iowaitthông tin cần thiết , iotopđòi hỏi các đặc quyền nâng cao. watch, psawkchỉ cung cấp thông tin cần thiết và không yêu cầu đặc quyền nâng cao.
Giàu

4
Tôi đã sử dụng pscác cờ POSIX và chỉnh sửa awkwatch "(ps -eo stat,pid,comm|awk '(NR==1)||(\$1~/D/){print}')"theo cách khác: - bằng cách này bạn có được các tiêu đề cột, và stat, pid và lệnh.
Giàu

18

ps axuvà tìm kiếm các quá trình ở trạng thái "D". Dựa trên trang web ps (1) , các quy trình ở trạng thái D đang trong trạng thái ngủ liên tục, điều này hầu như luôn có nghĩa là 'chờ đợi IO'. Thật không may, giết các quá trình này thường là không thể.


16

Câu trả lời của Zanchey là điều tốt nhất tôi biết để tìm hiểu điều gì đang chờ đợi IO.

Khi bạn nói rằng máy chủ của bạn đang tải cao, bạn có ý gì? Một cái gì đó đặc biệt là phản ứng chậm?

Nếu bạn đang tự hỏi liệu Disk IO của bạn có bị nghẽn cổ chai hay không, tôi sẽ sử dụng lệnh iostat (một phần của gói sysstat) để xem đĩa có thực sự bị tải nặng không.

Thí dụ:

[kbrandt@kbrandt-opadmin: ~] iostat -x 1 3                                                                                           

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           2.38   34.71    2.64    1.18    0.00   59.21 
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.11    17.35    2.21   20.31    46.57   301.40    15.45     2.27  100.66   1.48   3.34
sda1              0.10    17.31    2.21   20.31    46.48   301.10    15.44     2.27  100.66   1.48   3.34
sda2              0.00     0.00    0.00    0.00     0.00     0.00     3.50     0.00   30.00  30.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00    18.44     0.00  677.67 512.61   0.00

avg-cpu:  %user   %nice %system %iowait  %steal   %idle
           6.22    0.00    4.31    0.00    0.00   89.47   
Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda1              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sda2              0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00
sr0               0.00     0.00    0.00    0.00     0.00     0.00     0.00     0.00    0.00   0.00   0.00

1
Sẽ rất hữu ích khi giải thích làm thế nào để diễn giải đầu ra của iuler "để xem đĩa có thực sự chịu tải nặng không."
Scott Hội trưởng

0

Cho phép ghi nhật ký block_dump của các quá trình đang thực hiện các hoạt động đọc / ghi khối:

echo 1 > /proc/sys/vm/block_dump
tail -f /var/log/syslog

khi hoàn tất, hãy tắt theo dõi để bạn không spam các tệp nhật ký của mình:

echo 0 > /proc/sys/vm/block_dump
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.