Bao nhiêu dung lượng SWAP trên hệ thống 2-4GB?


53

Tôi nên quyết định kích thước nào để thực hiện trao đổi trên máy Linux mới (Debian) với RAM 2-4 GB? Tôi có thực sự cần không gian hoán đổi?


3
Bộ nhớ 2-4 GB không thực sự cao nữa 5 năm sau.
tài chính fifi

@KasperSouren Không, không phải vậy. Là một số tiền hợp lý tại thời điểm đó.
C. Ross

Câu trả lời:


54

Có rất nhiều cách bạn có thể tìm ra bao nhiêu trao đổi sử dụng trong một máy. Các đề xuất phổ biến sử dụng các công thức dựa trên RAM như 2 x RAM, 1,5 x RAM, 1 x RAM, 0,75 x RAM và 0,5 x RAM. Nhiều lần các công thức được thay đổi tùy thuộc vào dung lượng RAM (do đó, hộp có 1GB RAM có thể sử dụng 2 lần trao đổi RAM (2 GB), trong khi hộp có 16 GB ram có thể sử dụng 0,5 lần trao đổi RAM (8GB).

Một điều khác cần xem xét là những gì hộp sẽ được sử dụng cho. Nếu bạn sẽ có một số lượng lớn các quy trình đang chạy đồng thời đang chạy trên hộp, nhưng một số lượng đáng kể trong số chúng sẽ không hoạt động trong khoảng thời gian, sau đó thêm trao đổi thêm có ý nghĩa. Nếu bạn đang chạy một số lượng nhỏ các quy trình quan trọng, thì việc thêm trao đổi bổ sung có ý nghĩa (điều này có vẻ phản trực giác, nhưng tôi sẽ giải thích sau một phút). Nếu bạn đang chạy một hộp như một máy tính để bàn, thì việc thêm trao đổi thêm có ý nghĩa.

Về việc bạn nên bao gồm trao đổi, có, bạn nên. Bạn nên luôn luôn bao gồm không gian hoán đổi trừ khi bạn thực sự biết những gì bạn đang làm và bạn thực sự có lý do chính đáng cho việc đó.

Hãy xem, cách thức hoạt động của nhân Linux, trao đổi không chỉ được sử dụng khi bạn đã sử dụng hết bộ nhớ vật lý. Nhân Linux sẽ lấy các ứng dụng không hoạt động (ngủ) và sau một thời gian, di chuyển ứng dụng để trao đổi từ bộ nhớ thực. Kết quả là khi bạn cần ứng dụng đó, sẽ có một độ trễ tạm thời (thường chỉ là một hoặc hai giây) trong khi bộ nhớ của ứng dụng được đọc lại từ trao đổi sang RAM. Và đây thường là một điều tốt.

Điều này cho phép bạn đặt các ứng dụng không hoạt động vào "ngủ", cho phép các ứng dụng đang hoạt động của bạn truy cập vào RAM bổ sung. Ngoài ra, Linux sẽ sử dụng bất kỳ RAM có sẵn (chưa phân bổ) nào trên máy làm bộ đệm đĩa, làm cho hầu hết hoạt động (chậm) của đĩa nhanh hơn và phản hồi nhanh hơn. Trao đổi các quy trình không hoạt động cung cấp cho bạn nhiều bộ đệm đĩa hơn và làm cho tổng thể máy của bạn nhanh hơn.

Cuối cùng, hãy đối mặt với nó, không gian đĩa là rẻ. Thực sự rẻ. Thực sự không có lý do chính đáng nào cả để không quét một phần nhỏ (tương đối) không gian để trao đổi. Nếu tôi đang chạy với 2GB - 4GB RAM trong một máy, có lẽ tôi sẽ thiết lập không gian hoán đổi của mình ít nhất bằng với RAM. Nếu nó có ít hơn 2 GB RAM, thì tôi vẫn sẽ sử dụng ít nhất 2 GB trao đổi.

CẬP NHẬT: Như một bình luận tuyệt vời đã đề cập (và tôi đã quên đưa vào), nếu bạn đang chạy máy tính xách tay hoặc máy tính để bàn mà bạn có thể muốn đặt ở chế độ 'ngủ đông' (Tạm dừng vào Đĩa), thì bạn luôn muốn ít nhất là nhiều trao đổi khi bạn có bộ nhớ. Không gian hoán đổi sẽ được sử dụng để lưu trữ nội dung của RAM trong máy tính trong khi nó 'ngủ'.


22
Câu trả lời tuyệt vời, nhưng bạn quên mất một điều. Nếu đó là máy tính để bàn hoặc máy tính xách tay, hãy đảm bảo rằng trao đổi ít nhất bằng RAM bạn có để bạn có thể ngủ đông máy tính của mình. Điều này tiết kiệm RAM để trao đổi.
Sander Marechal

4
Bài đăng tuyệt vời. Sander đánh bại tôi với điều duy nhất tôi sẽ thêm vào nó. Tôi mặc dù có thêm một mục, nếu bạn có nhiều ổ đĩa, việc trao đổi trao đổi của bạn trên một ổ đĩa không có phần còn lại của hệ thống tệp hoạt động của bạn có thể cải thiện hiệu suất vì nó sẽ không có nhiều xung đột.
GreenKiwi

như tôi đã tìm ra vào mùa hè vừa qua, bạn cần phải có không gian hoán đổi đáng kể nếu bạn đang chạy Java
warren

Nếu người dùng có dung lượng RAM lớn hơn nhiều so với số lượng họ thực sự sẽ sử dụng (16GB / 32GB) trên máy tính để bàn 100% thời gian hoạt động (không ngủ đông) thì bạn vẫn đề nghị các quy trình yêu cầu được đưa vào SWAP chứ? Dường như với tôi sẽ có những lợi ích của việc để lại mọi thứ trên RAM trừ khi bạn gần hết dung lượng.
earthmeLon

1
@earthmeLon - Tôi sẽ đề nghị vẫn có một chút trao đổi. Đĩa rất lớn và rẻ trong những ngày này, vì vậy việc mất một vài GB dung lượng đĩa để trao đổi là không đáng kể. Có một số không gian hoán đổi cung cấp cho bạn một chính sách bảo hiểm trong trường hợp thứ gì đó ngốn nhiều RAM hơn bạn mong đợi.
Christopher Cashell

17

Red Hat đề xuất công thức sau cho các máy chủ có nhiều ram:

if MEM < 2GB then SWAP = MEM*2 else SWAP = MEM+2GB

Nếu hệ thống của bạn có ram 1 GB, trao đổi của bạn sẽ là 2 GB, đối với 16 GB, đó sẽ là 18 GB.


3
Liên kết có liên quan từ hướng dẫn lưu trữ của RHEL6
Ophidian

Một máy chủ sẽ bị đình trệ nếu nó liên tục sử dụng 1Gb trao đổi vì ram của nó sẽ đầy.
dùng2284570

12

Câu trả lời muộn và tôi nghĩ rằng điều này đã được trình bày khá nhiều trong câu trả lời được chọn, nhưng có một số thông tin tốt và dễ tiêu hóa trong câu trả lời được cung cấp bởi @ssapkota tại đây (sao chép / dán bên dưới).

Đây là một đề xuất rất tốt từ RedHat: Không gian hoán đổi hệ thống được đề xuất

Một đoạn trích từ cùng một liên kết:

Trong những năm qua, lượng không gian hoán đổi được đề xuất tăng tuyến tính với lượng RAM trong hệ thống. Nhưng vì dung lượng bộ nhớ trong các hệ thống hiện đại đã tăng lên hàng trăm gigabyte, nên giờ đây người ta nhận ra rằng dung lượng trao đổi mà hệ thống cần là một chức năng của khối lượng công việc bộ nhớ chạy trên hệ thống đó. Tuy nhiên, do không gian hoán đổi thường được chỉ định khi cài đặt và có thể khó xác định trước khối lượng công việc bộ nhớ của hệ thống , chúng tôi khuyên bạn nên xác định hoán đổi hệ thống bằng bảng sau.

Bảng hiện tại (tính đến tháng 12 năm 2012):

Amount of RAM in the system   Recommended swap space         Recommended swap space 
                                                             if allowing for hibernation
---------------------------   ----------------------------   ---------------------------
2GB of RAM or less            2 times the amount of RAM      3 times the amount of RAM
2GB to 8GB of RAM             Equal to the amount of RAM     2 times the amount of RAM
8GB to 64GB of RAM            0.5 times the amount of RAM    1.5 times the amount of RAM
64GB of RAM or more           4GB of swap space              No extra space needed

Bảng gốc:

Amount of RAM in the System     Recommended Amount of Swap Space
4GB of RAM or less              a minimum of 2GB of swap space
4GB to 16GB of RAM              a minimum of 4GB of swap space
16GB to 64GB of RAM             a minimum of 8GB of swap space
64GB to 256GB of RAM            a minimum of 16GB of swap space
256GB to 512GB of RAM           a minimum of 32GB of swap space 

8

Nó phụ thuộc khá nhiều vào những gì bạn đang làm với nó. Với khối lượng công việc phù hợp, bạn thực sự không cần bất kỳ dung lượng trao đổi nào, cho dù bạn có 16MB hay 16384MB RAM; thực sự hầu hết các thiết bị Linux nhúng chạy mà không có bất kỳ (chúng sẽ trao đổi với cái gì?)

Xem xét giá RAM, có lẽ bạn sẽ không sử dụng trao đổi để tính toán hoạt động. Vì vậy, những gì còn lại?

  1. Trên máy tính để bàn, không gian hoán đổi được sử dụng để treo vào đĩa. Không gian hoán đổi này cần khoảng 1 × RAM, tùy thuộc vào mức độ nén nội dung bộ nhớ.
  2. Cho phép các tác vụ không hoạt động được xóa khỏi RAM để có thêm chỗ cho bộ đệm đĩa
  3. Tương tự, nhưng để cho phép các quy trình hoạt động sử dụng nó thay thế cho heap / stack

(2) và (3) phụ thuộc nhiều vào khối lượng công việc. Trên máy tính để bàn của tôi, tôi có thể dễ dàng sử dụng 4GB + trên (2), từ việc để lại vims, xterms, v.v. chạy trên các máy tính để bàn khác.

Trên hầu hết các máy chủ tôi chạy, hầu như không có bất cứ thứ gì bị tráo đổi và 1 Ho2GB trao đổi (bất kể dung lượng RAM) có vẻ ổn.


không gian hoán đổi cũng được sử dụng nếu bạn chạy bất cứ thứ gì sử dụng JVM: đừng chintz và quên phân bổ không gian hoán đổi nếu bạn đang chạy Java!
warren

@warren: Tôi có các phiên bản Tomcat, mỗi phiên bản vượt quá 3GiB, nhưng không sử dụng trao đổi (và một trường hợp đang sử dụng ôm, và do đó không thể hoán đổi). Không chắc chắn những gì bạn đang nói về.
derobert

có một lỗi nửa tối nghĩa trong JVM liên quan đến các cài đặt bộ nhớ tối thiểu và tối đa mà tôi gặp phải vào mùa hè vừa qua ( antipaucity.com/?p=984 ). TL; DR - mỗi khi JVM yêu cầu thêm bộ nhớ từ HĐH, nó sẽ tự ghi lại để trao đổi, lấy đoạn bộ nhớ mới, sau đó đọc lại vào RAM để bộ nhớ của nó liền kề nhau
warren

@warren: OK, tôi đang chạy OpenJDK trên 64 bit, với Xmx và Xms giống nhau. Nhưng tôi không chắc java sẽ buộc mình phải trao đổi như thế nào, tòa nhà duy nhất đóng cửa madvise, nhưng điều đó sẽ không thất bại ... lỗi đó nói về việc hết bộ nhớ trong quá trình thu gom rác. Thêm trao đổi ngăn chặn điều đó, tất nhiên, nhưng vì vậy sẽ thêm RAM. Có lẽ do 32-bit với PAE?
derobert

điều đó cũng xảy ra với JVM 64 bit: nếu bạn có XmsXmxkhông được đặt cùng một giá trị, nó có thể cắn bạn rất tệ: gây ra vấn đề lớn cho chúng tôi trong hai + tuần cho đến khi chúng tôi cuối cùng đã theo dõi nó
warren 10/11/11

4

Vâng, nó phụ thuộc vào những dịch vụ và ứng dụng bạn dự định chạy. Bạn có thể xem mức sử dụng bộ nhớ của mình với free -m và điều chỉnh phân vùng trao đổi phù hợp theo thời gian.

Đây là một cuộc thảo luận thú vị về chủ đề này. Cá nhân (và sau khi đọc cuộc thảo luận đó) Tôi vẫn còn khoảng 1 GB để trao đổi.


2

Tôi không thể nói chuyện trực tiếp với Debian, nhưng tôi biết rằng khi bạn tăng lên trên 2 GB RAM, phương trình 2xRAM ban đầu sẽ thay đổi, thường xuống còn 1xRAM. Tôi nghĩ rằng một khi bạn đạt 16 GB RAM, đề xuất lại giảm xuống còn 0,75xRAM.

Tất nhiên, tôi thấy điều này đúng với Solaris và thực sự là số liệu được sử dụng cho các cài đặt của Oracle, vì vậy YMMV tùy thuộc vào các ứng dụng bạn sẽ chạy trên đó.


2

Tôi luôn luôn trao đổi nhiều (ít nhất) như RAM. Chỉ trong trường hợp tôi muốn ngủ đông máy một ngày nào đó. Có thể làm việc với ít hơn, nhưng cũng có thể không.

Dung lượng ổ cứng ngày nay rất rẻ, do đó tôi không ngần ngại cho đi dung lượng trao đổi.


2

Hoán đổi không gian có thể phục vụ như "đệm" khi bạn sẽ hết bộ nhớ ngay lập tức.

Khi một quá trình tiêu thụ tất cả RAM có sẵn và sau đó một số máy sẽ chạy rất chậm, nhưng bạn thường sẽ có thể phục hồi. Nó cũng sẽ dễ dàng hơn để xem quá trình nào gây ra vấn đề.


2
Đây là con dao hai lưỡi: trên PC ở nhà của tôi, tôi đã loại bỏ trao đổi khi tôi đang sử dụng Firefox 2.x, vì nó đang dần ăn hết bộ nhớ và khi máy bị tráo đổi, nó trở nên hoàn toàn không sử dụng được; không có trao đổi, quá trình firefox chỉ đơn giản là được đóng bởi kernel :)
wazoox

