2015-01-12 16 views
10

Tôi hiện đang thử nghiệm với các thông số hạt nhân được tìm thấy trong /proc/sys/vm, đặc biệt là dirty_ratiodirty_background_ratio.Sự khác biệt giữa vm.dirty_ratio và vm.dirty_background_ratio?

Các doc hạt nhân có những lời giải thích sau cho cả hai:

dirty_background_ratio

Có, theo phần trăm của tổng số bộ nhớ có sẵn mà chứa các trang miễn phí và các trang có thể khai phá, số lượng các trang mà tại đó background kernel chủ đề flusher sẽ bắt đầu ghi dữ liệu bẩn.

dirty_ratio

Có, theo phần trăm của tổng số bộ nhớ có sẵn mà chứa các trang miễn phí và các trang có thể khai phá, số lượng các trang mà tại đó một quá trình mà là ghi đĩa tạo chính nó sẽ bắt đầu ghi dữ liệu bẩn.

Trên hệ thống linux của tôi dirty_background_ratio là 10 và dirty_ratio là 20. Tôi hiểu rằng sự khác biệt là, dữ liệu bị ghi là ai. Vì vậy, nếu bộ nhớ được sử dụng của tôi đạt đến 10% hạt nhân bắt đầu viết lại và 20% không bao giờ nên đạt được.

Câu hỏi của tôi bây giờ là: Có giá trị cao hơn là dirty_background_ratiodirty_ratio bất kỳ ý nghĩa nào hoặc chỉ là vấn đề "giá trị thấp hơn và giá trị của nó" là gì?

Trả lời

15

Có giá trị cao hơn của dirty_background_ratio và dirty_ratio bất kỳ ý nghĩa nào hoặc đó chỉ là vấn đề "giá trị thấp hơn và giá trị của nó" là gì?

Nói cách đơn giản hơn:

vm.dirty_background_ratio là tỷ lệ phần trăm của bộ nhớ hệ thống mà khi bẩn sau đó hệ thống có thể bắt đầu ghi dữ liệu vào đĩa.

vm.dirty_ratio là tỷ lệ phần trăm của bộ nhớ hệ thống mà khi bẩn, quá trình thực hiện viết sẽ chặn và viết ra trang bẩn vào đĩa.

Điều chỉnh này phụ thuộc vào những gì hệ thống của bạn chạy, nếu bạn chạy cơ sở dữ liệu lớn, bạn nên giữ các giá trị này ở mức thấp để tránh cổ chai I/O và khi tải hệ thống tăng.

ví dụ:

vm.dirty_background_ratio=10 
vm.dirty_ratio=15 

Trong ví dụ này khi các trang bẩn quá vm.dirty_background_ratio=10 I/O bắt đầu, tức là họ bắt đầu nhận ửng đỏ/ghi vào đĩa. Khi tổng số trang bẩn vượt quá vm.dirty_ratio=15 tất cả các lần ghi sẽ bị chặn cho đến khi một số trang bẩn được ghi vào đĩa. Bạn có thể nghĩ đến số vm.dirty_ratio=15 làm giới hạn trên.

+1

Vì vậy, hãy để tôi nói lại điều đó, chỉ để xem tôi có hiểu đúng không. Nếu đã đạt đến mức bẩn_background_ratio, hạt nhân bắt đầu thực hiện các đoạn mã trong nền nhưng các ứng dụng vẫn có thể ghi vào bộ đệm trang mà không bị chặn. Nếu đạt được dirty_ratio, các ứng dụng sẽ chặn bằng văn bản cho đến khi không còn đạt được dirty_ratio nữa. Đúng không? – happyMOOyear

+1

có, tôi cũng đã cập nhật một trường hợp sử dụng nếu nó giúp. – askb

+0

Tôi chấp nhận câu trả lời của bạn vì câu trả lời cho câu hỏi của tôi và giúp tôi rất nhiều. Cảm ơn bạn! Chỉ thêm một câu hỏi: Có một số nơi mà hành vi này được ghi chép? – happyMOOyear

1

Tôi đã bị cuốn hút bởi câu hỏi này và vì vậy đã được thử nghiệm một chút trên hệ thống Debian 7.10 Debian 7.10 của tôi chạy Linux 3.2.0-4-amd64 sử dụng sysbench 0.4.12, sửa đổi:

  • /proc/sys/vm/dirty_ratio
  • /proc/sys/vm/dirty_background_ratio

Các thiết lập này là một cách để trì hoãn ghi vào đĩa. Chúng hữu ích miễn là bạn có các ứng dụng viết không thường xuyên hoặc theo khối nhỏ (ví dụ: trình duyệt web). Nếu chỉ có một ứng dụng trên hệ thống chỉ tạo dữ liệu ở tốc độ lớn hơn mức tối đa được hỗ trợ bởi đĩa thì không có cài đặt nào quan trọng. Các văn bản sẽ mất nhiều thời gian như nó phải.

Tỷ lệ bẩn (DR) dẫn đến quá trình khiến số trang bẩn vượt ngưỡng để chặn. Tỷ lệ nền bẩn (DBR) kiểm soát viết các trang bẩn trong nền. Vì vậy, nếu bạn có DBR thấp, DR cao hơn và tất cả các quy trình của bạn viết theo khối nhỏ không bao giờ vượt qua tốc độ ghi được hỗ trợ của đĩa (ví dụ: 50 MB/s) thì bạn sẽ tìm thấy một hệ thống khá nhạy. Điều này thật ấn tượng khi chúng ta nhớ rằng thực tế việc ghi vào RAM thường nhanh gấp 100 lần (5 GB/s)! Đây là tầm quan trọng của DBR.

Thông số cấu hình hữu ích khi bạn bị làm phiền về các ứng dụng viết thường xuyên. Bạn không muốn một quá trình viết một byte hoặc đọc một vài KB để gian hàng trong 20 giây vì có quá nhiều dữ liệu bẩn. Đây là tầm quan trọng của việc không có DR quá cao. Nó cũng đảm bảo rằng một số bộ nhớ có sẵn để cache dữ liệu được sử dụng gần đây.

Các vấn đề liên quan