Linux: không tạo phân vùng trao đổi?


9

Tôi đã tự hỏi vì tôi nghe nói rằng trao đổi được sử dụng khi bạn hết RAM hoặc trao đổi quá nhiều là xấu, vì tôi có rất nhiều RAM (8GB) ....

Nếu tôi không tạo phân vùng trao đổi thì sao?

Ngoài ra, tôi có cần nó để ngủ đông hay không?


bạn phải tạo trao đổi, tôi đã từng cố gắng không tạo trao đổi, không thể tiến hành cài đặt
Lynob

Điều gì xảy ra khi bạn cài đặt bên trong windows? Tôi đã làm điều đó và nó có vẻ hơi chậm đối với giàn khoan của tôi so với các cửa sổ, nhưng tôi đã không tạo phân vùng
Mihai Bratulescu

Tôi chưa bao giờ thử cài đặt Linux bên trong các cửa sổ, tôi luôn tạo một phân vùng riêng
Lynob

Câu trả lời:


13

Các hệ điều hành hiện đại đòi hỏi một không gian trao đổi để sử dụng RAM hiệu quả. Ngay cả khi hệ thống của bạn có nhiều RAM, việc lãng phí RAM sẽ dẫn đến bộ đệm bộ đệm nhỏ hơn, điều đó có nghĩa là I / O của đĩa tăng lên. Vì vậy, cho dù bạn có bao nhiêu RAM, bạn vẫn muốn hệ thống sử dụng nó hiệu quả. Sử dụng nó một cách hiệu quả có nghĩa là lấy những thứ ra khỏi RAM mà cực kỳ khó có thể truy cập được.

Khi bạn khởi động một hệ thống điển hình, một số lượng lớn các dịch vụ sẽ khởi động. Các chương trình chạy mã khởi tạo và sửa đổi ánh xạ bộ nhớ riêng trong quy trình. Một số các dịch vụ này sẽ không bao giờ chạy lại. Nhiều người trong số họ sẽ không chạy trong nhiều giờ. Không có trao đổi, HĐH không có lựa chọn nào khác ngoài việc giữ ánh xạ bộ nhớ riêng được sửa đổi liên quan đến các dịch vụ đó trong RAM mãi mãi. Đó là RAM không bao giờ có thể được sử dụng làm bộ đệm đĩa.

Vì vậy, bạn muốn trao đổi cho dù bạn cần hay không.


8
"Vì vậy, bạn muốn trao đổi cho dù bạn cần hay không." - Có vẻ như bạn đã đưa ra trường hợp anh ta cần trao đổi cho dù anh ta muốn hay không.
mùn cưa

2
Giả sử tôi có nhiều RAM và có thể lãng phí 2GB. Tại sao tôi cần một tập tin trao đổi?
Tarik

1
Trong trường hợp đó, bạn không cần một tập tin trao đổi. Nhưng như tôi đã tranh luận, bạn muốn một cái. Bởi vì có hay không bạn có thể đủ khả năng để lãng phí RAM, bạn không nên muốn sử dụng RAM không hiệu quả khi bạn không cần phải.
David Schwartz

Tôi đang chạy một máy chủ CLI không có trao đổi và nó chạy hoàn hảo. Chạy máy chủ teamspeak3, apache2, node.js Tôi không bao giờ thấy hơn 500M ram được sử dụng. Vì vậy, nó không làm phiền tôi khi sử dụng RAM "không hiệu quả" TUYÊN BỐ: Chức năng máy chủ web của máy chủ này chỉ dành cho phát triển, vì vậy tải luôn luôn ở mức thấp. Và nếu tôi bị rò rỉ bộ nhớ trong quá trình phát triển, tôi thà giết kẻ giết OOM ngay khi tôi hết ram hơn là đẩy tất cả những thứ vô nghĩa đó vào đĩa.
bản địa

12