1

Trong những năm qua, tôi đã tuân theo quy tắc rằng đối với các máy Windows, bạn có nhiều trao đổi như RAM ... Trên Novell, chúng tôi sẽ điều chỉnh trao đổi cao hơn nếu chúng tôi có nhiều máy in hơn ... Đối với linux, quy tắc và thực hành đối với tôi là 1GB trao đổi cho mỗi RAM 2GB bạn có. Và bạn đặt nó ở phía trước đĩa để nó được truy cập nhanh hơn.

  • Nếu đó là cổng thư / thư rác, tôi sử dụng gấp đôi trao đổi sang RAM
  • Nếu đó là máy chủ * tôi hoàn toàn không sử dụng trao đổi
  • nếu đó là máy chủ LAMP, quy tắc 1/2 có hiệu lực.

  • Số dặm sẽ thay đổi tùy thuộc vào ứng dụng và sử dụng GUI.


Trên thực tế, tôi nghĩ rằng trao đổi ở giữa đĩa sẽ được truy cập nhanh nhất.
Eddie

0

Tôi tạo trao đổi 1GB và mua thêm RAM khi nó được sử dụng. Bạn không thực sự cần trao đổi trên các máy tính hiện đại, RAM rất rẻ.


0

Bạn đang sử dụng hệ thống để làm gì? Cá nhân tôi không sử dụng bất kỳ trao đổi. Nếu bất cứ điều gì sử dụng mã thông báo 512MB hoặc một cái gì đó chỉ để mọi thứ có thể được đưa vào đĩa nếu cư trú nhưng không hoạt động trong thời gian dài.


0

Tôi chỉ sử dụng một trao đổi mã thông báo nhỏ (thường là 256 MB, nhưng tôi thậm chí đã thực hiện 64 MB) vì cấu hình một hệ thống có trao đổi bằng không cần cấu hình đặc biệt.

Dung lượng đĩa rẻ, nhưng slooooooooow. Ngay khi hệ thống bắt đầu hoán đổi, hiệu suất bằng không. Và RAM không còn quá đắt.

Tin tôi đi, mua bộ xử lý chậm hơn một chút và mua thêm RAM. 2,8 GHz thay vì 3,0 GHz sẽ giúp bạn tiết kiệm đủ tiền để mua thêm 2 GB RAM.

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.