Tôi có cần dung lượng trao đổi nếu tôi có quá nhiều RAM không?


91

Theo những gì tôi hiểu, mục đích của phân vùng trao đổi trong Linux là giải phóng một số thông tin "không thường xuyên truy cập" từ RAM và chuyển nó sang một phân vùng cụ thể trên ổ cứng của bạn (với chi phí làm cho nó chậm hơn để đọc hoặc ghi đến), về cơ bản cho phép các ứng dụng hoạt động nhiều hơn "bộ nhớ tốc độ cao".

Điều này rất phù hợp khi bạn ở trên một máy có dung lượng RAM nhỏ và không muốn gặp sự cố nếu bạn hết. Tuy nhiên, nếu hệ thống của bạn có 16 GB hoặc 32 GB RAM và giả sử bạn không chạy cơ sở dữ liệu MySQL cho StackExchange hoặc chỉnh sửa phim có độ dài 1080p đầy đủ trong Linux, có nên sử dụng phân vùng trao đổi?


16
@mikeerv Bạn biết đấy, tôi rất thích chấp nhận hai chữ cái đó như một câu trả lời chỉ vì hiệu ứng hài hước.
IQAndreas

3
@Janis - chi phí rất nhiều. Và bạn có thể dễ dàng thực hiện mà không cần trao đổi trên ngay cả máy 1GB nếu bạn triển khai quản lý bộ nhớ âm thanh. Hoán đổi chi phí hiệu năng - khi bạn có nó, hạt nhân chắc chắn sẽ sử dụng nó. Vì vậy, trên đĩa 1TB hoặc bất kỳ kích thước nào, việc tạo phân vùng trao đổi là một lời mời đến kernel để đặt các trang bộ nhớ vào đĩa, thay vì giữ chúng trong RAM hoặc thả chúng hoàn toàn. Với 16gb, một người dùng thông thường sẽ không bao giờ tiếp cận bằng cách sử dụng tất cả - Tôi đã sử dụng RAM 24gb w / 2gb và bộ nhớ cache 10gb (vì tôi đã tải torrent /tmp) sau 3 ngày hoạt động.
mikeerv

5
@mikeerv, bạn sai rồi tôi sợ; Tôi đã liên tục quan sát các số liệu đĩa hiển thị. Miễn là có bộ nhớ trống, trao đổi đã không được sử dụng, chỉ khi bộ nhớ được lấp đầy, việc hoán đổi bắt đầu. Tôi nghĩ rằng nó phụ thuộc vào cách bạn sử dụng máy tính của bạn; một hệ thống máy tính để bàn bị tắt máy mỗi tối sẽ hiếm khi gặp vấn đề về bộ nhớ, tuy nhiên hệ thống của tôi có thời gian hoạt động hàng tháng. Có, trao đổi chi phí hiệu năng, nhưng nếu không còn dung lượng RAM, hệ thống của bạn có thể tiếp tục hoạt động. Lựa chọn bạn có là gì? Có lẽ bạn có thể giải thích về đối số quản lý bộ nhớ. Tôi sử dụng hệ thống Linux của mình như được cấu hình sẵn.
Janis

40
@mikeerv làm thế nào bạn đăng một bình luận ngắn hơn 15 ký tự?
Immibis

11
@immibis có 12 không gianchiều rộng bằng không
dave

Câu trả lời:


98

Đúng.

Bạn chắc chắn phải luôn luôn kích hoạt trao đổi, ngoại trừ nếu có một lý do rất hấp dẫn, cấm (như, không có đĩa nào cả, hoặc chỉ có đĩa mạng). Bạn có nên trao đổi theo thứ tự các kích thước lố bịch thường được đề xuất (chẳng hạn như, gấp đôi dung lượng RAM) không? À, không .

Lý do là hoán đổi không chỉ hữu ích khi các ứng dụng của bạn tiêu thụ nhiều bộ nhớ hơn so với RAM vật lý (thực tế, trong trường hợp đó, hoán đổi hoàn toàn không hữu ích vì nó ảnh hưởng nghiêm trọng đến hiệu suất). Ưu đãi chính cho việc hoán đổi hiện nay không phải là biến 16GiB RAM thành 32 GiB một cách kỳ diệu, mà là sử dụng hiệu quả hơn RAM đã cài đặt, có sẵn.

Trên một máy tính hiện đại, RAM không được sử dụng. RAM không sử dụng là thứ mà bạn có thể không mua và tiết kiệm tiền thay vào đó. Do đó, bất cứ thứ gì bạn tải hoặc bất cứ thứ gì được ánh xạ bộ nhớ, bất cứ thứ gì có thể được sử dụng lại bởi bất cứ ai sau đó (bị giới hạn bởi các ràng buộc bảo mật) đều được lưu vào bộ nhớ cache. Rất nhanh sau khi máy khởi động, tất cả RAM vật lý sẽ được sử dụng cho mục đích gì đó .