Tôi đã chạy một hệ thống máy tính để bàn mà không có bất kỳ trao đổi nào trong một vài năm, và nó sẽ rất tuyệt! Có một vài hành vi khác nhau; một số trong số này là lợi thế và một số có thể gây hại cho bạn. Tất cả phụ thuộc vào những gì bạn đang làm.

Một điểm khác biệt chính là cách hệ thống hoạt động khi hết bộ nhớ:

Nếu không có phân vùng trao đổi, kẻ giết OOM sẽ chạy ngay lập tức. Nếu bạn có một bộ nhớ bị rò rỉ chương trình, đó có khả năng là bộ nhớ bị giết. Điều đó xảy ra và bạn phục hồi hệ thống gần như ngay lập tức.

Nếu có một phân vùng swap, hạt nhân đẩy các nội dung của bộ nhớ vào trao đổi. Quá trình Errant có thể tiếp tục phân bổ bộ nhớ. Điều này tiếp tục xảy ra cho đến khi hết trao đổi, có thể là mười phút đến một giờ nếu bạn có một phân vùng trao đổi lớn. Trong khi thực hiện điều này, hệ thống của bạn sẽ chậm lại. Nó trở nên không thể mở một thiết bị đầu cuối và giết quá trình. Tôi thường rút dây nguồn khi điều này xảy ra.

Vì vậy, vì tôi sẽ mất dữ liệu dù sao khi OOM hệ thống, tôi thích tùy chọn trước đây ít nhất có cơ hội phục hồi (cao).


Đây cũng là kinh nghiệm của tôi Linux không xử lý quá trình trao đổi, đủ tốt để cho phép bạn tự hủy chương trình vi phạm. Điều đáng tin cậy hơn là chỉ cần có kẻ giết người OOM tự làm điều đó. Tất nhiên đây là một thiết kế khủng khiếp - một cách tốt hơn là đóng băng quá trình vi phạm thay vì giết nó và cung cấp một GUI đẹp để cho phép bạn giải phóng hoặc tiêu diệt nó, nhưng ... Linux.
Timmmm

3
Cuối cùng một phản ứng có ý nghĩa và phù hợp với kinh nghiệm của riêng tôi. Tôi không thể hiểu được lý do đằng sau "bạn phải có một phân vùng trao đổi". Ngoại trừ nếu chúng ta muốn ngủ đông hệ thống.
Tarik

5

Hoán đổi là cần thiết để ngủ đông, nếu không bạn có thể nhận được mà không cần nó tốt.


Do đó, kích thước của vùng trao đổi phải lớn hơn một chút so với kích thước của bộ nhớ được cài đặt trong hệ thống của bạn.
mdpc

@mdpc, không nhất thiết; nó chỉ cần đủ lớn để chứa ram đã sử dụng mà không thể loại bỏ (tức là dữ liệu được hỗ trợ bởi một tệp trên đĩa).
psusi

và làm thế nào bạn sẽ ước tính rằng trên sáng tạo? Bạn sẽ không lên kế hoạch đúng đắn và chuẩn bị cho trường hợp xấu hơn vì phân vùng nói chung là một nỗi đau để thay đổi sau khi nó được thiết lập?
mdpc

2

Đó là một quan niệm sai lầm phổ biến khi nghĩ rằng có một khu vực trao đổi ảnh hưởng tiêu cực đến hiệu suất. Điều gì ảnh hưởng nghiêm trọng đến hiệu suất là không có đủ RAM. Vùng hoán đổi trên mỗi se không có ảnh hưởng tiêu cực đến hiệu suất trừ khi bạn không quan tâm đến độ tin cậy. Nó có thể có tác động tích cực đến hiệu suất ngay cả khi bạn nghĩ rằng bạn có đủ RAM (và không có báo cáo về sự thiếu hụt RAM).

