it-swarm-vi.tech

Làm cách nào để theo dõi tải đĩa cứng trên Linux?

Có một tiện ích dòng lệnh tốt để theo dõi tải đĩa cứng trên linux? Một cái gì đó như top nhưng sau đó theo dõi hoạt động của đĩa i.s.o. sử dụng cpu.

Cụ thể hơn, tôi nghi ngờ rằng đối với một số máy chủ (tải nặng) sau một số tối ưu hóa trên các phần khác nhau của chương trình chạy trên nó, ngay bây giờ nút cổ chai chỉ đơn giản là đăng nhập vào các tệp trên đĩa. Nhưng tôi thấy rất khó để đánh giá lưu lượng truy cập mà máy chủ có thể xử lý.

Công cụ lý tưởng của tôi sẽ là một cái gì đó in "Bạn đang sử dụng 35% băng thông đĩa của bạn ngay bây giờ". Có ý kiến ​​gì không?

105
Pieter

Bạn có thể có được số đo khá tốt về điều này bằng cách sử dụng công cụ iostat.

% iostat -dx /dev/sda 5

Device:         rrqm/s   wrqm/s     r/s     w/s   rsec/s   wsec/s avgrq-sz avgqu-sz   await  svctm  %util
sda               0.78    11.03    1.19    2.82    72.98   111.07    45.80     0.13   32.78   1.60   0.64

Việc sử dụng đĩa được liệt kê trong cột cuối cùng. Điều này được định nghĩa là

Phần trăm thời gian CPU trong đó các yêu cầu I/O được cấp cho thiết bị (sử dụng độ rộng băng tần cho thiết bị). Độ bão hòa thiết bị xảy ra khi giá trị này gần 100%.

85
Dave Cheney

iotop là phiên bản hàng đầu xem có bao nhiêu IO mỗi quy trình đang sử dụng. Nó nằm trong kho lưu trữ ub Ubuntu tiêu chuẩn; Tôi không biết liệu nó có trong RHEL hay không Fedora, nhưng nó nên được.

enter image description here

Đối với các nhân cũ hơn (giả sử CentOS 5.x hoặc RHEL 5.x) không hỗ trợ iotop, hãy sử dụng topio thay thế (tài liệu ở đây: http://yong321.freeshell.org/freeware/pio.html#linux . Nó dựa vào/Proc // io để thống kê io và cung cấp chức năng tương tự như iotop. Xem liên kết để biết thêm chi tiết.

82
Tim Howland

Theo đề xuất của sastanin trong các bình luận, bạn có thể xử lý các giá trị trực tiếp được đưa ra trong /sys/block/sda/stat hoặc là /proc/diskstats. Điều này có thể hữu ích khi không có công cụ được đề cập nào khác có sẵn và bạn không thể cài đặt chúng dễ dàng.

Ví dụ (IIUC) một cái gì đó như thế này (trong bash) sẽ cho số lần đọc mỗi giây:

OLD=`awk '{print $1}' /sys/block/sda/stat` # First field is number of read I/Os processed
DT=1
for ii in `seq 1 10`
do
    sleep $DT
    NEW=`awk '{print $1}' /sys/block/sda/stat`
    echo $((($NEW-$OLD)/$DT))
    OLD=$NEW
done

Xem https://www.kernel.org/doc/Documentation/iostats.txthttps://www.kernel.org/doc/Documentation/block/stat.txt cho tài liệu.

14

Bạn nên xem trên đỉnh , kết hợp sức mạnh của iotop/top/iftop, tất cả ở một nơi và làm nổi bật các phần quan trọng trên hệ thống của bạn.

8
Yvan

Tôi khuyên bạn nên xem công cụ nmon. Nó sẽ hiển thị cho bạn tải trực tiếp trên một số tham số hệ thống cũng như ghi dữ liệu vào một tệp để xem sau. Đây là một công cụ miễn phí có sẵn tại đây :

6
MikeyB

để tìm hiểu tổng băng thông của bạn là gì bạn có thể sử dụng hdparm -T /dev/sda để kiểm tra hiệu năng bộ đệm (fileio) bộ đệm hdparm -t /dev/sda để kiểm tra hiệu suất đọc thiết bị

ví dụ: máy tính xách tay của tôi nhận được 82 MB/giây từ đĩa SATA và 2GB/giây từ bộ đệm. Dekstop của tôi nhận được 12GB/giây từ bộ đệm và 500MB/giây từ mảng RAID RAID. Tôi nghi ngờ những con số cuối cùng có thể là gấp đôi trên phần cứng lớp máy chủ.

đặt readahead cao hơn 256, 4096 hoạt động tốt nhất với tôi

for i in 128 256 512 1024 2048 4096 8192 16384 32768  
do  
hdparm --setra $i  
  for j in 1 2 4 8 16 32  
  do  
  time dd if=/dev/sda of=/dev/null bs="$j"k  count=<fixthis> 1GB / blocksize  
  done  
done  

lần đọc 1GB ở các kích thước khối khác nhau và các lần đọc khác nhau

5
user2987

Công cụ tiêu chuẩn để hiển thị tải đĩa cứng là iostat.

Nó sẽ không cho bạn biết bạn đang sử dụng bao nhiêu% băng thông đĩa tuổi, vì nó không biết ổ đĩa của bạn có bao nhiêu băng thông. Trong mọi trường hợp, đĩa của bạn chỉ có số liệu được trích dẫn của nhà sản xuất để truyền dữ liệu lớn liền kề.

4
Alnitak

Tôi nghĩ RRDtool nên làm những gì bạn muốn ở đây nó sử dụng một daemon để kết xuất dữ liệu hệ thống và sau đó cho phép bạn xử lý nó theo cách bạn muốn. Tôi thường sử dụng nó để sản xuất đồ thị, vv để đo tải hệ thống.

3
PixelSmack

htop là một công cụ Nice để kiểm tra thông tin quy trình. Bạn có thể thêm hoặc xóa các cột và trong số chúng có tốc độ đọc và ghi của các quá trình.

0
inquam