Là thiết lập mức cao đẹp hơn cho một quy trình có phải là cách hiệu quả để giảm tác động của nó đối với thời gian tải hệ thống / CPU không?


10

Tôi có một công việc cron rsync đang đẩy tải máy chủ và kích hoạt cảnh báo màn hình. Nếu tôi đặt công việc được chạy ở mức cao đẹp, điều đó có làm giảm hiệu quả tác động của nó đối với các giá trị tải hệ thống không?


Đối với rsync, sẽ hiệu quả hơn khi sử dụng các công tắc của nó để giảm nén hoặc hạn chế sử dụng băng thông.
Nemo

Câu trả lời:


9

Nó sẽ không giảm tải của bạn.

Nó sẽ chỉ cho phép các quá trình khác sử dụng thời gian CPU thường xuyên hơn nếu có sự tranh chấp tài nguyên có thể xảy ra (một số quy trình "cạnh tranh" vì không đủ thời gian CPU có sẵn).


9

Thay đổi giá trị đẹp sẽ không trực tiếp giảm tải hệ thống. Tuy nhiên, nó có thể được sử dụng để để lại nhiều tài nguyên hơn cho các quy trình còn lại, điều mà tôi nghi ngờ là điều bạn thực sự muốn.

Từ http://linux.101hacks.com/monitoring-performance/hack-100-nice-command-examples/

Kernel quyết định cần bao nhiêu thời gian xử lý cho một tiến trình dựa trên giá trị đẹp. Phạm vi giá trị tốt có thể có là: -20 đến 20. Một quy trình có giá trị đẹp là -20 được ưu tiên rất cao. Quá trình có giá trị tốt là 20 được ưu tiên rất thấp.

Vì vậy, có, bạn muốn chạy công việc định kỳ ở mức cao hơn các quy trình khác nếu bạn muốn đảm bảo rằng các quy trình khác được ưu tiên.

Để làm điều này, bạn muốn tập lệnh cron của bạn được thực thi như thế này:

/bin/nice -n 10 /path/to/cron-script

Điều này sẽ chạy tập lệnh cron ở mức tốt hơn tăng 10. Bạn có thể muốn kiểm tra một chút để tìm sự cân bằng (không có ý định chơi chữ) giữa các quy trình còn lại và thời gian thực hiện của tập lệnh.

Xem thêm Làm thế nào là tốt đẹp làm việc? http://www.cyberciti.biz/faq/change-the-nice-value-of-a- Process / để biết thêm chi tiết.


5

Thay đổi mức độ tốt đẹp của một quy trình không có khả năng ảnh hưởng đến giá trị tải hệ thống. Giá trị tải hệ thống là độ dài trung bình của hàng đợi chạy , về cơ bản là số lượng quá trình muốn sử dụng CPU.

Nếu bạn đang chạy một quy trình giới hạn CPU (rsync không, nhưng chỉ là ví dụ), thì nó sẽ luôn muốn sử dụng thời gian của CPU bất cứ khi nào có sẵn. Vì nó luôn muốn chạy, nó sẽ đóng góp giá trị tải là 1.0 cho giá trị tải hệ thống. Không quan trọng mức độ tốt của quy trình là gì, bởi vì độ dài trung bình của hàng đợi chạy không bị ảnh hưởng bởi thứ tự của các quy trình trong hàng đợi chạy.


Điều này rất quan trọng để nhớ. Nếu bạn chạy nhiều quy trình được xử lý, tải hệ thống sẽ trông rất cao ngay cả khi trên thực tế không có công việc thực sự nào bị chậm lại. Trong một số trường hợp, tải cho thấy một vấn đề thực sự, tức là Linux không thể để quy trình được sử dụng mà sử dụng tất cả các tài nguyên mà họ thực sự có thể sử dụng mà không gặp vấn đề gì
Nemo

3

Bạn có thể xem xét 3 cách để giảm tác động của mình đối với thời gian tải hệ thống / CPU:

  • Sử dụng nicelệnh để tự hạ thấp mức ưu tiên của tác vụ.
  • Sử dụng cpulimitlệnh để liên tục tạm dừng quá trình để nó không vượt quá một giới hạn nhất định.
  • Sử dụng Linux built-in control groups, một cơ chế báo cho bộ lập lịch để giới hạn số lượng tài nguyên có sẵn cho quy trình.

Tài nguyên

http://blog.scoutapp.com/articles/2014/11/04/restricting- Process-cpu-usage-USE-nice-cpulimit-and-cgroups


Bạn chắc chắn muốn sử dụng các nhóm để cân bằng tài nguyên hệ thống. Điều đó cho phép phân vùng các tài nguyên theo ý muốn (CPU, bộ nhớ, IO đĩa, băng thông đĩa) và trong các tình huống tải thấp, ngay cả các quy trình "ưu tiên thấp" cũng có hiệu suất tối đa không giống như các thủ thuật chế độ người dùng thường làm chậm quá trình ưu tiên thấp mọi lúc.
Mikko Rantalainen
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.