Có kích thước tối đa mà tập tin trao đổi có thể hoạt động không?


8

Theo như tôi biết, giới hạn lý thuyết cho một tệp hoán đổi là cực kỳ lớn tùy thuộc vào việc sử dụng hệ thống 32 bit hay 64 bit.

Tôi đã tạo một tệp hoán đổi 16 GB trên hệ thống 4GB RAM 64 bit với thông số kỹ thuật trung bình thấp, bởi vì tôi có quá nhiều dung lượng trên ổ cứng trong 1TB của mình ...

Nhưng tập tin hoán đổi lớn có thực sự tạo ra sự khác biệt về tốc độ / hiệu suất không?



2
IMO nếu bạn đang sử dụng trao đổi, bạn thực sự cần nhiều RAM hơn, không phải là tệp hoán đổi lớn hơn
Panther

1
nếu bạn đang sử dụng ổ cứng thì bạn nên sử dụng zram thay vào đó và giảm mức độ ưu tiên của các giao dịch hoán đổi ổ cứng. Và một phân vùng trao đổi lớn như vậy sẽ không giúp ích gì, bởi vì loại bạn sử dụng như trao đổi 4GB, hệ thống của bạn đã chậm để thu thập dữ liệu
phuclv


Theo như tôi nhớ, một tệp hoán đổi sẽ tiêu tốn một lượng RAM vật lý (tôi nghĩ rằng ít hơn 1% kích thước của tệp hoán đổi). Vì vậy, việc có một tệp hoán đổi quá lớn có thể ảnh hưởng đến hiệu suất do mức tiêu thụ bộ nhớ đó. Nhưng đối với một tệp hoán đổi có kích thước hợp lý, điều đó sẽ không thành vấn đề.
kasperd

Câu trả lời:


7

Bạn có thể có tối đa 32 vùng trao đổi (tệp hoặc phân vùng) với tối đa ~ 4 tỷ (2 ^ 32) trang, trong đó "trang" là 4kB trên hệ thống truyền thống (ví dụ x86 hoặc x86_64) nhưng có thể lớn hơn trên các trang khác kiến trúc hoặc nếu bạn đã cấu hình các trang lớn đặc biệt.

Điều này mang lại tối đa lý thuyết là 16TB cho mỗi khu vực trao đổi và tối đa 32 khu vực trao đổi. Có thể có những hạn chế khác áp dụng trước khi bạn đạt được điều này nhưng đây là một khu vực trao đổi lớn mkswapcó thể tạo ra cho bạn.

Về mức độ bạn muốn, bất kỳ khu vực trao đổi nào vượt quá mức tối đa bạn thực sự sử dụng đều không đóng góp gì cho hiệu suất hoặc tính ổn định của hệ thống. Mẹo nhỏ là ước tính lượng sử dụng tối đa sẽ xảy ra trong tình huống bình thường hoặc thậm chí bất thường, và sử dụng nó làm kích thước tệp hoán đổi của bạn và không còn nữa.

Tại thời điểm viết, không gian hoán đổi lớn hơn khoảng 4GB so với kích thước bộ nhớ vật lý của bạn rất khó có thể được sử dụng, trừ khi hệ thống của bạn rất bất thường. Trên một hệ thống điển hình như hệ thống máy tính để bàn được sử dụng bởi một người tại một thời điểm, bạn thậm chí có thể dừng ở mức tối đa 6GB đến 8GB ngay cả khi bộ nhớ vật lý của bạn lớn hơn.


6

Nó không làm cho sự khác biệt về tốc độ hoặc hiệu suất. Nó chỉ cho phép bạn sử dụng tới 20 GB bộ nhớ ảo trước khi kẻ giết người OOM bắt đầu giết các quá trình để lấy lại bộ nhớ.

Nếu bạn muốn hiệu suất tốt hơn:

  • giảm swappinessnếu bạn không sử dụng nhiều hơn 4 GB thường xuyên
  • thêm RAM
  • chuyển sang ổ SSD và đặt tập tin trao đổi vào nó

Nếu bạn thường xuyên phải chuyển đổi các khối bộ nhớ, SSD do kiến ​​trúc của chúng và chu kỳ ghi hạn chế không phải là cách để đi vì nó có thể dễ dàng sử dụng hết chu kỳ ghi của SSD rất nhanh. Nếu bạn chỉ thỉnh thoảng gặp phải nhu cầu trao đổi bộ nhớ SSD thì không sao.
Videonauth