Bất cứ khi nào bạn yêu cầu một trang bộ nhớ mới từ hệ điều hành, trình quản lý bộ nhớ phải đưa ra quyết định có học thức:

  1. Lọc một trang khỏi bộ đệm bộ đệm
  2. Lọc một trang khỏi ánh xạ (hiệu quả giống như # 1, trên hầu hết các hệ thống)
  3. Di chuyển một trang không được truy cập trong một thời gian dài - tốt nhất là không bao giờ - để trao đổi (thực tế điều này thậm chí có thể xảy ra một cách chủ động, không nhất thiết là vào thời điểm cuối cùng)
  4. Giết quá trình của bạn hoặc giết một quá trình ngẫu nhiên (OOM)
  5. Hạt nhân hoảng loạn

Tùy chọn # 4 và # 5 rất không mong muốn và sẽ chỉ xảy ra nếu hệ điều hành hoàn toàn không có lựa chọn nào khác. Tùy chọn # 1 và # 2 có nghĩa là bạn vứt bỏ thứ gì đó mà bạn có thể sẽ cần lại sớm. Điều này tác động tiêu cực đến hiệu suất.

Tùy chọn # 3 có nghĩa là bạn di chuyển thứ gì đó mà bạn (có thể) không cần bất kỳ lúc nào vào bộ nhớ chậm. Điều đó tốt bởi vì bây giờ thứ gì đó bạn cần có thể sử dụng RAM nhanh.

Bằng cách loại bỏ tùy chọn # 3, bạn đã giới hạn hiệu quả hệ điều hành để thực hiện # 1 hoặc # 2. Tải lại một trang từ đĩa cũng giống như tải lại nó từ trao đổi, ngoại trừ việc phải tải lại từ trao đổi thường ít có khả năng (do đưa ra quyết định phân trang phù hợp).

Nói cách khác, bằng cách vô hiệu hóa trao đổi, bạn không thu được gì, nhưng bạn giới hạn số lượng tùy chọn hữu ích của hệ điều hành trong việc xử lý yêu cầu bộ nhớ. Điều này có thể không , nhưng rất có thể là một bất lợi (và sẽ không bao giờ là một lợi thế).

[BIÊN TẬP]

Người đọc cẩn thận của mmap trang web , cụ thể là mô tả về MAP_NORESERVE, sẽ nhận thấy một lý do chính đáng khác tại sao trao đổi là một phần cần thiết ngay cả trên một hệ thống có bộ nhớ vật lý "đủ":

"Khi không gian trao đổi không được bảo lưu, người ta có thể nhận SIGSEGV khi ghi nếu không có bộ nhớ vật lý."

- Đợi một lát, điều đó có nghĩa là gì?

Nếu bạn ánh xạ một tệp, bạn có thể truy cập trực tiếp vào nội dung của tệp như thể tệp đó bằng cách nào đó, bằng phép thuật, trong không gian địa chỉ chương trình của bạn. Để truy cập chỉ đọc, về nguyên tắc , hệ điều hành cần nhiều hơn một trang bộ nhớ vật lý mà nó có thể sao lưu với các dữ liệu khác nhau mỗi khi bạn truy cập một trang ảo khác (vì lý do hiệu quả, tất nhiên đó không phải là việc đã làm, nhưng về nguyên tắc, bạn có thể truy cập dữ liệu trị giá terabyte với một trang bộ nhớ vật lý). Bây giờ nếu bạn cũng vậyghi vào một ánh xạ tập tin? Trong trường hợp này, hệ điều hành phải có một trang vật lý - hoặc không gian hoán đổi - sẵn sàng cho mọi trang được viết. Không có cách nào khác để giữ dữ liệu xung quanh cho đến khi quá trình viết lại các trang bẩn đã hoàn thành công việc của nó (có thể là vài giây). Vì lý do này, hệ điều hành dự trữ (nhưng không nhất thiết phải cam kết) trao đổi không gian, vì vậy trong trường hợp bạn đang viết vào bản đồ trong khi không có trang vật lý nào không được sử dụng (đó là điều hoàn toàn có thể và điều kiện bình thường), bạn ' Tái đảm bảo rằng nó sẽ vẫn hoạt động.

Bây giờ nếu không có trao đổi thì sao? Điều đó có nghĩa là không thể trao đổi (duh!) Và điều này có nghĩa là ngay khi không còn trang vật lý miễn phí nào và bạn đang viết lên một trang, bạn sẽ nhận được một bất ngờ thú vị ở dạng nhận được quá trình của bạn một lỗi phân khúc, và có thể bị giết.

[/BIÊN TẬP]

Tuy nhiên, khuyến nghị truyền thống về việc thực hiện trao đổi gấp đôi kích thước của RAM là vô lý. Mặc dù dung lượng đĩa là rẻ, nhưng sẽ không có ý nghĩa gì khi gán nhiều trao đổi đó. Lãng phí thứ gì đó rẻ tiền vẫn còn lãng phí và bạn hoàn toàn không muốn liên tục hoán đổi trong và ngoài bộ làm việc với kích thước vài trăm megabyte (hoặc lớn hơn).

Không có kích thước hoán đổi "chính xác" duy nhất (có nhiều kích thước "chính xác" như có người dùng và ý kiến). Tôi thường chỉ định 512MiB cố định, bất kể kích thước RAM, hoạt động rất tốt đối với tôi. Lý do đằng sau đó là 512MiB là thứ mà ngày nay bạn luôn có thể mua được, ngay cả trên một đĩa nhỏ. Mặt khác, thêm một vài gigabyte trao đổi là không tốt hơn. Bạn sẽ không sử dụng chúng, trừ khi có gì đó không ổn.

Thậm chí trên một SSD, hoán đổi là đơn đặt hàng của cường độ chậm hơn so với RAM (do băng thông xe buýt và độ trễ), và trong khi nó là rất có thể chấp nhận để di chuyển một cái gì đó để trao đổi mà có lẽ sẽ không cần thiết nữa (tức là nhiều khả năng bạn sẽ không được hoán đổi nó một lần nữa, để nhóm trang có sẵn của bạn được mở rộng miễn phí một cách hiệu quả), nếu bạn thực sự cần một lượng trao đổi đáng kể (nghĩa là bạn có một ứng dụng sử dụng ví dụ như tập dữ liệu 50GiB), bạn sẽ bị mất khá nhiều.

Khi máy tính của bạn bắt đầu hoán đổi các trang có giá trị hàng gigabyte, mọi thứ sẽ chuyển sang thu thập dữ liệu. Vì vậy, đối với hầu hết mọi người (bao gồm cả tôi), đây không phải là một lựa chọn và việc trao đổi nhiều như vậy là vô nghĩa.


7
Hoàn toàn sai sự thật: nó có thể là một lợi thế cho kernel không sử dụng đĩa, đặc biệt nếu bạn đã cấu hình OOM cho thông số kỹ thuật của bạn. Nếu trình diệt OOM được cấu hình để xử lý việc dọn dẹp của bạn, thì việc thực hiện nó thay vì lãng phí không gian đĩa và làm chậm máy của bạn là thuận lợi.
mikeerv

22
Sự khác biệt giữa việc có 8 GB RAM và 8 GB trao đổi và 16 GB RAM và không có trao đổi là gì? Nếu máy tính của bạn quyết định nó cần bộ nhớ 16,001 GB, nó sẽ không bắt đầu thanh trừng / giết chết mọi thứ như nhau (nhưng hiệu suất sẽ tăng lên trước khi nó bắt đầu xảy ra)?
Nick T

5
@NickT: Việc hoán đổi không phải để có thêm RAM nhiều như một lá cờ đỏ rằng sẽ có thứ gì đó sắp bị giết. Tôi thích có một lá cờ đỏ trước khi giết, hơn là có một quá trình "ngẫu nhiên" biến mất trước mắt tôi.
Vịt Mooing

10
-1 câu trả lời này không có ý nghĩa. Tại sao quái vật có bộ nhớ chậm (trao đổi) có hiệu suất tốt hơn so với cùng một bộ nhớ (RAM) nhanh hơn ?? tại một số điểm bạn phải thừa nhận đủ RAM nghĩa là không cần trao đổi ..
Mehrdad

14
@Mehrdad: Nó chắc chắn có ý nghĩa. Bộ nhớ chậm hơn (trao đổi) cải thiện hiệu suất trong chừng mực vì "chậm hơn" không quan trọng đối với những thứ mà bạn hiếm khi truy cập hoặc không bao giờ. Hoán đổi hiệu quả làm tăng dung lượng bộ nhớ khả dụng cho dữ liệu "nóng" bằng cách di chuyển dữ liệu "lạnh" ra ngoài. Daemon chỉ thực hiện một cái gì đó một lần mỗi giờ hoặc bộ nhớ được cấp phát bởi một mô-đun hạt nhân được tải theo mặc định nhưng không bao giờ được sử dụng là một ví dụ về điều đó. Bạn có thể trao đổi những cái đó , hoặc thay vào đó bạn có thể thả các trang từ bộ đệm. Cái nào tốt hơn?
Damon

50

Tôi sẽ không đồng ý với một vài ý kiến ​​mà tôi thấy được nêu ở đây. Tôi vẫn sẽ tạo một phân vùng SWAP đặc biệt là trong môi trường sản xuất. Tôi làm điều đó cho các máy gia đình và máy ảo của tôi là tốt.

Những ngày này, tôi định cỡ chúng khoảng 1-1,5 lần bộ nhớ. Bộ nhớ 2 lần được sử dụng là quy tắc của ngón tay cái. Đĩa trao đổi là "giá rẻ" ở chỗ nó không cần phải sao lưu hoặc bảo vệ.

Nếu bạn thiếu bộ nhớ, thì không gian trao đổi của bạn sẽ cho bạn một ít thời gian và đệm để giải quyết vấn đề.

Nhận ra rằng những thứ như / tmp có thể nằm trong không gian trao đổi.

Vùng trao đổi có thể chứa kết xuất kernel một phần để có thể khôi phục lại trong lần khởi động lại tiếp theo. Điều này có thể tốt cho một số trường hợp khẩn cấp gỡ lỗi trong tương lai mà bạn được kêu gọi làm.


16
+1. Có một trao đổi có nghĩa là sự khác biệt giữa hiệu suất bị tổn thương trong bộ nhớ thấp và một vụ tai nạn khó khăn.
Davidmh

6
@mikeerv cho dù bạn định cấu hình nó như thế nào, nếu chương trình của bạn cố phân bổ nhiều bộ nhớ hơn mức có sẵn, một cái gì đó sẽ bị sập, hoặc HĐH sẽ bắt đầu giết chúng.
Davidmh

6
@Davidmh: Vì lý do đó, tệp hoán đổi của bạn phải vô cùng lớn, nếu không các chương trình của bạn sẽ vẫn bị sập khi chúng làm cạn kiệt tệp hoán đổi.
Mehrdad

6
@Mehrdad nhưng nó cũng đắt hơn. Cho rằng bạn có X GB RAM, vì đó là số tiền bạn có thể đủ khả năng, điều đó tệ hơn nhiều so với X GB RAM và Y trao đổi, đối với một số giá trị hợp lý của Y (sẽ phụ thuộc vào mức độ sử dụng và kích thước của bạn HD của bạn).
Davidmh

9
"Không gian hoán đổi của bạn cho bạn một ít thời gian và đệm để giải quyết vấn đề" - Điều đó cũng có nghĩa là tôi phải ngồi lâu hơn trước một cỗ máy không phản hồi cho đến khi rò rỉ bộ nhớ "tự giải quyết".
Raphael

23

Có lẽ:

Tôi đã suy nghĩ rất nhiều về chủ đề này và thấy các ý kiến ​​hạ cánh ở cả hai phía của cuộc tranh luận nhiều lần hơn tôi có thể đếm được. Cách tiếp cận của tôi là phát triển một cách để tìm hiểu.

Bắt đầu với một phân vùng trao đổi hoạt động của những gì bạn nghĩ là một kích thước đủ.

Sau đó, mở một thiết bị đầu cuối trong một không gian làm việc và đưa ra lệnh free -hs 1sẽ báo cáo việc sử dụng mỗi giây một lần.

Tùy chọn chuyển sang không gian làm việc khác.

Làm mọi việc bạn có khả năng sẽ làm và sau đó một số điều nữa. Chạy tất cả các ứng dụng phổ biến của bạn cùng một lúc, duyệt qua nhiều tab và cố gắng cung cấp cho hệ thống một bài tập thực sự cho bạn, điều này có thể có nghĩa là mã hóa lại một nửa tá video trong khi chạy thao tác biên dịch và kiểm tra email của bạn hoặc bất cứ điều gì. Hãy đối mặt với sự thật, đây là tất cả về cách bạn sử dụng hệ thống của mình.

Khi bạn cảm thấy hệ thống của bạn chịu tải cao (hoặc cao đến mức bạn có thể nhận được và sau đó một số) nhìn vào thiết bị đầu cuối và kiểm tra kết quả. hoặc tốt hơn là chuyển hướng đầu ra đến một tệp bằng cách thêm >output.txtvào lệnh để bạn có thể kiểm tra toàn bộ hoạt động. Nếu Hoán đổi của bạn được sử dụng không bao giờ vượt quá Mem miễn phí, bạn không cần trao đổi. Nếu có, bạn làm. free.png

Tôi không cần trao đổi. Có lẽ bạn làm. Tại sao không tìm hiểu?

Đối với hoán đổi kích thước có liên quan, Quy tắc ngón tay cái thường được đánh giá quá cao vì đây là câu hỏi dựa trên việc sử dụng.


2
Vì vậy, bạn đang nói rằng trao đổi chỉ được sử dụng khi hệ thống của bạn hoàn toàn yêu cầu nó? Trong trường hợp nào, có bao giờ bị phạt khi bật hoán đổi - chỉ trong trường hợp? Các ý kiến ​​khác dường như cho thấy rằng ngay cả sự hiện diện của trao đổi có thể gây bất lợi cho hiệu suất?
MrWhite 17/03/2015

3
@ w3d Không, tôi không nói vậy. Như bạn có thể thấy từ đầu ra của tôi ở trên, trao đổi được sử dụng ngay cả khi không bắt buộc. điều này có thể được điều chỉnh phần nào với yếu tố swappiness. Tôi đang nói về sự cần thiết của việc có trao đổi hay không.
Anh Cả Geek

Bạn có thể kịch bản này để tăng trao đổi lên bất cứ lúc nào swapđi qua free?
JFA

@JFA Tôi chưa thấy điều này được thực hiện. Cá nhân tôi gặp khó khăn với khái niệm dự trữ một lượng không gian hoán đổi không xác định cho mục đích này. Về mặt lý thuyết tất cả mọi thứ đều có thể. Đó là giai đoạn thực hiện mà thú vị.
Anh Cả Geek

17

LƯU Ý: Điều này đã xảy ra với tôi, trong một tình huống cụ thể, bất thường. Nếu bạn đang khắc phục sự cố, điều này có thể hữu ích. Tôi không có ý ám chỉ rằng TẤT CẢ các máy PHẢI có trao đổi.

CÓ LẼ!

Trước đây tôi đã gặp vấn đề với một "thiết bị" do tôi tạo, chạy Linux - chạy trên thiết bị flash nhỏ gọn, tôi không muốn đeo CF của mình bằng cách sử dụng trao đổi và có đủ bộ nhớ cho ứng dụng.

Hầu hết các thiết bị này hoạt động tốt, nhưng trên một hộp đặc biệt bận rộn, tôi gặp phải một vấn đề:

BỘ NHỚ

Không có không gian hoán đổi, bộ nhớ dần trở nên phân mảnh hơn, đặc biệt là với các quá trình chạy dài (mặc dù tôi có rất nhiều bộ nhớ trống, tất cả chỉ ở các bit rất nhỏ). Tôi đặt một số không gian hoán đổi vào và bảo Linux không sử dụng nó trừ khi nó phải; Điều này đã giải quyết vấn đề hoàn toàn.

Ngoài mọi thứ khác, không gian hoán đổi cho phép bộ nhớ được di chuyển xung quanh, chống phân mảnh nó. Nếu bạn có bộ nhớ bị phân mảnh và bạn cần một đoạn lớn, các mảnh sẽ bị tráo đổi; khi chúng được hoán đổi trở lại, chúng được phân mảnh một cách hiệu quả.

Kiểm tra / Proc / Buddyinfo - của tôi trông như thế này ngay bây giờ:

Node 0, zone      DMA      9      5      3      4      2      3      2      2      3      3      1 
Node 0, zone    DMA32  33901   1149      0      0      0      0      0      0      0      0      1 
Node 0, zone   Normal   2414   1632    259     22      3      0      2      0      1      1      0 

Các con số đại diện cho các khối có kích thước khác nhau; mỗi kích thước bằng một nửa kích thước của khối tiếp theo, từ các khối 4mb ở bên trái, đến 4kb ở bên phải (nghĩa là 4mb, 2mb, 1mb, v.v.). Một máy mới khởi động nên có tất cả các khối ở bên trái, rất ít ở bên phải (= không bị phân mảnh). Cũng cần nhớ rằng cùng một lượng bộ nhớ (ví dụ 4mb) sẽ được biểu diễn dưới dạng các số khác nhau trên các cột - 1 khối trong cột ngoài cùng bên trái, 1024 trên cột ngoài cùng bên phải.

Bộ nhớ được phân bổ từ nhóm càng xa càng tốt; ví dụ: nếu chương trình của bạn muốn có 12kb bộ nhớ (trong một lần), nó sẽ lấy nó từ cột 16kb; phần còn lại sẽ xuất hiện trong cột 4kb. Nếu không có khối 16kb, thì nó sẽ lấy từ các khối 32kb, dẫn đến 16kb và 4kb còn lại, v.v.

Nếu không có khối bộ nhớ đủ lớn, VÀ BẠN CÓ KHÔNG GIAN SWAP, thì ví dụ: nếu bạn muốn 16kb bộ nhớ, nó sẽ tìm thấy khối 16kb được sử dụng ít nhất (có thể, ví dụ như chứa khối 4kb được sử dụng, khối 4kb có sẵn, và 2 khối 4kb được sử dụng nhiều hơn), chỉ di chuyển các phần USED để trao đổi và phân bổ bộ nhớ đã giải phóng cho ứng dụng mới.

Trong cái hộp bị rơi, tôi có hàng trăm ngàn khối 4kb và 8kb, và không nhiều thứ khác.

NHƯ VẬY TÔI CÓ THỂ NÓI (đi bởi các máy bị hỏng!) Hạt nhân sẽ chuyển từ bộ nhớ sang trao đổi và trao đổi sang bộ nhớ, nhưng sẽ không bao giờ chuyển từ bộ nhớ sang bộ nhớ.


3
Trường hợp của bạn trông giống như một trường hợp tốt để phân bổ / thực hiện các ôm. Nó sẽ tránh được các vấn đề phân mảnh (bởi vì một cái ôm có kích thước nhất định, một khi được phân bổ, từ đó sẽ được phân bổ lại và mãi mãi chỉ được phân bổ lại ở kích thước đó) .
mikeerv

2
Đó là lý do tốt nhất mà tôi từng đọc ủng hộ sử dụng phân vùng trao đổi. Tôi đã thử tìm kiếm nhanh và không tìm thấy tài liệu tham khảo nào về nó, tôi tự hỏi tại sao tính năng này không thường xuyên được ghi lại.
Đến 마 SE

1
Ứng dụng của bạn không thể sử dụng được (không minh bạch). Thông thường các ứng dụng cần hàng tấn bộ nhớ có thể sử dụng chúng; ví dụ: máy chủ cơ sở dữ liệu, java jvm. Chúng phải được kích hoạt rõ ràng và chúng trở thành một nhóm bộ nhớ riêng không thể được sử dụng cho các mục đích khác. Điều này có thể tốt hoặc có thể xấu, tùy thuộc vào hoàn cảnh của bạn. Ngoài ra, tìm hiểu về ôm trong suốt. Những nỗ lực này để di chuyển mọi thứ xung quanh để bạn đang sử dụng các gói (để cải thiện hiệu suất của chúng) mặc dù các ứng dụng của bạn không biết cách. Nếu bộ nhớ bị phân mảnh, mọi thứ có thể đi về phía nam vì trình quét hugepage có nhiều việc phải làm.
Dan Pritts

1
Tôi không nghi ngờ trải nghiệm của bạn với thiết bị flash của bạn, tôi chỉ không tin rằng trường hợp sử dụng duy nhất mà bạn trình bày có thể cần trao đổi và tôi vẫn không tin rằng phân mảnh bộ nhớ có liên quan đến việc trao đổi hay không. Nó đưa ra một câu hỏi thú vị có thể dễ dàng được kiểm tra và chứng minh hoặc từ chối.
Anh Cả Geek

1
Câu hỏi tiếp theo . Bạn có ý nghĩa gì bởi sự phân mảnh bộ nhớ MMU không quan tâm liệu các trang vật lý được sử dụng cho các trang liên tiếp trong một số không gian địa chỉ ảo có liên tiếp hay không. Các trang vật lý bị phân mảnh, nhưng điều này không thành vấn đề (miễn là chúng ta đang nói về bộ nhớ ứng dụng thông thường trên máy vật lý một cụm và không phải là các trang bộ nhớ được sử dụng bởi thiết bị ngoại vi hoặc bộ ảo hóa). Khi một chương trình yêu cầu 16kB, nó có bốn trang, có thể hoặc không thể ở gần nhau trong bộ nhớ vật lý.
Gilles

15

Phân vùng trao đổi có giá trị quan trọng ở trên và vượt ra ngoài chỉ đơn giản là hoạt động như một số RAM bổ sung khi bạn hết.

Đối với một người, Linux sử dụng càng nhiều bộ nhớ càng tốt để lưu trữ các tệp và hoạt động IO, nếu bạn có một số trao đổi, bạn có thể thấy rằng có nhiều bộ nhớ hơn vào bộ đệm IO và làm cho nó nhanh hơn (bằng cách giảm thiểu truy cập đĩa và giảm sự hao mòn của SSD) so với để giữ dữ liệu mà một số chương trình đã phân bổ nhưng chỉ sử dụng một lần sau mỗi 12 giờ có thể là trường hợp đối với một số trình nền.

Ngoài ra, Linux sử dụng chiến lược phân bổ bộ nhớ lạc quan, theo đó nó sẽ cho phép các trang được phân bổ trên danh nghĩa ngay cả khi không chắc chắn nó có bộ nhớ thực để lấp đầy chúng. Điều này hiệu quả hơn so với việc kiểm tra và lập bản đồ phù hợp mỗi lần phân bổ và thường không gây ra vấn đề gì. Tuy nhiên, các heuristic mà kernel sử dụng để xác định xem việc cho phép phân bổ có hợp lý hay không bao gồm mức độ hoán đổi có sẵn trên hệ thống, do đó việc phân bổ có thể nhanh hơn nếu hệ thống có nhiều trao đổi, ngay cả khi nó không được sử dụng nhiều.

Các yếu tố này kết hợp với nhau khiến tôi tin rằng tốt hơn là có một số trao đổi trên hầu hết mọi hệ thống bình thường, tuy nhiên đối với các kích thước ram lớn, tôi bỏ qua quy tắc ram * 2 và chỉ đơn giản giới hạn trao đổi của tôi ở mức 4-8GB (tùy thuộc vào kích thước của đĩa ).


9
Thậm chí 4GB là quá lớn cho một máy tính để bàn. Tôi muốn có kẻ giết OOM kích hoạt trước khi chờ đợi sự hoán đổi đó được lấp đầy nếu có sự cố xảy ra. (Nếu tôi gặp phải trường hợp tôi cần nhiều hơn, tôi có thể dd và mkswap một FILE trao đổi trước khi chạy bất kỳ công việc lớn nào cần nhiều bộ nhớ ảo hơn máy của tôi có RAM. Đó là, nếu thoát khỏi trình duyệt web của tôi không đủ giải phóng ...)
Peter Cordes

@PeterCordes Điều đó có thể phụ thuộc vào loại nhiệm vụ bạn đang làm, tôi hoàn toàn hiểu. Cá nhân, tôi thấy tôi được hưởng lợi từ mức trao đổi cao vì tôi thường biên dịch dài ở mức ưu tiên thấp trong khi sử dụng máy, những thứ này sau đó bị tráo đổi khi bộ nhớ bị bó chặt (thường là khi máy quá bận để thực hiện bất kỳ quá trình biên dịch nào dù sao). Tuy nhiên, tôi đồng ý rằng đó là một thứ dựa trên khối lượng công việc rất cá nhân, người ta phải luôn nghĩ về việc sử dụng của riêng họ trước khi quyết định.
Vality

1
Câu chuyện vui: chỉ hôm nay, trên máy tính xách tay của tôi có 4GB RAM, trao đổi 0,5G (SSD), firefox đã kích hoạt trình diệt OOM (đã chọn firefox). Tôi đã không có điều đó xảy ra trước đây. (Mặc dù tôi đã sử dụng máy tính xách tay của mình nhiều hơn bình thường). Không có gì khác đang chạy (chỉ là gnome-terminal trong xfce). Vì vậy, tôi nghĩ rằng tôi ổn với nó, vì firefox nên biết rõ hơn là buộc quá nhiều RAM. Tôi đã thấy ai đó nói rằng "các trình duyệt web tồn tại để kiểm tra căng thẳng hệ thống con bộ nhớ ảo", hoặc đại loại như thế. Firefox khá tệ trong việc giải phóng bộ nhớ cache cho các tab không được sử dụng trong nhiều ngày, v.v.
Peter Cordes

3
Một trường hợp mà Linux coi không gian hoán đổi có sẵn là khi một quá trình lớn cố gắng khởi chạy một đứa trẻ: các lệnh gọi hệ thống fork () + exec () bắt đầu bằng cách nhân đôi phân bổ của cha mẹ - hạt nhân không thể đảm bảo rằng đứa trẻ mới sẽ nhỏ hơn hơn cha mẹ Không gian hoán đổi thường không được sử dụng, nhưng trừ khi nó có sẵn thì fork () có thể thất bại. Một ví dụ điển hình trên máy khách là trình duyệt bắt đầu trình cắm hoặc trên máy chủ khi vùng chứa ứng dụng lớn gọi chương trình trợ giúp. 1/2 hoặc 1GiB của trao đổi thường là đủ để giải quyết vấn đề. Google "java exec không thể phân bổ bộ nhớ"
James

13

Bạn không bao giờ nên trao đổi lớn hơn kích thước tối đa mà bạn có thể chịu đựng khi chờ hạt nhân hoán đổi vào / ra; mặt khác, bạn chỉ đang tạo một chế độ thất bại mới cho hệ thống của mình (trở nên không thể bị sa lầy trong quá trình tráo đổi). Lưu ý rằng, mặc dù các ổ đĩa hiện đại có thể chuyển theo thứ tự GB / giây, Linux thường chỉ có thể di chuyển trao đổi với tốc độ cao hơn hàng trăm kB, hoặc tối đa là MB, mỗi giây. Vì vậy, trao đổi lớn có thể khiến hệ thống của bạn không thể sử dụng trong vài phút, vài giờ hoặc thậm chí vài ngày.

Nếu bạn có đủ bộ nhớ vật lý cho những gì bạn đang làm, kích thước lý tưởng để trao đổi là khớp với số lượng quy trình "dữ liệu rác" đang giữ xung quanh nhưng không bao giờ sử dụng. Đây có lẽ là trong phạm vi của một vài đến vài trăm megabyte. Chiến lược này cho phép tất cả bộ nhớ vật lý của bạn được sử dụng để lưu trữ thông tin hữu ích thay vì lưu trữ vĩnh viễn cho dữ liệu có thể sẽ không bao giờ được sử dụng lại.

Nếu bạn không có đủ bộ nhớ vật lý, bạn cần đánh giá xem bạn có thể chịu đựng được sự chậm chạp nghiêm trọng do tráo đổi nặng hay không. Nếu vậy, có tới 1-2 GB trao đổi có thể có ý nghĩa và có thể lên tới 4 GB nếu bạn có ổ đĩa cực nhanh. Nhưng nhiều hơn thế sẽ làm cho các chế độ lỗi hệ thống của bạn trở nên tồi tệ hơn và bạn nên xem xét việc chỉ mua thêm RAM thay thế.


2
Tôi nghĩ rằng đây là câu trả lời tốt nhất. Nếu bạn có quá nhiều không gian hoán đổi, nó có thể khiến máy hoàn toàn không phản hồi do tất cả các lần hoán đổi. Nó có nghĩa là bạn không thể giết quá trình vi phạm. Nếu bạn giảm không gian hoán đổi, kẻ giết người OOM sẽ tự động thực hiện công việc cho bạn. Các đối số trong các câu trả lời khác về bộ đệm bộ đệm tệp là hoàn toàn không thuyết phục. Bạn nên trao đổi để kernel có thể di chuyển bộ đệm tập tin để hoán đổi ... đó là trên đĩa? Xin vui lòng.
Timmmm

Đối số duy nhất chống lại không gian hoán đổi tôi có thể tìm thấy là: "một số chương trình bị rò rỉ bộ nhớ". Và? Nếu kẻ giết người OOM giết chết điều quan trọng mà bạn không cứu, bạn thực sự đã mất việc. Điều đó có nghĩa là đối số này trở nên hoàn toàn không liên quan, tôi chỉ có thể buộc tắt máy để có hiệu ứng chính xác trong khi vẫn có không gian trao đổi cao cho các tác vụ ưu tiên thấp sử dụng nhiều bộ nhớ và thường bị tráo đổi. Nếu máy của bạn bị kẹt trong trạng thái như vậy thì đó là lỗi của chính bạn. Lần duy nhất nó xảy ra với tôi là khi chính tôi đã viết một chương trình để lấp đầy toàn bộ bộ nhớ làm việc.
Sahsahae

11

Chỉ khi bạn muốn có thể ngủ đông để trao đổi (Tính năng này còn được gọi là "tạm dừng vào đĩa" và liên quan đến việc lưu toàn bộ nội dung của RAM và tắt nguồn). Thông thường, điều này chỉ được sử dụng trên máy tính xách tay và các thiết bị di động khác, vì vậy nó phụ thuộc.


6

Không có câu trả lời chung và rõ ràng vì nó phụ thuộc vào nhiệm vụ bạn sắp thực hiện. Nếu bạn sắp chạy máy chủ DB, HTTP, Virtualization hoặc Cache, bạn không bao giờ nên kích hoạt bất kỳ loại trao đổi nào, bất kể số lượng ram bạn có. Nếu bạn có máy tính để bàn hoặc máy chủ tác vụ hỗn hợp và bạn có 16+ Gb RAM nhanh - hãy xem tại đây: zRam


zRam là một lựa chọn tuyệt vời. Tôi đã sử dụng nó cùng với các hệ thống ổ đĩa flash nhỏ để có hiệu quả tốt.
Anh Cả Geek

1
@ElderGeek Tôi cũng đã sử dụng nó trong môi trường không có đĩa, ví dụ như khởi động mạng. Công việc tuyệt vời, nhưng có một số cảnh báo: đầu tiên, bạn không chỉ cần thêm ram, bạn cần một cái NHANH CHÓNG. Các mô-đun ram chậm và rẻ, có thể sẽ khiến bạn gặp trường hợp cổ điển thông thường, có thể gây ra sự cố. Bus Front-Side CPU cũng phải được tính đến: ngay cả trong trường hợp khi bạn có thể có tần số CPU chậm hơn nhưng tần số FSB nhanh hơn sẽ cải thiện đáng kể hiệu suất của bạn. Mối quan tâm thứ hai là một số phân vùng trao đổi zRam. Hãy thử các số từ 1 đến số lõi CPU của bạn. Không sử dụng trên các hệ thống đơn lõi!
Alexey Vesnin

Tốt điểm hợp lệ tất cả. Là một người đam mê hiệu suất và luôn thiết kế và xây dựng các hệ thống của riêng mình, tôi không phải lo lắng về những mối quan tâm như vậy
Anh Cả Geek

@ElderGeek tôi cũng vậy :) rất vui được gặp bạn! Ngoài ra tôi đã nhận thấy một điều kỳ lạ trong hành vi zRam. Nó xuất hiện và biến mất trong các phiên bản và cấu hình kernel khác nhau, nhưng có khả năng tái tạo cao ở kernel HZ 100 và 1000. zRam hoạt động tốt với 1,2,4 - nhưng không có nhiều phân vùng hơn. Ngay cả trên 8 và 16 lõi vật lý trên phần cứng hàng đầu trong các tác vụ gần như không hoạt động. Vì vậy, hãy ghi nhớ nó chơi với các tinh chỉnh! Chúc mừng từ Nga!
Alexey Vesnin

