Điểm:2

Hiệu suất đầy đủ của bộ đệm ghi lại lvmcache/dm-cache

lá cờ id

Tôi có bộ đệm ghi lại SSD trước ổ cứng, được thiết lập thông qua lvmcache (do đó, dm-cache). Khi LV bộ đệm không đầy (Dữ liệu% cột trong lv < 100,00%), ghi vào thiết bị bộ đệm (được giám sát qua dstat). Tuy nhiên, khi bộ đệm ẩn LV đầy (Dữ liệu% = 100,00%), ghi trực tiếp vào ổ cứng, về cơ bản trở thành bộ đệm ghi. Các khối không bị xóa khỏi bộ đệm SSD, ngay cả sau một thời gian và hiệu suất giảm xuống.Khi tôi thử đọc dữ liệu đã đọc gần đây từ LV được lưu trong bộ nhớ cache, các lần đọc là từ SSD, vì vậy tôi cho rằng toàn bộ SSD hiện đã trở thành bộ đệm đọc. Đây có phải là hành vi được mong đợi đối với bộ đệm ghi của dm-cache, ngay cả trong chế độ ghi lại không? Không có không gian dành riêng cho viết? Đây có vẻ là một thiết kế khá kém vì về cơ bản, người dùng chỉ có thể ghi dữ liệu có giá trị của một bộ đệm LV trước khi bộ đệm trở thành bộ đệm ghi qua.

Tôi hiểu rằng dm-cache sử dụng thuật toán trục xuất mq, nhưng điều đó chỉ áp dụng cho bộ nhớ đệm đọc và do đó không liên quan đến vấn đề bộ nhớ đệm ghi mà tôi đang quan sát.

Có cách nào để dự trữ dung lượng cho bộ đệm ghi hoặc sử dụng cả dm-writecache (mà tôi hiểu là sẽ không thực hiện bất kỳ bộ nhớ đệm đọc nào) và dm-cache cùng một lúc không?

Điểm:1
lá cờ ca

dm-cache là bộ đệm "di chuyển chậm": cần phải có nhiều lỗi đọc/ghi để quảng cáo một khối, đặc biệt là khi quảng cáo một khối mới có nghĩa là hạ cấp một cái đã được lưu trong bộ nhớ cache.

Bản chất dựa trên khối cố định của dm-cache, cùng với việc không có khu vực chỉ ghi dành riêng, có nghĩa là cần có nhiều thao tác ghi vào cùng các khối không được lưu trong bộ nhớ cache để kích hoạt quảng cáo/thay thế khối.Tuy nhiên, điều này cũng ngụ ý rằng bộ đệm ẩn trang nhân không "hấp thụ" nhiều lần ghi bị thiếu này, hợp nhất chúng trong một lần ghi vào các thiết bị khối bên dưới.

Nói cách khác, có lẽ bạn đang nhìn thấy hiệu ứng kết hợp của bộ đệm ẩn trang nhân (hấp thụ và hợp nhất các ghi) sự miễn cưỡng của dm-cache để thúc đẩy các khối bị bỏ lỡ đầu tiên.

Nếu bạn muốn dự trữ một số thiết bị/dung lượng để chỉ ghi bộ đệm, bạn có thể nhấn vào dm-writecache (và bình thường lvmcache)

Thông tin thêm:

dm-cache có chặn các lượt truy cập theo dõi thăng hạng/hạ cấp hay không. Lúc đầu, bạn có một bộ đệm trống với tất cả I/O được hướng đến thiết bị gốc (chậm). Vì vậy, khi bạn phát hành, giả sử, 4K đọc, nó sẽ truy cập vào thiết bị chậm bên dưới, với dm-cache theo dõi sự bỏ lỡ. Sau một số lần bỏ lỡ khác cùng một khối bộ đệm (mặc định 32K), sau đó toàn bộ khối bộ đệm được sao chép vào thiết bị nhanh. Nếu bây giờ bạn ghi vào các khối đã lưu trong bộ đệm, thì quá trình ghi của bạn sẽ được lưu vào bộ nhớ đệm. Tuy nhiên, nếu bài viết của bạn dành cho một khối chưa được lưu trong bộ nhớ cache, nó đi thẳng đến thiết bị gốc (chậm). Sau một số ghi không được lưu trong bộ nhớ cache khác, dm-cache cuối cùng sẽ phân bổ toàn bộ khối bộ đệm (hãy nhớ, 32K theo mặc định) sao chép dữ liệu gốc vào thiết bị bộ đệm. Tại thời điểm này, các lần đọc/ghi mới có thể được phục vụ từ bộ đệm. Hạ cấp rất đơn giản: khi một khối mới phải được thăng cấp, khối cũ nhất sẽ bị loại bỏ/xóa.

Nói cách khác, để ghi được lưu vào bộ đệm, phân đoạn bộ đệm tương ứng phải được cấp phát và dữ liệu sao lưu phải được sao chép trên thiết bị đệm (cấp phát khi ghi). Để hạn chế việc sử dụng băng thông giữa thiết bị gốc và thiết bị bộ đệm, việc sao chép này chỉ được thực hiện sau nhiều lần bỏ lỡ (tức là: một lần bỏ lỡ sẽ không phải thúc đẩy một khối). Lưu ý rằng việc đọc nhiều lần cùng một khối chưa được lưu trong bộ nhớ cache sẽ không phải hoạt động, vì bộ đệm ẩn trang nhân sẽ chỉ cung cấp khối được lưu trong bộ nhớ cache của chính nó.

dm-writecache hoạt động khác, giống với bộ đệm ghi lại bộ điều khiển RAID truyền thống hơn. Nó lưu trữ tất cả các viết, bỏ qua đọc. Nó gần như có thể được coi là "bộ đệm trang L2 chỉ ghi", nơi các trang bẩn được "hoán đổi" chờ thiết bị chậm bắt kịp. Để sử dụng nó, bạn cần phân vùng các thiết bị nhanh của mình giữa dm-cache (tại thời điểm này, phải được chạy dưới dạng viết qua bộ đệm) và dm-writecachehoặc để dành các thiết bị khác nhau cho chúng. Tôi chẳng bao giờ đã thử thực hiện điều đó thông qua LVM và tôi nghi ngờ rằng công cụ này sẽ ngăn bạn lồng/xếp chồng hai mô-đun bộ đệm khác nhau. Tuy nhiên, bạn có thể thử qua trực tiếp dmsetup mệnh lệnh.

Albert T avatar
lá cờ id
"có nghĩa là cần có nhiều thao tác ghi vào cùng các khối không được lưu trong bộ nhớ cache để kích hoạt quảng cáo/thay thế khối." Tôi không hiểu khái niệm về lưu vào bộ nhớ đệm một khối ghi và thăng cấp/hạ cấp nó. Về cơ bản, các lần ghi được lưu vào bộ nhớ đệm trong bộ đệm ghi (chẳng hạn như dm-writecache) và giảm hạng các khối khác trong bộ đệm đọc tích cực nếu lần ghi được tính là một lần truy cập. Bạn có thể giải thích về điều này nhiều hơn? "Nếu bạn muốn dành riêng một số thiết bị/không gian để chỉ ghi bộ đệm, bạn có thể nhấn vào dm-writecache (và lvmcache thông thường)" Làm thế nào tôi sẽ làm điều này? Điều này đòi hỏi phải có hai bộ đệm trên một LV phải không?
shodanshok avatar
lá cờ ca
@AlbertT Tôi đã chỉnh sửa câu trả lời của mình với thông tin bắt buộc

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.