kiểm soát sử dụng bộ nhớ tmpfs


5

Có cách nào để giới hạn dung lượng RAM được sử dụng bởi tmpfs mà không giới hạn số lượng trao đổi không?

Hầu hết các tài liệu nói rằng tmpfs ' size tùy chọn sẽ giới hạn tổng kích thước của các tmpfs vách ngăn và sau này sẽ nói rằng không gian này được sử dụng bởi cả RAM và SWAP. Và sau đó nói rằng mặc định là một nửa ram của bạn bởi vì nếu nó sử dụng hết RAM, bạn sẽ gặp lỗi nghiêm trọng OOM. Thật khó hiểu.

Tôi muốn có nó bằng cách sử dụng 1/4 ram của tôi, nhưng lên đến 3/4 trao đổi, chẳng hạn.

Câu trả lời:


7

Theo như tôi biết, bạn không thể kiểm soát phần nào của hệ thống bộ nhớ ảo (tức là RAM hoặc trao đổi) được sử dụng cho một tmpfs.

Tuy nhiên, không đúng khi tạo một tmpfs lớn sẽ gây ra lỗi nghiêm trọng OOM. Bạn có thể tạo một tmpfs lớn hơn tổng RAM + SWAP của bạn vì không ai trong số đó thực sự được sử dụng cho đến khi bạn đặt các tệp vào tmpfs.

Khi bạn làm đặt các tệp trong tmpfs, sẽ sử dụng bộ nhớ, nhưng chỉ nhiều như các tệp bạn đặt vào tmpfs. Nếu sau đó bạn không chạm vào các tệp đó trong một thời gian dài và hệ thống cần sử dụng RAM nhiều hơn mức cần thiết để giữ chúng trong bộ đệm bộ đệm, thì các tệp đó sẽ thực sự được sao lưu từ trao đổi thay vì RAM.

Khi nhu cầu của bạn đối với các tmpfs trở thành một phần lớn của RAM, điều đó sẽ ảnh hưởng đến bộ đệm của bạn (mọi thứ sẽ ngừng được lưu trong bộ nhớ cache vì nó cần cho các tệp tmpfs). Khi nhu cầu tăng lên, thì nó sẽ bắt đầu hoán đổi. Cuối cùng, khi bạn không có bộ đệm bộ đệm, tất cả các trao đổi của bạn được sử dụng và vẫn còn nhiều yêu cầu cho bộ nhớ được thực hiện, sau đó và chỉ sau đó bạn sẽ bắt đầu gặp lỗi OOM.

Vì vậy, trên thực tế an toàn để chỉ định một tmpfs lớn cho /tmp miễn là bạn có một lượng trao đổi kha khá. Bạn nói rằng bạn sẽ ổn với nó khi sử dụng 25% RAM và 75% trao đổi của bạn. Trong trường hợp đó, giả sử bạn thường có 1G RAM và 2G trao đổi. Tôi đã đặt tmpfs thành 1G và tăng cường trao đổi một chút, nói với 3G.

Nếu hệ thống của bạn chịu áp lực bộ nhớ, điều đầu tiên sẽ xảy ra là các tệp được sử dụng không thường xuyên trong /tmp cuối cùng sẽ được hỗ trợ bởi trao đổi thay vì RAM. Bạn sẽ không mất tất cả RAM bằng cách tạo một tmpfs có cùng kích thước với RAM.


nó nói "mặc định 1/2 bộ nhớ của bạn" và ở đây nó có nghĩa là bộ nhớ có nghĩa là RAM vật lý. nhưng nó cũng có thể mở rộng để sử dụng SWAP. Tôi muốn không có nhiều hơn 400mb cho /tmp, nhưng một số ứng dụng kỳ lạ, như UNetBootin khăng khăng tải hình ảnh ISO xuống / tmp ... tôi không ngại việc tải xuống các tệp đó để trao đổi trên các quãng đường hiếm hoi tôi sử dụng ... nhưng tôi sẽ không để các tmpfs của mình có thể ăn tất cả ram của tôi tất cả các thời gian. và đó là những gì size=4g sẽ làm
gcb

Tôi xin lỗi, tôi đọc sai câu hỏi của bạn. Tôi sẽ chỉnh sửa nghiêm túc câu trả lời của mình vì nó hiện tại hầu như tồi tệ hơn vô dụng. Thật không may, hiện tại tôi không biết làm thế nào để làm cho nó hữu ích.
grifferz

cảm ơn. Bây giờ tôi đang thực hiện các thử nghiệm (chủ yếu là kiểm tra các giả định bạn đã nêu), sẽ liên kết đến chủ đề diễn đàn debian khi tôi có kết luận gì đó.
gcb

vậy làm thế nào mà các bài kiểm tra bật ra (gcb?)
ck_

@ck_ Tôi đã làm cho nó hoạt động như tôi muốn (tôi có thể tải xuống ISO bằng liveUSB và sau đó mở rộng iso trên một thiết bị khối khác mà không mất hết ram trong quá trình) Bộ nhớ của tôi không hoạt động tốt, nhưng tôi nhớ lại tìm thấy những lá cờ khác bên cạnh size trong hạt nhân mới hơn. Ngoài ra tôi không thể tìm thấy chủ đề trên các diễn đàn debian ... có lẽ nó đã bị xóa (nó bắt đầu với một số anh chàng điên khùng phàn nàn rằng tôi đã 'đăng chéo' bằng cách đăng cùng một câu hỏi ở đây. đã có cuộc thảo luận hữu ích sau cuộc tranh luận ngu ngốc). sẽ mang hệ thống tôi sử dụng thời gian đó trở lại vào tuần tới :)
gcb
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.