Tôi không đồng ý với "nếu bạn chạy db, ... bạn không bao giờ nên kích hoạt bất kỳ loại trao đổi nào, bất kể bạn có ram nào". Trao đổi thường được ưa thích hơn để giết OOM giết chết các quá trình ngẫu nhiên. Có, bạn nên có đủ bộ nhớ cho các ứng dụng bạn đang chạy và có, sử dụng số lượng lớn trao đổi có thể làm chậm hệ thống của bạn. Tôi ghen tị với bạn sống trong một thế giới lý tưởng.
AMADANON Inc.

5

Không có cách nào để biết bạn có cần dung lượng trao đổi hay không nếu tham số duy nhất chúng ta biết là dung lượng RAM được cài đặt.

Trong mọi trường hợp, có một quan niệm sai lầm phổ biến rằng có một không gian hoán đổi ảnh hưởng tiêu cực đến hiệu suất hệ thống. Điều này là không đúng. Miễn là bạn có đủ RAM, có một vùng trao đổi bất kể kích thước của nó không ảnh hưởng đến hiệu suất. Điều gì ảnh hưởng đến hiệu suất là thiếu RAM và sử dụng hiệu quả không gian trao đổi.

  • trường hợp 1: Nếu bạn không có dung lượng trao đổi và hết RAM, nhân Linux sẽ chọn một hoặc nhiều quy trình mà nó cho là ứng cử viên tốt và tiêu diệt chúng.

  • trường hợp 2: Nếu bạn có không gian trao đổi và hết RAM, kernel sẽ chọn các trang bộ nhớ ít sử dụng hơn và đặt chúng vào vùng trao đổi để giải phóng RAM. Điều này sẽ làm chậm hệ thống nhưng các ứng dụng của bạn sẽ không bị ảnh hưởng.