11
@Videonauth: "Dễ dàng sử dụng chu kỳ ghi của SSD rất nhanh": bất kỳ loại SSD hiện đại nửa vời nào cũng có thể duy trì khả năng ghi toàn bộ dung lượng của SSD hàng ngày trong nhiều năm . Lời khuyên của bạn có thể đã đúng trong năm 2010, nhưng nó đã lỗi thời. Ngay cả một ổ SSD 256 GiB dành cho người tiêu dùng có thể duy trì việc viết 100 GiB mỗi ngày trong hơn 2 năm.
AlexP

Nếu bạn có nhiều RAM, việc giảm độ nhanh sẽ tạo ra sự khác biệt ít hơn so với khi bạn bị hạn chế RAM. Trên thực tế, việc cài đặt nhiều RAM khiến cho bất kỳ tinh chỉnh nào khác có thể hoán đổi nếu nó đủ để bạn có thể tránh bị tráo đổi. Giữ một phân vùng trao đổi để ổn định "chỉ trong trường hợp", 99,9% thời gian nó sẽ không được sử dụng và bạn sẽ giữ được hiệu suất tuyệt vời.
thomasrutter

1
Ngoài ra, điều về chu kỳ ghi SSD hạn chế đã không có thật trong hơn một thập kỷ, đây thực sự là lúc FUD này cần được gọi ra. Xin lỗi, nhận xét này quá dư thừa do AlexP đã giải quyết vấn đề này, nhưng nó có gạch chân. SSD rất tốt cho các ứng dụng nặng.
thomasrutter

1
Việc cân bằng hao mòn trong SSD đã trở thành một điều vào khoảng năm 2008 ( bài báo năm 2008 | bài báo Anandtech năm 2009 ). "Có phải máy tính xách tay ở mức giá tiêu dùng bình thường thậm chí còn đi kèm với SSD trong năm 2008" không, SSD rất đắt và không thực sự đạt tiêu chuẩn.
thomasrutter

3

Theo câu trả lời của Gilles

... Đã từng có giới hạn kích thước trao đổi 2 GB (trên hầu hết các nền tảng 32 bit), nhưng điều này đã không xảy ra trong nhiều năm. Giới hạn đã được loại bỏ tại một số điểm trong loạt kernel 2.2.

Ngoài ra, ông trích dẫn trang người đàn ông cho mkswap:

Kích thước hữu ích tối đa của một vùng trao đổi phụ thuộc vào kiến ​​trúc và phiên bản kernel.

Trong thư viện linux / exchange.hMAX_SWAPFILESmục nhập, do đó, có giới hạn về số lượng tệp hoán đổi ở cấp hạt nhân, tuy nhiên dường như đó không phải là khu vực dứt khoát. Theo tài liệu được liên kết:

Cần lưu ý rằng sáu bit đối với loại Loại trực tuyến nên cho phép tồn tại tối đa 64 vùng trao đổi trong kiến ​​trúc 32 bit thay vì hạn chế MAX_SWAPFILES là 32

Mà tôi hiểu rằng có tối đa 64 tệp hoán đổi trên các kiến ​​trúc 32 bit. Tuy nhiên, tôi không nhận thấy trong tài liệu đề cập đến những gì sẽ xảy ra trên kiến ​​trúc 64 bit. Cũng đáng lưu ý rằng trong trường hợp này , những nỗ lực của OP để tạo các tệp hoán đổi đã thất bại trong lần nhập thứ 30.

Đối với các phân vùng trao đổi, dường như không có giới hạn cho điều đó trong kernel, bên cạnh các hằng số đã đề cập trước đó, nhưng số lượng phân vùng vẫn sẽ bị giới hạn bởi bố cục BIOS và đĩa bên dưới .


2

Câu trả lời này có thể không phù hợp với Ubuntu 18.04 (cảm ơn @Chai T. Rex vì đã chỉ ra điều này trong các bình luận).

Dù sao, đối với các phiên bản trước, nó vẫn hoạt động (vẫn chưa có bản cập nhật được đề xuất LTS> LTS, vì vậy điều này vẫn có thể có liên quan):

Nó không phải là một tập tin, nó là một phân vùng, và có nó vì swappiness

Tham số swappiness kiểm soát xu hướng của kernel để di chuyển các tiến trình ra khỏi bộ nhớ vật lý và vào đĩa trao đổi. Vì các đĩa chậm hơn nhiều so với RAM, điều này có thể dẫn đến thời gian phản hồi chậm hơn cho hệ thống và ứng dụng nếu các quá trình di chuyển quá mạnh ra khỏi bộ nhớ.

