2012-04-19 43 views
7

Tôi đã thử bộ nhớ cache ổi gần đây và đã bị ngạc nhiên bởi chính sách trục xuất. Mặc dù bộ nhớ cache được ghi rõ là một lru trong tài liệu, nhưng nó không phải là defacto. Đối với tôi, việc trục xuất có vẻ ngẫu nhiên như các thử nghiệm của tôi. (thử nghiệm là để thêm 100 etnries, nhận được 100 mục, nồi khác nhau 100 mục, kiểm tra trật tự eviction) Tôi không muốn phát hiện một số evictions bất ngờ trong thời gian chạy. Bạn có thể vui lòng cung cấp một số nền tảng đằng sau chính sách trục xuất cho một bộ nhớ cache có giới hạn kích thước. Làm thế nào tôi có thể buộc bộ nhớ cache ổi để đuổi như LHM không?Chính sách xóa bỏ bộ nhớ cache của ổi

Trả lời

18

Bộ nhớ cache ổi là được phân đoạn thành concurrencyLevel các bảng băm khác nhau để cho phép đọc và ghi đồng thời nhiều lần. Giá trị mặc định là concurrencyLevel 4. Về cơ bản, nếu maximumSize của bạn được thiết lập để 100, sau đó kết quả thực sự duy nhất trong mỗi trong số bốn phân khúc nhận được một maximumSize của 25. Đây là lý do tại sao các quốc gia maximumSize tài liệu:

Lưu ý rằng bộ nhớ cache có thể loại bỏ mục nhập trước khi vượt quá giới hạn này. Khi kích thước bộ nhớ cache tăng lên gần mức tối đa, bộ nhớ cache sẽ loại bỏ các mục nhập ít có khả năng được sử dụng lại.

Vì vậy, nếu tình cờ, có 30 mục nhập vào một phân đoạn cụ thể, sau đó 5 mục nhập đó sẽ bị xóa.

Cách duy nhất để yêu cầu xóa toàn cầu ít được truy cập gần đây nhất đối với Cache là tắt hoàn toàn đồng thời bằng cách đặt concurrencyLevel(1). Ngay cả khi đó, tài liệu không thực hiện bất kỳ nào đảm bảo về thứ tự xóa bỏ các yếu tố và bạn không nên phụ thuộc vào nó.

+0

Cảm ơn bạn đã trả lời Louis. Đối với tôi, không rõ cách xử lý tài liệu đó. Vì vậy, ít concurrencyLevel = nhiều LRU. Nhưng tôi vẫn còn bối rối với việc loại bỏ cấp độ phân khúc. Tôi có đúng không nếu một phân đoạn đầy đủ nói> 25 (100/4) trong trường hợp của tôi, việc trục xuất sẽ bắt đầu? hoặc nó sẽ đuổi chỉ ở ~ maxSize nhưng sẽ loại bỏ một mục nhập lru cấp độ phân đoạn? –

+0

Nếu phân khúc vượt quá 25 mục, nó sẽ loại bỏ mục nhập ít nhất được sử dụng gần đây _trong phân khúc đó._ –

+0

(Về cơ bản, mỗi phân đoạn hoạt động nhiều hoặc ít hoàn toàn độc lập, để chúng có thể được sử dụng đồng thời mà không bị chặn lẫn nhau.) –

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