Tôi luôn thích trường hợp 2, vì tôi cảm thấy mất các bộ phận hoặc tất cả công việc của mình vì hạt nhân nghĩ rằng các ứng dụng của tôi đáng để giết. Hơn nữa, với kích thước hiện tại của một đĩa trung bình nằm trong phạm vi TB, việc đặt trước một vài phần trăm cho trao đổi không phải là một vấn đề.


6
Tôi thích trường hợp 1, vì lần duy nhất tôi hết RAM là khi tôi có chương trình chạy trốn. Kẻ giết người OOM thường khá giỏi trong việc xác định kẻ chạy trốn, và tôi thực sự muốn giết nó ngay lập tức hơn sau vài giờ tráo đổi nặng nề.
Đánh dấu

1
@Mark, Đó là một điểm hợp lệ. Tôi vẫn cố gắng tránh ủy thác cho một thuật toán chụp trước, nghĩ cách tiếp cận sau.
jlliagre

2
trường hợp 2 chỉ hợp lệ nếu bạn có điều gì đó cảnh báo bạn về tình huống này và có đủ thời gian để "làm gì đó" theo cách thủ công trước khi hệ thống hết trao đổi. Nhưng thay vào đó, bạn có thể theo dõi tỷ lệ phần trăm RAM đã sử dụng để có kết quả tương tự.
Toto 17/03/2015