Vì vậy, về cơ bản nếu phân vùng trao đổi của bạn lớn hơn nhiều so với RAM mà bạn có, hệ thống sẽ có xu hướng trao đổi nhiều hơn, gây ra sự chậm chạp chung.


4
Hiện tại có các tệp hoán đổi và chúng là mặc định (thay vì phân vùng) khi cài đặt 18.04 từ đầu.
Chai T. Rex

1
Tôi giả sử hành vi hoán đổi khá nhiều vẫn giữ nguyên, bất kể nó được hỗ trợ bởi phân vùng hay tệp. Bạn cũng có thể có nhiều tệp hoán đổi và / hoặc phân vùng cùng một lúc. Dù sao, tôi không nghĩ rằng trao đổi nhiều hơn sẽ có tác động tiêu cực trong khi vẫn còn đủ RAM.
Chỉ huy Byte

Tôi cũng sẽ như vậy, nhưng cho đến khi tôi chạm tay vào nó, đây chỉ là một giả định hoang dã
Dadexix86

Có phân vùng trao đổi và có tập tin trao đổi. Các phân vùng hoán đổi có thể được sử dụng bởi hai hoặc nhiều cài đặt Linux trên cùng một PC (khởi động kép hoặc khởi động ba lần). Phân vùng trao đổi tốt hơn trong trường hợp đĩa đầy đủ nơi tệp hoán đổi có thể được tạo ra bị phân mảnh. ... Các tệp hoán đổi sẽ hoạt động tốt như các phân vùng trao đổi nếu chúng được tạo trên các đĩa không đầy đủ để tránh bị phân mảnh - Devon van Schoor j
Devon van Schoor

2

Không có nhiều sự khác biệt về tốc độ hoặc hiệu suất khi tăng phân vùng trao đổi thành lớn tùy ý.

Có một số yếu tố liên quan đến trao đổi có thể ảnh hưởng đến hiệu suất như swappinessloại ổ cứng (SDD hoặc HDD).

Hoán đổi là khá chậm và tăng swappiness làm giảm hiệu suất. Tuy nhiên, nó chỉ có ảnh hưởng nếu không đủ RAM. Nhưng nó là tốt hơn so với không có bất kỳ trao đổi. Đề nghị của tôi là làm cho kích thước phân vùng trao đổi lớn gấp đôi RAM của bạn.


5
khuyến nghị đó đã lỗi thời. Các hệ thống hiện đại với RAM 32 hoặc 64GB sẽ không cần trao đổi 64 hoặc 128GB
phuclv

3
@ LưuViênPhúc Tôi sẽ không sử dụng hơn 2GB trao đổi trong những ngày này ...
el.pescado

2gb dường như rất thấp ... máy ảo hoặc trò chơi thực sự có thể lấp đầy hơn 2gb trao đổi rất nhanh. Tôi nghĩ rằng 4 đến 8gb trao đổi hoạt động tốt với bất kỳ số lượng ram. Nếu bạn cần nhiều hơn 8gb thì có lẽ bạn nên thêm nhiều ram.
Germain

0

Tôi đi đến thực tế là một tập tin trao đổi hoặc phân vùng trao đổi thực tế không có giới hạn. Ngoài ra, tệp hoán đổi 16 GB của tôi khá lớn nhưng kích thước không ảnh hưởng đến tốc độ.

Tuy nhiên, những gì tôi thu thập được là những gì ảnh hưởng đến tốc độ là hệ thống thực sự sử dụng không gian hoán đổi đó trái ngược với phần cứng vật lý.

Giải pháp của tôi cho điều đó là tạo ra giá trị trao đổi cao để trao đổi không được sử dụng quá mức so với phần cứng nhanh hơn. Tôi cũng vậy:

sudo -s
nano /etc/sysctl.conf

Đã thêm vào tệp:

#vm.swappiness = 50

tiết kiệm

sudo sysctl -p

để làm mới (hoặc có thể vừa khởi động lại)


Thêm dòng #vm.swappiness = 50vào /etc/sysctl.confkhông có bất kỳ ảnh hưởng nào, hàng đầu #làm cho dòng này trở thành một nhận xét, loại bỏ nó. Bạn có thể kiểm tra swappiness với cat /proc/sys/vm/swappiness.
mook765

Nhưng phương pháp tôi mô tả đã làm việc. Khi tôi nhập [cat / Proc / sys / vm / swappiness], tôi nhận được 50 là đầu ra
Devon van Schoor
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.