Có người thu gom rác nào tính đến phân trang không?


12

Bộ sưu tập rác phải ghé thăm tất cả các đối tượng còn sống, để tìm bộ nhớ có thể được thu hồi. (Có nhiều thế hệ 'chỉ trì hoãn điều này một chút)

Tất cả mọi thứ đều bình đẳng, rõ ràng tốt hơn là lần đầu tiên truy cập vào đối tượng đã được phân trang vào RAM, trước khi phân trang khối khác và do đó phân trang một số đối tượng.

Khả năng bao phấn là khi HĐH muốn lấy một trang ram ra khỏi quy trình, trước tiên, GC được hỏi liệu nó có một trang có thể từ bỏ mà không cần phải phân trang không. GC có thể được thực hiện chủ yếu với các đối tượng di chuyển từ một trang, vì vậy có thể xóa trang đó trong thời gian giới hạn mà HĐH có để cần một trang.

Tuy nhiên, tôi không thể nhớ lại bất kỳ trình thu gom rác nào tích hợp với hệ thống phân trang của hệ điều hành theo thứ tự mà GC hoạt động.


Không chính xác phân trang nhưng gc phiên bản doanh nghiệp ruby đã được viết lại để giảm hiệu ứng của gc trên bản sao trên các trang ghi bằng cách di chuyển dữ liệu meta của đối tượng sang các trang riêng biệt.
dùng1937198


đáng ngạc nhiên, afaik / afaict, gần như tất cả (?) văn học gc dường như không phân tích phân trang hệ điều hành ngoại trừ một cách trừu tượng. ý tưởng: một hệ thống cấp phát bộ nhớ theo dõi các con trỏ giữa các đối tượng trong một cấu trúc tách biệt với chính các đối tượng có thể thân thiện với địa phương / phân trang hơn vì chỉ các con trỏ được truyền qua (trong gc) trong một không gian được nén chặt thay vì tất cả các đối tượng kích thước khác nhau có thể được trải ra trong bộ nhớ (và một số truy cập không thường xuyên và được phân trang). có thể có một số chi phí khiêm tốn nhưng nó có thể giúp tiết kiệm tổng thể tùy thuộc vào việc thực hiện.
vzn

Ổ đĩa flash cần sử dụng một hình thức sao chép bộ sưu tập rác có tính đến việc sắp xếp bộ nhớ thành các khối, mặc dù tôi không biết những điều như vậy được thảo luận tốt như thế nào trong tài liệu học thuật. Các vấn đề cần giải quyết rất khác nhau (ổ flash cần có GC vì không gian chỉ có thể được tái chế trong các khối rất lớn, vì vậy nếu một khối có một vài trang sống và nhiều trang chết, dữ liệu trực tiếp phải được sao chép ở nơi khác trước trang có thể được tái chế) nhưng các nguyên tắc hợp nhất dữ liệu có thể hữu ích.
supercat

Một mẫu tôi đã sử dụng trong trường hợp các mục dữ liệu đều nhỏ so với kích thước khối bộ nhớ của tôi là để mỗi mục dữ liệu bao gồm một tiêu đề có kích thước cố định được phân bổ từ trước ra sau và dữ liệu có kích thước thay đổi sẽ được phân bổ trở lại phía trước. Một bảng được giữ ánh xạ các địa chỉ khối logic đến các địa chỉ vật lý và lượng không gian trống trong mỗi khối; sau mỗi lần quét, nó cũng sẽ xác định được bao nhiêu không gian đã chết. Tài liệu tham khảo được lưu trữ trong flash và mỗi tài liệu tham khảo có dạng "Mục số 3 của đoạn số 7 hợp lý". Một chu trình GC sẽ sao chép tất cả dữ liệu trực tiếp từ một đoạn sang một dữ liệu mới và ...
supercat

Câu trả lời:


8

Như tôi nhớ, các nhà sưu tập sao chép được cho là thân thiện với nhau, vì việc truy tìm bằng cách sao chép có xu hướng cải thiện địa phương của các tham chiếu con trỏ. Điều này có tác động tích cực đến chương trình (trình biến đổi) sẽ gây ra ít lỗi trang hơn khi theo các liên kết và cũng sẽ cải thiện chu kỳ thu thập tiếp theo vì việc theo dõi cũng sẽ gây ra ít lỗi trang hơn. Chương trình theo dõi (mà con trỏ nên được xử lý trước) có thể có tác động đến hiệu quả để cải thiện địa phương dữ liệu. Điều này có thể được cải thiện bằng cách thống kê các số liệu về số lượng truy cập vào các con trỏ khác nhau trong các loại ô khác nhau.

Bây giờ, nếu bạn xem xét một trình thu thập dấu vết nói chung, bạn thường phải duy trì một cấu trúc theo dõi các con trỏ chưa được theo dõi. Có thể tổ chức cấu trúc này để tất cả các con trỏ chờ trỏ trong cùng một trang sẽ được giữ cùng nhau (mặc dù điều đó có thể chiếm nhiều không gian hơn, trong một số trường hợp, tùy thuộc vào các kỹ thuật có sẵn để giữ danh sách các con trỏ như vậy). Sau đó, một chính sách có thể là luôn luôn theo dõi tập hợp con trỏ chờ lớn nhất trỏ đến cùng một trang, khi không còn con trỏ chờ nào để lại các trang trong bộ nhớ.

Về câu hỏi trong đoạn thứ ba, đã được thêm vào sau khi tôi trả lời, bộ sưu tập sao chép lại là một câu trả lời. HĐH có thể giảm số lượng trang vật lý được phân bổ tại thời điểm thu thập, vì các trang được giải phóng hoàn toàn. Với một bộ sưu tập đánh dấu và quét, sự kiện toàn trang miễn phí nuôi ong có lẽ hiếm hơn nhiều, do đó không đáng để tính đến một máy móc cụ thể.

Loại ý tưởng này là tự nhiên, và có lẽ được mô tả trong một số bài báo. Nhưng tôi không nhớ nó ra tay. Tôi nghĩ rằng những bài báo ban đầu về Lisp GC có chứa một số ý tưởng này (chẳng hạn như: nên theo dõi xe hơi hay cdr trước?).

Tin tốt trong vai trò của bộ sưu tập bản sao này là phân trang rất thân thiện với bộ sưu tập sao chép vì nó làm tăng không gian lưu trữ có sẵn. Hãy nhớ lại rằng bộ thu thập bản sao yêu cầu về nguyên tắc gấp đôi dung lượng được sử dụng để lưu trữ dữ liệu thực tế. Bây giờ, hiệu ứng phân trang cũng phụ thuộc vào không gian địa chỉ của máy và bộ nhớ vật lý có sẵn. Trong máy tính cũ, bộ nhớ vật lý ít hơn nhiều so với không gian địa chỉ khả dụng, do đó phân trang thực sự là một phần thưởng không gian, cho phép các chính sách như sao chép GC. Ngay cả khi không gian vật lý lớn bằng không gian địa chỉ, người ta có thể muốn chia sẻ nó, để quá trình sử dụng một GC sẽ có ít không gian địa chỉ hơn mà không cần phân trang (xem phân trang). Những nhận xét này có phần bị mê hoặc bởi việc sử dụng các nhà sưu tập thế hệ. Họ thường sử dụng bộ sưu tập bản sao cho thế hệ trẻ một cách chính xác vì những phẩm chất này, và vì thế hệ trẻ chủ yếu sống ngắn.

Sau đó, bạn có tất cả các tương tác của GC thế hệ với hệ thống bộ đệm, điều này đã được thảo luận trong một câu hỏi trước: Bộ thu gom rác thế hệ có thân thiện với bộ đệm không?

Để biết thêm thông tin về các vấn đề này, tôi sẽ tìm kiếm trên web, ví dụ: từ khóa thu gom rácđịa phương .


không rõ ràng về ý tưởng của các nhà sưu tập sao chép thực sự là "cục bộ" hơn là truy tìm. các bộ sưu tập sao chép có vẻ khá giống nhau về động lực truy cập bộ nhớ (có thể gần như không thể phân biệt được) để truy tìm "không gian cũ". nghĩ rằng điều này cần một tài liệu tham khảo. cho biết có một số khả năng của cơ chế sao chép cải thiện sự liên tục trong không gian mới. không gian mới bắt đầu hoàn toàn tiếp giáp nhau, nhưng sau đó "địa phương" này giảm hoặc xuống cấp theo thời gian.
vzn

Vâng, bạn đã tìm thấy hầu hết các câu trả lời. Vì vậy, đừng nghi ngờ. Đó là trong các tài liệu tham khảo cơ bản về chủ đề này. Địa phương từ thực tế là lưu trữ được nén và từ việc sao chép gần với các ô dữ liệu khác gần nhau theo cấu trúc con trỏ (có thể tiến hóa bằng cách gán lại con trỏ).
babou

tôi vẫn còn hoài nghi / ngờ vực. Có vẻ như trực giác không gian cũ sẽ có địa phương kém và / hoặc tiếp giáp khi chu kỳ sao chép / gc được bắt đầu. địa phương có liên quan đến việc đọc (từ không gian cũ) viết (đến không gian mới). để phân tích nó, hành vi cử động / xuất hiện phải được nghiên cứu. có lẽ phần lớn trong số này chỉ có thể được nghiên cứu một cách hiệu quả / chính xác / thực tế và không nhiều về mặt lý thuyết.
vzn

Tôi đang nói nó là trong văn học, giống như nhiều thứ khác. Nhưng tôi không có thời gian để tìm kiếm nó và tôi nghĩ rằng câu trả lời của tôi dài và chứa đầy thông tin., Bạn có thể google: địa phương sao chép bộ sưu tập rác và có một tài liệu tham khảo cho câu hỏi trước đó. Xin lỗi vì đã ngắn gọn, có một chuyến tàu để bắt.
babou

Xin lỗi ... nhầm lẫn câu hỏi này với một câu hỏi khác ... có nhiều hơn.
babou

7

Emery Berger, Matthew Hertz & Yi Feng đã thực hiện một số công việc này.

Bộ sưu tập rác cung cấp nhiều lợi thế kỹ thuật phần mềm, nhưng tương tác kém với các trình quản lý bộ nhớ ảo. Trình thu gom rác hiện tại yêu cầu nhiều trang hơn nhiều so với các trang làm việc và chạm vào của ứng dụng mà không cần quan tâm đến trang nào trong bộ nhớ, đặc biệt là trong quá trình thu gom rác toàn bộ. Việc phân trang kết quả có thể khiến thông lượng giảm mạnh và thời gian tạm dừng tăng vọt lên đến vài giây hoặc thậm chí vài phút.

Tôi trình bày một công cụ thu gom rác tránh phân trang. Bộ sưu tập đánh dấu trang này hợp tác với người quản lý bộ nhớ ảo để hướng dẫn các quyết định trục xuất của nó.

Đây là video nói về Emery trên đó và anh ấy đã viết Bộ sưu tập rác mà không cần phân trang

Vì một số lý do, dường như không có nhiều công việc về sau, hoặc bất kỳ cách sử dụng nào trong thế giới thực của thế giới. Ở phần cuối của bài báo có ghi là Chúng tôi đang phát triển một biến thể đồng thời của thuật toán thu thập đánh dấu , nhưng tôi không thể theo dõi nó.

CRAMM: Hỗ trợ bộ nhớ ảo cho các ứng dụng thu gom rác nhìn vào việc thay đổi hệ điều hành để làm cho GC tạo ra ít phân trang hơn.

Sử dụng Trang cư trú để cân bằng sự cân bằng trong thu gom rác

Chúng tôi giới thiệu một phần mở rộng của bộ sưu tập sao chép chủ yếu sử dụng cư trú trang để xác định thời điểm di dời các đối tượng. Bộ sưu tập của chúng tôi quảng bá các trang có độ cư trú cao, tránh công việc không cần thiết và lãng phí không gian. Nó dự đoán cư trú của mỗi trang, nhưng khi dự đoán của nó không chính xác, trình thu thập của chúng tôi lấy lại không gian chưa sử dụng bằng cách sử dụng nó để đáp ứng các yêu cầu phân bổ. Sử dụng cư trú cho phép người thu thập của chúng tôi tự động cân bằng sự đánh đổi của việc sao chép và không sao chép. Kỹ thuật của chúng tôi cần ít không gian hơn trình thu thập sao chép thuần túy và hỗ trợ ghim đối tượng mà không làm mất khả năng di chuyển đối tượng. Không giống như các phép lai khác, trình thu thập của chúng tôi không phụ thuộc vào cấu hình dành riêng cho ứng dụng và có thể nhanh chóng đáp ứng thay đổi hành vi ứng dụng. Các phép đo của chúng tôi cho thấy rằng con lai của chúng tôi hoạt động tốt trong nhiều điều kiện khác nhau; nó thích bộ sưu tập sao chép khi có không gian heap rộng rãi nhưng lại rơi vào bộ sưu tập không sao chép khi không gian bị hạn chế.

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.