1
Dựa trên lý luận của bạn, theo dõi việc sử dụng RAM là đủ .
Totor 17/03/2015

1
@Totor Tôi không muốn bị đánh thức giữa đêm bởi ứng dụng giám sát máy tính xách tay của mình vì tôi đã khởi chạy một lô xử lý một loạt các tệp và làm cạn kiệt RAM. Tôi thích công việc phải hoàn thành, ngay cả khi phải mất thêm vài giờ vì RAM quá thấp so với việc toàn bộ nội dung bị gián đoạn.
jlliagre 17/03/2015

3

Quy tắc của tôi để áp dụng trao đổi trong bất kỳ hệ thống nào là có câu trả lời cho điều này:

  • Mục đích của hệ thống là gì?
  • Các ứng dụng sẽ tiêu thụ bao nhiêu bộ nhớ?
  • Đây có phải là một hệ thống quan trọng?
  • Tôi có cần một không gian đĩa tạm thời để chuyển tập tin không?
  • Dự đoán tốc độ tăng trưởng của các ứng dụng?

Khi tôi nhận được câu trả lời cho thông tin này, tôi kích thước hệ thống phù hợp. Trong những năm trước, tôi đã thực hiện quy tắc ngón tay cái từ Sun microsystem. Tối đa 16 GB RAM gấp đôi cho SWAP, từ 16 GB trở lên cùng mức. Nhưng mặt khác, nếu bạn có đủ RAM dự phòng và các ứng dụng của bạn không sử dụng SWAP một cách ép buộc, bạn có thể bỏ qua trao đổi. Nếu bạn cần chỉ là vấn đề đặt một đĩa mới hoặc lun và cấu hình SWAP. quy tắc của Sun được áp dụng chủ yếu là vì trên Solaris trong trường hợp "hoảng loạn hạt nhân", bộ nhớ sẽ bị hủy hoàn toàn để trao đổi để phân tích thêm.