Về cơ bản có ba trường hợp để xem xét:

  • 1: Có đủ RAM cho nhu cầu kernel bên trong, cho tất cả các ứng dụng của bạn có bộ trang hoạt động trên RAM và vẫn có RAM "miễn phí" cho bộ đệm bộ đệm để lưu trữ hầu hết dữ liệu nóng của hệ thống tệp.

  • 2: giống như trên, ngoại trừ bạn không có đủ RAM miễn phí để bộ đệm bộ đệm hoạt động hoàn toàn.

  • 3: Không có đủ RAM để lưu trữ các trang ứng dụng của bạn.

Trong trường hợp 1, là tiêu chuẩn cho một máy sản xuất, có vùng trao đổi hoặc không thay đổi bất cứ điều gì (ít nhất là trên các HĐH dựa trên Linux và các HĐH khác có bộ nhớ quá mức).

Trong trường hợp 2, có một vùng trao đổi có thể cải thiện hiệu suất tổng thể bằng cách cho phép hệ thống thoát ra khỏi các trang được sử dụng rất ít và sau đó cho phép bộ đệm bộ đệm phát huy tốt hơn vai trò của nó.

Trong trường hợp 3, có một vùng trao đổi cho phép ứng dụng tiếp tục chạy với chi phí suy giảm hiệu suất do phân trang. Mặt khác, thiếu một khu vực trao đổi (hoặc một khu vực đủ lớn) sẽ khiến các ứng dụng bị sập một cách ngẫu nhiên. Ngoài ra, tùy thuộc vào cài đặt hệ điều hành, kẻ giết người OOM cũng có thể quyết định tiêu diệt các ứng dụng ngốn nhiều bộ nhớ nhất nếu có nhu cầu RAM mạnh mà không cho chúng cơ hội lưu dữ liệu quan trọng (của bạn).

Trường hợp sau này là một trong đó bạn phải lựa chọn. Chắc chắn có một số trường hợp sử dụng trong đó có các quy trình bị giết là tùy chọn ưa thích như các hệ thống trong đó thời gian phản hồi là rất quan trọng và việc mất giao dịch / quy trình không phải là vấn đề lớn.

Tuy nhiên, tôi có xu hướng tin vào hầu hết các tình huống, tốt hơn là có thể để người dùng / quản trị viên nhận thấy sự thiếu hụt RAM và hành động phù hợp mà không có nguy cơ mất dữ liệu.


1

Nếu bạn không muốn sử dụng phân vùng trao đổi, bạn có thể sử dụng tệp hoán đổi: hình ảnh hệ thống tệp được lưu trữ trên một tệp thông thường và được sử dụng làm không gian trao đổi của bạn.

Các bài viết sau đây giải thích làm thế nào để làm điều đó một cách chi tiết:


sự khác biệt giữa một tập tin trao đổi và phân vùng trao đổi là gì? và điều gì sẽ xảy ra nếu tôi không có ai?
Mihai Bratulescu

tốc độ truy cập ....
mdpc

2
Nếu được sử dụng CÓ thì nó khá quan trọng. Nếu bạn sử dụng một phân vùng, đó là địa chỉ đơn giản, nếu bạn sử dụng một tệp, bạn phải thực hiện tất cả các chi phí hệ thống tệp để sử dụng tệp hoán đổi và bạn KHÔNG THỂ đảm bảo vị trí của các phân đoạn trên đĩa.
mdpc

2
@mdpc Chi phí hệ thống tệp không đáng kể bắt đầu từ kernel 2.6. Siêu dữ liệu, bộ đệm và mã hệ thống tệp được bỏ qua. Khối đĩa thô được truy cập trực tiếp.
jlliagre

1
@mdpc Một tệp hoán đổi không nên bị phân mảnh đáng kể nếu không, trừ khi bạn tạo nó gần đây. Hơn nữa, truy cập hoán đổi hiếm khi tuần tự mà chủ yếu là ngẫu nhiên do cách phân trang nhu cầu hoạt động nên sự phân mảnh không phải là vấn đề.
jlliagre

0

