Chương trình duem có thể được thực hiện ít tích cực hơn?


21

Chúng tôi có một công việc thường xuyên là dutóm tắt một số thư mục con, chọn ra những kẻ phạm tội tồi tệ nhất và sử dụng đầu ra để tìm xem có những thứ đang tăng nhanh để phát hiện ra các vấn đề tiềm ẩn. Chúng tôi sử dụng diffchống lại ảnh chụp nhanh để so sánh chúng.

Có một thư mục cấp cao nhất, với một số (vài trăm) thư mục con, mỗi thư mục có thể chứa 10 trong số hàng ngàn tệp mỗi tệp (hoặc nhiều hơn).

Một " du -s" trong ngữ cảnh này có thể rất mạnh IO, khiến máy chủ của chúng tôi bảo lãnh bộ đệm của nó và sau đó tăng đột biến IO rất lớn, một mặt rất không mong muốn ảnh hưởng.

Chiến lược nào có thể được sử dụng để có được cùng một dữ liệu, mà không có tác dụng phụ không mong muốn?


9
Ở Đức, bạn có thể thay thế nó bằng "Sie".
Federico Poloni

Câu trả lời:


28

Hãy nhìn vào ionice. Từ man ionice:

Chương trình này đặt hoặc nhận lớp lập lịch io và ưu tiên cho chương trình. Nếu không có đối số hoặc chỉ -p được đưa ra, ionice sẽ truy vấn lớp lập lịch io hiện tại và mức độ ưu tiên cho quy trình đó.

Để chạy duvới lớp I / O "nhàn rỗi", mức ưu tiên thấp nhất hiện có, bạn có thể làm một cái gì đó như thế này:

ionice -c 3 du -s

Điều này sẽ không ducan thiệp vào quá trình 'I / O khác. Bạn cũng có thể muốn xem xét việc đổi tên chương trình để giảm mức ưu tiên CPU của nó, như vậy:

renice -n 19 "$duPid"

Bạn cũng có thể làm cả hai tại thời điểm khởi tạo:

nice -n 19 ionice -c 3 du

5
Để gia hạn một chương trình hiện có, bạn cần gọi renicethay vì nice. Để bắt đầu duvới cả ionice và tốt đẹp, bạn có thể xâu chuỗi cả hai chương trình : nice -n19 ionice -c3 du.
jofel

nicebản thân nó cũng ảnh hưởng đến mức độ ưu tiên của bộ lập lịch I / O, không chỉ CPU.
jordanm

1
@jordanm Theo như tôi biết (ít nhất là trong Linux), nicechỉ ảnh hưởng đến độ độc của CPU (có thể ảnh hưởng gián tiếp đến I / O, nhưng không ảnh hưởng đến mức ưu tiên của trình lập lịch I / O). Bạn thấy hành vi này ở đâu? Nó được ghi lại ở đâu đó?
Chris Xuống

@ChrisDown - Tôi nhớ là đã đọc nó trong Tìm hiểu về nhân Linux
jordanm

@jordanm Hừm, tôi đã có cuốn sách đó. Tôi đã lướt nhanh qua nó và chỉ tìm thấy trang 263 cung cấp chi tiết rõ ràng về nicenó và nó chỉ nói về lượng tử thời gian cơ sở của CPU. Bạn có biết nó ở đâu trong cuốn sách không? Tôi muốn được quan tâm để đọc một nguồn có thẩm quyền rằng các quốc gia nó, nó không được đề cập trong man nice, man 2 nice, man 2 setpriority, info nicehoặc info 'nice invocation'như xa như tôi có thể nói, đó là lạ vì một số trong những đi vào khá nhiều chi tiết về cách thức nicehoạt động cuộc gọi và những gì nó làm.
Chris Xuống

4

Nếu bạn có hàng tấn tệp trong một thư mục, điều này có thể chịu trách nhiệm cho các đột biến I / O, vì nhiều hệ thống tệp không xử lý tốt các cây tệp lớn trong một thư mục. Chia nó thành nhiều thư mục con có thể giúp đỡ ở đó. Nếu bạn có hơn 10k tệp trong một thư mục và điều đó gây ra sự cố, có lẽ bạn nên tách nó ra.

Đối với việc theo dõi việc sử dụng đĩa, trước tiên bạn có thể xem xét df, nếu giá trị sử dụng không tăng nhanh thì các thư mục con cũng không và bạn có thể bỏ qua duhoàn toàn.

Một lựa chọn khác có thể là một hệ thống hạn ngạch đĩa giúp theo dõi việc sử dụng liên tục, nếu hệ thống tệp của bạn hỗ trợ nó.


Hệ thống này là một trang trại xây dựng, vì vậy số lượng tệp trong một thư mục thực sự giảm xuống các nhà phát triển của các thành phần chúng tôi xây dựng. dfsẽ không hoạt động tốt - vấn đề là chúng tôi đã dọn sạch các tập lệnh, vì vậy chúng tôi có thể thấy không có thay đổi, nhưng đã bỏ lỡ một cảnh báo sớm cho một công việc tự động đang chiếm lấy không gian đĩa. Chúng tôi sử dụng zabbix để theo dõi việc sử dụng đĩa tổng thể, nhưng biết các thư mục riêng lẻ nơi mọi thứ đang diễn ra một chút hạt là điều rất cần thiết.
Daniel Staple

0

Ngoài ra, ionicebạn có thể cố gắng làm cho việc truy cập đĩa hiệu quả hơn. Điều này có thể được cố gắng bằng cách thực hiện

find /du/root -printf ""
find /du/root -perm 777 -printf ""

đầu tiên (có thể thông qua ionice, quá). Nó sẽ không hoạt động nếu có quá nhiều tập tin. Có bao nhiêu là quá nhiều phụ thuộc vào dung lượng RAM miễn phí.

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.