1

Hoán đổi sẽ là cần thiết nếu bạn không có đủ RAM để chạy tất cả các chương trình của mình.

Bạn nói rằng bạn không làm bất cứ điều gì đòi hỏi nhiều RAM. Vì vậy, bạn có đủ RAM.

Sau đó, bạn không cần trao đổi không gian.

Nhưng , nếu bạn nghĩ rằng tại một thời điểm nào đó, bất chấp những gì bạn ngụ ý trong câu hỏi của mình, các chương trình của bạn sẽ sử dụng, nói thêm rằng một nửa (hoặc hai phần ba) RAM của bạn (quy tắc ngón tay cái), vui lòng đọc phần "trao đổi chuyên nghiệp" khác "Câu trả lời. Bạn sẽ không cần trao đổi, nhưng nó có thể nâng cao hiệu suất hệ thống của bạn.


Sử dụng trao đổi có thể giúp tránh một vụ tai nạn thảm khốc nhưng sẽ không bao giờ tăng cường khả năng tạo hình, bất kỳ một chiếc dù nào cũng sẽ tăng tốc cho một chiếc ferrari. ;-)
Anh Cả Geek

@ElderGeek Nó có thể là một trường hợp cạnh, nhưng trao đổi có thể giúp đỡ. Đôi khi bạn có đủ RAM cho tất cả mọi thứ, nhưng các chương trình nhàn rỗi có thể được hoán đổi để sử dụng RAM tốt hơn (ví dụ: một số bộ đệm đĩa hữu ích). Tôi đã từng thấy điều này rất nhiều vào cuối những năm 90. Thỉnh thoảng tôi thấy điều này khi tôi có <1GB RAM miễn phí (bao gồm cả bộ đệm đĩa), mà không thực sự cần dung lượng trao đổi.
jbo5112