Hơi nguy hiểm một chút nhưng bạn CÓ THỂ chạy mà không có không gian hoán đổi. Nhưng nếu cuối cùng bạn vượt quá dung lượng bộ nhớ, hệ thống của bạn sẽ gần như bị sập ngay lập tức mà không cần thông báo trước.

Những gì trao đổi cung cấp cho bạn về cơ bản là một phần mở rộng nhưng chậm hơn nhiều cho bộ nhớ của bạn. Nếu bạn vượt quá bạn sẽ bắt đầu hoán đổi, nó thực sự sẽ lấy đi sự sống của hệ thống của bạn .... TUY NHIÊN bằng cách giết chết các quy trình sai lầm mà bạn vẫn có thể cứu hệ thống của mình.

Một số chương trình nhấn mạnh vào việc phân bổ (nhưng không sử dụng) không gian hoán đổi, một số trong số này là các chương trình cơ sở dữ liệu nếu tôi nhớ lại. Một lần nữa, bằng cách không có không gian hoán đổi, bạn có thể giới hạn các chương trình có thể chạy.

Cuối cùng, xem SWAP là CHEAP trong thực tế là bạn không phải sao lưu khu vực. (Tôi hy vọng rằng bạn là một trong những sysadins xuất sắc, những người sao lưu hệ thống của họ).

Vì vậy, tạo ra nó.

Quy tắc ngón tay cái của tôi từng là kích thước bộ nhớ 2 * ..... nhưng bây giờ tôi vẫn ổn trong nhiều trường hợp với kích thước bộ nhớ 1 * nhưng thường sử dụng 1,5 * (kích thước bộ nhớ). Bạn không cần phải tạo ra số tiền lớn này, nhưng tôi sẽ ... đặc biệt nếu có bất kỳ loại công việc sản xuất nào bạn đang làm.

Ồ vâng, và để ngủ đông, trao đổi là BẮT BUỘC để giữ toàn bộ hình ảnh của bộ nhớ. Và do đó, kích thước nếu bạn đang xem xét h8ibernation phải là AT LEAST (kích thước bộ nhớ 1 *) + 100MB .. 100 MB là dành cho chi phí có thể cần thiết trong quá trình.


vì vậy ... đối với một số chương trình bạn cần một khu vực trao đổi để chúng chạy? Tôi không lo lắng về việc hết ram với 8GB (mặc dù không phải là không thể)
Mihai Bratulescu

Quy tắc kích thước bộ nhớ 2x là cũ và lỗi thời. Nhưng có một số trao đổi không phải là một ý tưởng tồi. Nó không sử dụng quá nhiều dung lượng đĩa, vì vậy bạn sẽ không bỏ lỡ không gian sử dụng; nó thường không được sử dụng nếu bạn có đủ RAM và nó cho phép bạn kết xuất lõi để trao đổi.
Hennes

@Hennes - đọc ghi chú của tôi ... "đã từng"
mdpc

0

Trao đổi Linux dường như có một yêu cầu khá khó khăn ngay khi có áp lực bộ nhớ. Triệu chứng là nếu hầu hết tất cả RAM được sử dụng bởi các quy trình hoạt động, hệ thống sẽ bị cứng và ổ cứng hoạt động mạnh.

Tại sao?

Các trang không có tệp sao lưu (thường là từ cấp phát bộ nhớ động) không thể bị xóa khỏi RAM khi không có trao đổi. Hạt nhân sử dụng các trang có tệp sao lưu ngay cả khi chúng thực sự cần thiết một lần nữa, i. e. rác thậm chí không trao đổi!

Để biết thêm chi tiết về vấn đề tinh tế này, xem bài đăng trên blog này.

Kết luận : Luôn luôn có một trao đổi.

Và đối với kích thước như một hướng dẫn sơ bộ, hãy sử dụng khoảng từ 4 đến 8 GB, ngay cả đối với các hệ thống có nhiều RAM, giả sử bạn không ngủ đông. Để biết thêm chi tiết, xem tài liệu của Red Hat về không gian hoán đổi .

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.