2010-07-26 37 views
5

Tôi đang sử dụng R trên một số dữ liệu tương đối lớn và đang gặp phải một số vấn đề về bộ nhớ. Đây là trên Linux. Tôi có ít dữ liệu hơn đáng kể so với bộ nhớ có sẵn trên hệ thống vì vậy đó là vấn đề về quản lý phân bổ tạm thời.Các vấn đề về giới hạn bộ nhớ và GC với R

Khi tôi chạy gc(), tôi nhận được niêm yết sau

  used (Mb) gc trigger (Mb) max used (Mb) 
Ncells 2147186 114.7 3215540 171.8 2945794 157.4 
Vcells 251427223 1918.3 592488509 4520.4 592482377 4520.3 

chưa R dường như đã 4gb phân bổ trong bộ nhớ thường trú và 2GB trong trao đổi. Tôi giả định đây là bộ nhớ hệ điều hành được cấp phát mà hệ thống quản lý bộ nhớ của R sẽ phân bổ và GC khi cần thiết. Tuy nhiên, cho phép nói rằng tôi không muốn để R OS phân bổ nhiều hơn 4GB, để ngăn chặn trao đổi thrashing. Tôi luôn luôn có thể lo lắng, nhưng sau đó nó sẽ chỉ sụp đổ thay vì làm việc trong không gian giảm và GCing thường xuyên hơn. Có cách nào để chỉ định một tối đa tùy ý cho kích hoạt gc và đảm bảo rằng R không bao giờ os-phân bổ nhiều hơn? Hay tôi có thể làm gì khác để quản lý việc sử dụng bộ nhớ?

Trả lời

3

Tóm lại: không. Tôi thấy rằng bạn chỉ đơn giản là không thể quản lý bộ nhớ vi mô và gc().

Mặt khác, bạn có thể cố gắng giữ dữ liệu trong bộ nhớ, nhưng 'bên ngoài' của R. bigmemory làm cho điều đó khá dễ dàng. Tất nhiên, sử dụng một phiên bản 64 bit của R và ram phong phú có thể làm cho vấn đề biến mất quá.

+0

'bigmemory' giữ mọi thứ trên đĩa, phải không? – Shane

+0

Không, bạn có thể nghĩ đến 'ff'. –

+0

Ok, tốt để làm rõ điều đó. Tài liệu nói rằng 'bigmemory'" có thể sử dụng các tệp ánh xạ bộ nhớ ". Không chắc chắn khi nào hoặc nó liên quan như thế nào. Tôi không bao giờ nhìn vào internm bigmemory, nhưng có vẻ như nó sử dụng Boost.Interprocess. – Shane

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