@ jbo5112 Tôi sẽ không loại trừ khả năng hoàn toàn nếu bạn nói như vậy, kinh nghiệm của tôi đã cho thấy cho đến nay. Điều này không quá ngạc nhiên vì đây là trường hợp hệ thống được sử dụng nhiều hơn một quy tắc cứng và nhanh (mà mọi người dường như tìm kiếm).
Anh Cả Geek

@ElderGeek Tôi chỉ có thể nhìn thấy nó vì các đĩa của tôi đã có tuổi đời và cần bộ nhớ cache tuyệt vọng. Thông thường, có một vấn đề khác về sự thay đổi được đặt quá cao đối với hầu hết mọi trường hợp, điều này khiến cho không gian hoán đổi được sử dụng quá mạnh mẽ. Giảm giá trị từ 60 xuống 10 dường như là một khuyến nghị phổ biến. Bạn thậm chí có thể xuống thấp hơn, nhưng đến một lúc nào đó, bạn sẽ bỏ quá nhiều bộ đệm đĩa, gây ra nhiều I / O trong khi hoán đổi.
jbo5112

@ jbo5112 Điểm tốt. Đó luôn là một hành động cân bằng giữa các hệ thống con khác nhau. Tôi nhớ lại ngày trước điều chỉnh các bộ đệm như đĩa cứng xen kẽ và tốc độ làm mới RAM để giảm hiệu suất tối đa trong số 80286 hệ thống với các ổ Seagate ST225 và ST238. Chúng tôi luôn phải tiếp cận mọi thứ trong từng trường hợp cụ thể để đạt được hiệu suất và độ tin cậy tối đa. Xin chúc mừng BTW! Lần cuối cùng tôi có thể vắt kiệt một thập kỷ trong một ổ đĩa, đó là một Microp có tổng cộng 600 MB.
Anh Cả Geek

0

Câu trả lời ngắn gọn:

Có, bạn luôn cần trao đổi, trong trường hợp không chắc là ứng dụng thậm chí không bận tâm đến việc ánh xạ bộ nhớ mà ánh xạ bộ nhớ ảo trực tiếp.

Đặt tệp hoán đổi của bạn thành:

  • RAM+round(sqrt(RAM)) nếu bạn sử dụng ngủ đông
  • round(sqrt(RAM)) nếu bạn không

Đặt của bạn swappinessthành 10 trên máy tính để bàn, nhưng không phải trên máy chủ!

Câu trả lời dài:

Trong quá khứ:

Quy tắc sử dụng trong 25 năm qua là tối thiểu 1xRAM và tối đa 2xRAM, vì vậy đó là những gì bạn sẽ thấy được trích dẫn mọi lúc.

Mức tối thiểu đó đã được đặt lại vào thời kỳ đồ đá khi tôi còn là một thiếu niên và khủng long vẫn lang thang trên Trái đất và vì RAM quá đắt và bạn hoàn toàn cần không gian hoán đổi đó để có thể hoàn thành mọi thứ.

Mức tối đa được đặt vào thời điểm đó vì lợi nhuận giảm dần: quá chậm để phải trao đổi quá nhiều bộ nhớ vì truy cập ổ cứng chậm hơn 1000 lần so với RAM: tốt trong trường hợp khẩn cấp, nhưng không thực sự tốt cho sử dụng hàng ngày! Vào thời điểm đó, khi bạn hết dung lượng trao đổi, đó là lúc để thêm RAM! (điều này vẫn đúng cho đến ngày hôm nay).

Hiện tại:

  1. Nếu bạn không sử dụng ngủ đông và bộ nhớ của bạn là vượt quá 1GByte quy định mới của ngón tay cái là round(sqrt(RAM))nơi RAMrõ ràng là dung lượng RAM của bạn trong GB.

  2. Nếu bạn sử dụng chế độ ngủ đông, bạn cần có thể hoán đổi toàn bộ dung lượng RAM + đã hoán đổi RAM sang đĩa, do đó công thức trở thành: RAM+round(sqrt(RAM))

  3. Quy tắc giảm lợi nhuận vẫn giữ tối đa cho đến ngày hôm nay, nhưng trừ khi bạn kiểm tra mức sử dụng thực tế của mình, việc sử dụng 2xRAM chỉ là một sự lãng phí không gian đĩa , vì vậy đừng sử dụng tối đa trừ khi bạn hết dung lượng trao đổi bằng các phương pháp khác .

Tất cả những thứ này cùng nhau cung cấp cho bạn bảng sau: (3 cột cuối biểu thị không gian hoán đổi)

    RAM   No hibernation    With Hibernation    Maximum
    1GB              1GB                 2GB        2GB
    2GB              1GB                 3GB        4GB
    3GB              2GB                 5GB        6GB
    4GB              2GB                 6GB        8GB
    5GB              2GB                 7GB       10GB
    6GB              2GB                 8GB       12GB
    8GB              3GB                11GB       16GB
   12GB              3GB                15GB       24GB
   16GB              4GB                20GB       32GB
   24GB              5GB                29GB       48GB
   32GB              6GB                38GB       64GB
   64GB              8GB                72GB      128GB
  128GB             11GB               139GB      256GB
  256GB             16GB               272GB      512GB
  512GB             23GB               535GB        1TB
    1TB             32GB              1056GB        2TB

Trên đây chỉ là một quy tắc của ngón tay cái; Đó không phải là định luật hấp dẫn!
Bạn có thể phá vỡ quy tắc này (không giống như luật hấp dẫn) nếu trường hợp sử dụng cụ thể của bạn khác!

Mẹo chuyên nghiệp: Luôn phân bổ SWAP khi bắt đầu ổ cứng vì các đầu cần di chuyển ít hơn vào bên trong đĩa.
Có: Trên SSD, việc bạn định vị vùng trao đổi thực sự không còn quan trọng nữa khi chúng sử dụng đường hầm lượng tử thay vì đầu di chuyển và SSD hiện đại sử dụng tất cả các ô nhớ của chúng (ngay cả không gian chưa phân bổ) để ngăn chặn sự suy giảm lượng tử.

Cách kiểm tra xem việc sử dụng trao đổi của bạn có khác với quy tắc "chung" hay không:

Chỉ cần thực hiện:

for szFile in /proc/*/status ; do 
  awk '/VmSwap|Name/{printf $2 "\t" $3}END{ print "" }' $szFile 
done | sort --key 2 --numeric --reverse | more

sẽ cung cấp cho bạn một danh sách tất cả các chương trình đang được hoán đổi (với chương trình sử dụng không gian hoán đổi nhiều nhất ở trên cùng)

Nếu bạn đang sử dụng nhiều hơn thì một vài KB: thay đổi kích thước thành nhiều hơn mức tối thiểu, nếu không, đừng bận tâm ...

Nếu bạn đang ở trên máy chủ hãy ngừng đọc ngay bây giờ: bạn đã sẵn sàng!


Nếu bạn đang sử dụng máy khách để bàn / máy tính xách tay (không phải máy chủ), bạn muốn GUI của mình phản hồi nhanh nhất có thể và chỉ trao đổi khi bạn thực sự cần . Ubuntu đã được tối ưu hóa để trao đổi sớm khi sử dụng máy chủ, nhưng trên máy khách của bạn, bạn muốn chỉnh sửa bức ảnh thô 250 pixel khổng lồ đó gimpđể nhanh chóng , vì vậy, đặt swappinessthành 10 sẽ giữ cho hạt nhân không bị tráo đổi quá sớm, trong khi đảm bảo nó không bị thay đổi trao đổi quá muộn:

sudo nano /etc/sysctl.conf

và thêm:

# change "swappiness" from default 60 to 10 
# (theoretically only swap when RAM usage reaches around 80 or 90 percent)
vm.swappiness = 10

đến cuối tệp, lưu tệp ( Ctrl+ XY+ Entertrong nano) và thực hiện a:

sysctl --system

để tải lại tham số hoặc chỉ vì mục đích cũ, hãy sử dụng phương pháp Window $ và khởi động lại ... :-)


-1

Thỏa hiệp trả lời: nó phụ thuộc vào ý nghĩa của "nên".

Bạn có cần một phân vùng trao đổi theo nghĩa là một cái gì đó xấu sẽ xảy ra nếu bạn không có một phân vùng theo các điều kiện hoạt động mà bạn mô tả? Không.

Sẽ là khôn ngoan khi có một phân vùng trao đổi chỉ trong trường hợp bạn vô tình sinh ra một đội quân hoài niệm để bạn có cơ hội giết chúng trước khi kẻ giết người OOM tấn công? Đúng.

Nếu RAM vật lý của bạn "vượt quá" đáng kể so với mức sử dụng bộ nhớ dữ liệu của tất cả các chương trình bạn sẽ chạy đồng thời mọi lúc, thì sẽ không có lợi ích hiệu năng nào khi có trao đổi. Nếu vượt quá, nhưng không "nhiều", có thể có lợi ích về hiệu năng nếu HĐH có thể trao đổi bộ nhớ hiếm khi được sử dụng để giữ dữ liệu lưu trữ thường xuyên truy cập thường xuyên hơn trong bộ nhớ.

Tóm lại, thật tuyệt khi bạn có 16GB RAM. Nhưng, nếu bạn cũng có đĩa 1TB, bạn có thể dự trữ 16 GB của nó để trao đổi không? Nó chỉ có 1,5% của đĩa.

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.